分布式消息总线比较
来源:互联网 发布:淘宝网怎样上传宝贝 编辑:程序博客网 时间:2024/06/05 05:19
应用场景:
案例分析:基于消息的分布式架构
对分布式消息系统机制的分析好文:
http://www.infoq.com/cn/articles/message-based-distributed-architecture
http://tech.sina.com.cn/i/2010-11-16/14434871585.shtml:
我们再来看微博的方案,所以我们自己实现了一个多机房同步的方案。就是我们前端应用将数据写到数据库,再通过一个消息代理,相当于通过我们自己开发的一个技术,将数据广播到多个机房。这个不但可以做到两个机房,而且可以做到三个、四个。具体的方式就是通过消息广播方式将数据多点分布,就是说我们的数据提交给一个代理,这个代理帮我们把这些数据同步到多个机房,那我们应用不需要关心这个数据是怎么样同步过去的。
用这种消息代理方式有什么好处呢?可以看一下Yahoo是怎么来做的?第一个是数据提供之后没有写到db之后是不会消失的,我只要把数据提交成功就可以了,不需要关心数据怎么到达机房。第二个特点YMB是一款消息代理的产品,但是它唯一神奇的地方是为广域网设计的,它可以把多机房应用归到内部,我们应用不需要关注这个问题。这个原理跟我们目前自己开发的技术相似。
我们看一下推送架构怎么从架构底层做到实时性的。从左上角的一条微博在我们系统发布之后,我们把它放在一个消息队列里面,然后会有一个消息队列的处理程序把它拿过来,处理以后放到db里面。假如说我们不做持久化,因为我们推送数据也不能丢失,我们就要写一个很复杂的程序,将数据异步去存,这样就会非常复杂,而且系统也会有不稳定的因素。从另外一个角度来说,我们做持久化也是做过测试的。我们推送整个流程可以做到100毫秒和200毫秒之间,就是说我们在这个时间能把数据推送出去。
对于一些商业网站,其需要在上海、北京、美国等多点部署,采用消息总线可以解决数据一致性问题,当发生写操作时,数据除了被存储到本地,同时放到消息队列中,这样可同步到其他数据中心。
Kafka
Kafka Architecture Design:http://kafka.apache.org/documentation.html#design
译文:http://www.oschina.net/translate/kafka-design
http://www.infoq.com/cn/articles/apache-kafka?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global
Apache Kafka:下一代分布式消息系统
支持多数据中心,但采用镜像技术,实时性等各方面会有问题,本质还是各中心独立
Hedwig
https://cwiki.apache.org/ZOOKEEPER/hedwig.html
http://zookeeper.apache.org/bookkeeper/docs/r4.0.0/hedwigUser.html
RabbitMQ
http://www.imneio.com/2009/10/zeromq_in_dotnet/(负面消息)
ActiveMQ
使用到消息总线的场景:
- 分布式消息总线比较
- 消息和消息总线
- 几种分布式消息系统比较(old)
- 消息总线VS消息队列
- 分布式消息
- EventBus消息总线机制
- 消息总线授权设计
- EventBus 消息总线
- openstack中的消息总线
- 关于消息总线
- SpringCloud消息总线
- EventBus 消息总线
- 串行总线比较
- Spring Cloud(十一)高可用的分布式配置中心 Spring Cloud Bus 消息总线集成(RabbitMQ)
- AxonFramework,分布式命令总线连接器
- 学习消息总线的体会!
- 消息总线优化之PubSub
- 消息总线——EventBus
- 5分钟搞定内存字节对齐
- MAC下Android的Eclipse开发环境的搭建
- 在二叉树中,距离最远的两个节点的距离
- 如何写软件项目需求说明书
- aix6.1上安装10g r2注意事项
- 分布式消息总线比较
- 文件系统
- SQLite定义外键foreign key
- linux 用户空间和内核空间数据传递
- 搭建sip环境
- event.currentTarget与event.target的不同
- 什么是清洁发展机制(CDM)项目
- ubuntu中的服务配置工具
- System.map 文件的作用