低成本高性能mysql云数据库实现.pdfVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

UMP(UnifiedMySQLtform)系统是系统数据库团队开发的低成本和高性能的

MySQL云数据方案,关键模块采用Erlang语言实现。系统中包含了controller服务器、

服务器、agent服务器、API/Web服务器、日志分析服务器、信息统计服务器等组

件,并且依赖于Mnesia、LVS、RabbitMQ、ZooKeeper等开源组件。

在“低成本和高性能的MySQL云数据库的架构探索”一文中,我们介绍了UMP的

系统结构和各个组件的功能,本文里,我们会进一步来探索RabbitMQ和ZooKeeper在

系统中的应用以及服务器的实现,整个系统如何实现容灾、读写分离、分库分表等

功能,介绍资源管理、和调度等技术,以及在保障用户数据安全上的做法。

RabbitMQ

RabbitMQ是一个用Erlang开发的工业级的消息队列产品。集群中各节点间的通信

(不包括SQL查询、日志等大数据流的传输,这些还是直接走TCP的)都通过RabbitMQ,

作为消息通讯的中间件来使用,来保证消息发送的可靠性。

集群初始化时会在RabbitMQ中为集群里的每个节点创建一个队列,作为节点的“信

箱”。节点间发送消息时不管对方在不,只要写消息到对方的“信箱”里即可,接下来

由对方节点上运行的RabbitMQ客户端接收消息,调用相应的处理例程。消息处理完后,

客户端会回复一个ACK包到RabbitMQ,从“信箱”中删除这条消息。基于RabbitMQ可

以实现RPC,客户端除了回复ACK包给RabbitMQ删除Request消息外,还向发送者的

“信箱”写入一条Reply消息。RabbitMQ是支持事务的,可以保证删除Request消息和

写Reply消息在一个原子操作中完成。

图1节点之间通过RabbitMQ实现RPC

如果接收者在处理消息的过程中了,那么消息还会在RabbitMQ中,重启后,

消息会再次推送过来,由接收者继续处理。

RabbitMQ可以保证消息被发送出去,被接收者处理,但不幸的是,无法保证消息只

被发送/处理一次,主要在于RabbitMQ不支持XA。首先,发送者将消息写到MQ和

在本地写一条日志不能在同一个事务中完成,如果发送者将消息写到MQ,在本地写

日志之前了,重启后无法确定消息是否被发送,只能尝试重发;同样,消息的接收方无

法将处理消息和从MQ中删除消息放在同一个事务中完成,如果消息的接收处理完消

息,从MQ中删除消息之前了,那么重启后仍然会继续收到并处理这个消息。

因此消息的接受处理消息时需要保证幂等性(idempotent),即同一条消息被处

理多遍不会有副作用,比如controller向agent发送备份命令时可以捎带上一次备份的时

间点,agent检查这个时间点一致后再执行备份操作,这样可以保证同一条备份命令被发送

多次时不会创

文档评论(0)

183****7931 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档