Kafka从零开始之简介
2018-01-09 11:48
134 查看
消息系统分类
Peer-to-Peer一般基于Pull或者Polling接收消息
发送到队列中的消息被一个而且仅仅一个接收者所接收
即使有多个接收者在同一个队列中侦听同一个消息
即支持异步 “即发即弃”的消息传送方式,也支持同步请求/应答传送方式
发布/订阅
发布到一个主题的消息,可被多个订阅者所接收
发布/订阅即可基于Push消费数据,也可基于Pull或者Polling消费数据
解耦能力比P2P模型更强
消息系统使用场景
解耦:各个系统之间通过消息系统这个统一的接口交换数据,无须了解彼此的存在冗余:部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险
扩展:消息系统是统一的数据接口,各系统可独立扩展
峰值处理能力:消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求
可恢复性:系统中部分组件失效并不会影响整个系统,它恢复后仍然可从消息系统中获取并处理数据
异步通信:在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理
常用消息系统对比
RabbitMQ Erlang编写,支持多协议AMQP,XMPP,SMTP,STOMP.支持负载均衡、数据持久化。同时支持Peer-to-Peer和发布/订阅模式Redis 基于Key-Value对的NoSQL数据库,同时支持MQ功能,可做轻量级队列服务使用。就入队操作而言,Redis对短消息(小于10KB)的性能比RabbitMQ好,长消息的性能比RabbitMQ差。
ZeroMQ 轻量级,不需要单独的消息服务器或者中间件,应用程序本身扮演该角色,Peer-to-Peer。它实际上是一个库,需要开发人员自己组合多种技术,使用复杂度高
ActiveMQ JMS实现 ,Peer-to-Peer ,支持持久化、XA事务
Kafka/Jafka 高性能跨语言的分布式发布/订阅消息系统,数据持久化、全分布式,同时支持在线和离线处理
MetaQ/RocketMQ 纯Java实现,发布/订阅消息系统,支持本地事务和XA分布式事务
Kafka设计目标
高吞吐率 在廉价的商用机器上单机可支持每秒100万条消息的读写消息持久化 所有消息均被持久化到磁盘、无消息丢失,支持消息重放
完全分布式 Producer ,Broker,Consumer均支持水平扩展
同时适应在线流处理和离线批处理
Kafka架构简介
相关文章推荐
- Kafka入门:简介、使用场景、设计原理
- kafka简介
- 从零开始学C++之标准库类型(一):string 类简介和例程
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
- Kafka简介
- kafka 简介
- 从零开始微信机器人(一):wxpy简介(登录、消息发送、注册回复)
- kafka学习一:简介
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- 李克华 云计算高级群: 292870151 195907286 交流:Hadoop、NoSQL、分布式、lucene、solr、nutch kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- Kafka架构设计简介
- 【从零开始学Git(一)】简介
- Kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- scala 下 kafka 实战简介
- [翻译]Kafka Streams简介: 让流处理变得更简单
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建
- 从零开始学C++之标准库类型(一):string 类简介和例程
- 从零开始学C++之异常(一):C语言错误处理方法、C++异常处理方法(throw, try, catch)简介
- 从零开始写一个武侠冒险游戏-0-开发框架Codea简介