分布式数据库线怎样保证线程安全?

imqipan 2014-07-18 11:29:23
分布式数据库线怎样保证线程安全?还是以存取钱来分析吧。。
...全文
1164 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
deng1234 2014-08-21
  • 打赏
  • 举报
回复
在对象上加同步,不是在方法上加同步。这事我干过。
fzhsh 2014-08-18
  • 打赏
  • 举报
回复
引用 9 楼 fzhsh 的回复:
[quote=引用 2 楼 imqipan 的回复:] [quote=引用 1 楼 xmt1139057136 的回复:] 数据库集群,保存为一个数据库,查询为一个数据库,做集群
那两个系统间的数据怎么同步呢?[/quote] 对于银行业务,要求的实时性会比较高吧!那这里会有数据库同步的时间差的问题吧,比如,首先查询余额,账户还有4000,然后消费2000(此时,保存数据库里面的账户只有2000,但是查询数据库里面还有4000),如果接着消费3000,在这次刷卡操作中,首先去查询数据库查询余额,就会得到4000,但是去保存的时候,发现余额不足,这里就有问题了。 其实说白了,就是业务的实时性的问题 [/quote] 写错了,是一致性的问题
fzhsh 2014-08-18
  • 打赏
  • 举报
回复
引用 2 楼 imqipan 的回复:
[quote=引用 1 楼 xmt1139057136 的回复:] 数据库集群,保存为一个数据库,查询为一个数据库,做集群
那两个系统间的数据怎么同步呢?[/quote] 对于银行业务,要求的实时性会比较高吧!那这里会有数据库同步的时间差的问题吧,比如,首先查询余额,账户还有4000,然后消费2000(此时,保存数据库里面的账户只有2000,但是查询数据库里面还有4000),如果接着消费3000,在这次刷卡操作中,首先去查询数据库查询余额,就会得到4000,但是去保存的时候,发现余额不足,这里就有问题了。 其实说白了,就是业务的实时性的问题
skgary 2014-08-16
  • 打赏
  • 举报
回复
既然分布了,那就不在一个线程里,所以无所谓线程安全不安全,而同一个数据,那肯定在同一个服务器上,那肯定安全。 楼主的问题其实应该是,例如像点击数计数器这样的数据,在系统中可以全局被访问的东西,如何保证一致性吧。
deng1234 2014-08-15
  • 打赏
  • 举报
回复
分布式,数据库肯定是分开的。 数据库不分开,就不叫分布式,那叫集群,应用开分。
pricks 2014-07-21
  • 打赏
  • 举报
回复
引用 4 楼 ldh911 的回复:
[quote=引用 楼主 imqipan 的回复:] 分布式数据库线怎样保证线程安全?还是以存取钱来分析吧。。
问题比较混乱。 存取钱不应作为分布式数据库的例子来讨论。此外存取钱跟线程安全也没啥直接关系。 你想了解的应该是:跨行转账如何保证事务一致性吧? 大致是:业务设计+分布式事务处理机制+冻结+对账机制+最终一致性+解冻。 所以转账基本没有实时到帐,对不对? [/quote] 读写分离的确与线程安全性没啥关系了吧,除非你是多个线程同时对同一条记录进行写或改。 我估计楼主的问题的场景,与你所描述的转账业务还不相同,转账的场景是涉及到汇款方和收款方两个用户、两个系统的两个事务,我估计楼主想问的是:他的应用服务器是集群的,每一次汇款时的业务,是随机分配给某一台服务器去处理。然后楼主担心:万一一个人在汇款的同时,另一个人向其付款,万一这两个业务被集群中的两台不同的服务器在同时处理,那么最终这个人的账户中到底是多少钱呢?他向别人汇款时,账户余额是减少的;别人向他付款时,账户余额又要增加。咋办呢?
dokia123 2014-07-21
  • 打赏
  • 举报
回复
引用 4 楼 ldh911 的回复:
[quote=引用 楼主 imqipan 的回复:] 分布式数据库线怎样保证线程安全?还是以存取钱来分析吧。。
问题比较混乱。 存取钱不应作为分布式数据库的例子来讨论。此外存取钱跟线程安全也没啥直接关系。 你想了解的应该是:跨行转账如何保证事务一致性吧? 大致是:业务设计+分布式事务处理机制+冻结+对账机制+最终一致性+解冻。 所以转账基本没有实时到帐,对不对? [/quote] 据说财付通的充钱是这样的: 事务开启后,先将本次充钱业务的最重要的操作做成功,成功后,才再去做分布式的其他请求,这样就算其他请求有部分没有成功,也不会回滚事务,而会提交事务。对于没有成功的那部分事务,会有一个服务不停的去执行这个请求,直到执行成功。 不知道银行转账是不是同样的机制。
MiceRice 2014-07-20
  • 打赏
  • 举报
回复
引用 楼主 imqipan 的回复:
分布式数据库线怎样保证线程安全?还是以存取钱来分析吧。。
问题比较混乱。 存取钱不应作为分布式数据库的例子来讨论。此外存取钱跟线程安全也没啥直接关系。 你想了解的应该是:跨行转账如何保证事务一致性吧? 大致是:业务设计+分布式事务处理机制+冻结+对账机制+最终一致性+解冻。 所以转账基本没有实时到帐,对不对?
业余草 2014-07-18
  • 打赏
  • 举报
回复
引用 2 楼 imqipan 的回复:
[quote=引用 1 楼 xmt1139057136 的回复:] 数据库集群,保存为一个数据库,查询为一个数据库,做集群
那两个系统间的数据怎么同步呢?[/quote] 一般数据库都提供的有插件,你网上下载一些免费的
imqipan 2014-07-18
  • 打赏
  • 举报
回复
引用 1 楼 xmt1139057136 的回复:
数据库集群,保存为一个数据库,查询为一个数据库,做集群
那两个系统间的数据怎么同步呢?
业余草 2014-07-18
  • 打赏
  • 举报
回复
数据库集群,保存为一个数据库,查询为一个数据库,做集群

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧