分布式系统的事务处理
当我们在生产线上用一台服务器来提供数据服务的时候,我会遇到如下的两个问题:
1)一台服务器的性能不足以提供足够的能力服务于所有的网络请求。
2)我们总是害怕我们的这台服务器停机,造成服务不可用或是数据丢失。
于是我们不得不对我们的服务器进行扩展,加入更多的机器来分担性能上的问题,以及来解决单点故障问题。 通常,我们会通过两种手段来扩展我们的数据服务:
1)数据分区:就是把数据分块放在不同的服务器上(如:uid % 16,一致性哈希等)。
2)数据镜像:让所有的服务器都有相同的数据,提供相当的服务。
对于第一种情况,我们无法解决数据丢失的问题,单台服务器出问题时,会有部分数据丢失。所以,数据服务的高可用性只能通过第二种方法来完成——数据的冗余存储(一般工业界认为比较安全的备份数应该是3份,如:Hadoop和Dynamo)。 但是,加入更多的机器,会让我们的数据服务变得很复杂,尤其是跨服务器的事务处理,也就是跨服务器的数据一致性。这个是一个很难的问题。 让我们用最经典的Use Case:“A帐号向B帐号汇钱”来说明一下,熟悉RDBMS事务的都知道从帐号A到帐号B需要6个操作:
从A帐 ...
陈皓(左耳朵耗子)
陈皓(1976年-2023年5月13日),男,MegaEase创始人、资深技术专家、程序员。2023年5月13日,陈皓心梗逝世,享年47岁。(来源:百度百科)
公告
由于酷壳(coolshell.cn)是托管在外网,在国内访问较慢,浏览体验不是很好,且怕后续域名或主机未续费的话,整个博客站点的资源就无法访问了,故爬取了酷壳网的整站的内容,使用 Hexo 重新生成了一个镜像站。
本站所有内容均为酷壳网内容镜像,未对正文内容调整,仅对部分内容正文排版及内容资源文件的URL引用做了调整,所有内容版权归原作者所有。
分类
标签
HTTPS cache J++ CSS3 BT 系统管理 Sort Glassfish bug IDE IE ASP W3C 伪装 STL DIP MapReduce Pylot Thin Provisioning WCat 评论 Bjarne Stroustrup Ruby XML mvcc Issue 9 dygraphs JWT QUIC API设计 vi MongoDB Coding timestamp Eclipse GC Gist Apache 代理 实习生 InI FAQ Kinect Sixth Sense Grinder email brainfuck 验证码 Sun thread Java Fast Recovery Redirections Jon Lech Johansen Bret Victor VB.NET etcd debugfs Hash Subversion Open Source Bitcoin ReCAPTCHA Microsoft Hibernate cas Unicode Oracle C++ Apache JMeter Unicode High Availability wtfjs.com Quora VideoCapture Bash Android CVS Polyglot Division of Labour Demo Spring Justin Frankel Linux Fantom 安全 AES 桌面应用 WinAmp
网站资讯
文章数目 :
740
本站总字数 :
1304.8k
本站访客数 :
本站总访问量 :
最后更新时间 :