分布式系统架构之消息系统

消息系统中,常用的一致性解决方案如下:

1)      发送消息给消息系统

2)      消息系统入库消息

3)      消息系统返回结果

4)      业务操作

5)      发送业务操作结果给消息系统

6)      更改存储中的消息状态

如果消息丢失,从业务数据补发消息是最彻底的容灾手段。一般地,把集群和集群之间对消息的消费作为topic模型处理,而集群内部的各个应用实例对消息的消费当做Queue模型处理。引入clusterID来标识不同的集群,集群内的各个应用实例的连接使用同样的ClusterID。分两级处理,从而达到多个不同的集群进行消息订阅的目的。需要注意的是从topic中分发消息分发到不同的queue中时,需要由独立的中转消息订阅者来完成,并且对同一个queue的中转只能由一个连接完成,为了实现高可用性,还需要备份节点。

为了保证消息发送的可靠性,首先要保证消息发送端的可靠性。保证消息存储的可靠性有多种方法:有基于文件的消息存储例如ActiveMQ,采用数据库的消息存储一般考虑采用宽表、冗余数据的方式实现,还有基于双机内存的消息存储。通过服务器主动调度安排投递的方式可以实现数据库存储的便利扩容。由于消息系统需要显示地收到接受者确认消息处理完毕的信号才能删除消息,所以保证消息投递的可靠性一定从应用层的响应入手。在进行投递时一定要采用多线程的方式处理,单机多订阅者共享连接,消息只发送一次,然后传到单机的多订阅者生成多个实例处理。消息重复接收主要是因为消息接受者成功处理消息后,消息系统不能及时更新投递状态造成的。应对消息重复的办法是使消息接收端的处理是一个幂等操作。

对应有序的消息队列而言,单机多队列的隔离完成了对消息的有序支持,进一步,把发送到这台机器的消息数据进行顺序写入,然后根据队列做一个索引,每个队列的索引是独立的,其中保存的只是相对于存储数据的物理队列的索引。另外,采用消息同步复制的方式解决本地存储的可靠性。

时间: 2024-11-12 13:35:47

分布式系统架构之消息系统的相关文章

分布式公布订阅消息系统 Kafka 架构设计

我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础. 如今它已为多家不同类型的公司 作为多种类型的数据管道(data pipeline)和消息系统使用. 活动流数据是全部站点在对其站点使用情况做报表时要用到的数据中最常规的部分.活动数据包含页面訪问量(page view).被查看内容方面的信息以及搜索情况等内容.这样的数据通常的处理方式是先把各种活动以日志的形式写

分布式发布订阅消息系统 Kafka 架构设计[转]

分布式发布订阅消息系统 Kafka 架构设计 转自:http://www.oschina.net/translate/kafka-design 我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础.现在它已为多家不同类型的公司 作为多种类型的数据管道(data pipeline)和消息系统使用. 活动流数据是所有站点在对其网站使用情况做报表时要用到的数据中最常规的部

分布式发布订阅消息系统 Kafka 架构设计

我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础.现在它已为多家不同类型的公司 作为多种类型的数据管道(data pipeline)和消息系统使用. 活动流数据是所有站点在对其网站使用情况做报表时要用到的数据中最常规的部分.活动数据包括页面访问量(page view).被查看内容方面的信息以及搜索情况等内容.这种数据通常的处理方式是先把各种活动以日志的形式写入某

现代IM系统中的消息系统架构

前言IM全称是『Instant Messaging』,中文名是即时通讯.在这个高度信息化的移动互联网时代,生活中IM类产品已经成为必备品,比较有名的如钉钉.微信.QQ等以IM为核心功能的产品.当然目前微信已经成长为一个生态型产品,但其核心功能还是IM.还有一些非以IM系统为核心的应用,最典型的如一些在线游戏.社交应用,IM也是其重要的功能模块.可以说,IM系统已经是任何一个带有社交属性的应用需要具备的基础功能,网络上对于这类系统的设计与实现的讨论也越来越多. IM系统在互联网初期即存在,其基础技

架构设计:系统间通信(20)——MQ:消息协议(下)

(接上文<架构设计:系统间通信(19)--MQ:消息协议(上)>) 上篇文章中我们重点讨论了"协议"的重要性,并为各位读者介绍了Stomp协议和XMPP协议.这两种协议是消息队列中两种不同使用场景下的典型代表.本文主要接续上文的篇幅,继续讨论消息队列中另一种典型协议:AMQP协议. 3-3.AMQP协议 AMQP协议的全称是:Advanced Message Queuing Protocol(高级消息队列协议).目前AMQP协议的版本为 Version 1.0,这个协议标准

分布式发布订阅消息系统Kafka架构设计

我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础.现在它已为多家不同类型的公司作为多种类型的数据管道(data pipeline)和消息系统使用. 活动流数据是所有站点在对其网站使用情况做报表时要用到的数据中最常规的部分.活动数据包括页面访问量(page view).被查看内容方面的信息以及搜索情况等内容.这种数据通常的处理方式是先把各种活动以日志的形式写入某种

基于消息系统架构设计

近期在弄一个业务系统,这个业务系统原本是有一个架构的,可是在后期扩展时发现问题多多.关键扩展非常不方便,并且由于业务系统安全规格较高.数据网络连接须要通过多个闸口传递才可,并且业务系统可能须要多地系统联合组网.共享业务数据,可是各地系统又必须相互独立. 用户希望改动架构,让系统可扩展性添加,同一时候要满足系统相互独立方便升级和兴许开发. 依照用户的要求我考虑使用一个基于消息传递的架构设计来满足需求. 所谓基于消息,就是通过消息中转server,中转全部系统间连接数据,同一时候管理数据路由,由消息

基于Dubbo分布式系统架构附第三方支付系统简易版源码学习

<基于Dubbo的分布式系统架构视频教程>包含基础篇.高级篇.高可用架构篇,教程以第三方支付项目的系统架构实战经验为背景,最终形成一套分布式系统架构解决方案.是你学习和了解现今最流行的“微服务”架构的好教程.教程中涵盖的技术点包括 Dubbo分布式服务.ZooKeeper注册中心.Redis3.0分布式缓存集群.MySQL5读写分离集群.FastDFS_v5.05分布式文件系统集群.ActiveMQ5.11群集.Keepalived + Nginx实现的高可用Web负载均衡集群.基于Redis

阿里巴巴消息系统架构与变迁--转载

原文:http://www.infoq.com/cn/news/2014/03/interview-alibaba-wangjingyu 对于大型的互联网业务来说,消息系统是必不可少的基础服务. 子柳 在<淘宝技术这十年>中为大家展示了阿里消息系统架构的概貌,作为集团业务使用的核心基础服务,目前消息系统现在可以承受每天几百亿规模的请求,并在历年的双十一.双十二大促中承受住抗住了更加严峻的考验,消息系统背后的中间件团队还陆续开源了诸如MetaQ.RocketMQ等项目.近期,InfoQ 采访了阿