一.消息系统的分类:
1.Peer-to-Peer
一般基于Pull或者Poling接受消息
发送到队列中的消息被一个而且仅仅一个接受者所接收,即使有多个接受者在同一个队列中侦听同一消息
即支持异步“即发即弃”的消息传送方式,也支持同步请求、应答传送方式
2.发布/订阅
发布到一个主题的消息,可被多个订阅者所接收
发布/订阅即可基于Push消费数据,也可基于Pull或者Polling消费数据
解耦能力比p2p模型更强
二.在什么场景下使用消息系统:
解耦:各位系统之间通过消息系统这个统一的接口交换数据,无须了解彼此的存在
冗余:部分消息系统具有消息持久能力,可规避消息处理前丢失的风险
扩展:消息系统是统一的数据接口,各系统可独立扩展
峰值处理能力:消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求。
可恢复性:系统中部分组件失效并不会影响整个系统,它恢复后仍可以从消息系统中获取并处理数据
异步通信:在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理。
kafka设计目标:
高吞吐量:在廉价的商用机器上单机可支持每秒100万条消息的读写
消息持久化:所有消息均被持久化到磁盘,无消息丢失,支持消息重放
完全分布式:Producer,Broker,Consumer均支持水平扩展
同时满足适应在线流处理和离线批处理
kafka架构图:
kafka主要需要依赖zookper。
分布式系统遵循cap理论:
一致性:
泛指在系统中一个节点被写操作,在其他节点做读操作时,要是可行的。
可用性:
泛指在系统中其他节点发生宕机时,只要有一个任意的节点存活,就要在有限的时间内返回数据。
分区容忍性:
部分节点宕机时或与其他节点无法通讯时,各分区间还可以保持分布式系统的功能。
数据在Kafka上的分布简单描述图:
网友评论