消息系统-kafka之一 系统简介
最近在研究消息中间件kafka,下面简单介绍一下kafka消息系统,首先,为什么使用消息中间件,有哪些消息中间件,为什么选择kafka
为什么使用消息系统?
1.首先就是消息系统的高性能,即使是非常普通的硬件可以支撑一秒几十万的消息
2.消息队列对应用之间进行了解耦,应用之间不存在强依赖
3.消息队列可以对消息数据进行持久化,这样即使处理消息的进程全部挂掉,也不会丢失已经加入消息队列的数据,对很多关键的业务来说,规避数据丢失的风险是至关重要的
4.由于消息队列对应用之间进行了解耦,这也大大的增加了系统的可扩展性,从消息的产出和消息的消费
5.应对突发高并发流量,在访问量剧增的情况下,使用消息队列把请求进行缓冲和筛选,防止突发流量冲击后端接口,导致应用超时或是直接拒绝服务
6.使用消息队列可以在一定程度上保证数据的顺序性
那么有哪些消息中间件呢?
现在比较流行的MQ有:ActiveMQ,kafka,RabbitMQ,Redis,jafka,ZeroMQ
值得一提的是Redis作为基于key-value的NoSQL数据库,也可以作消息队列,并且完全可以作为一个轻量级的队列服务器来使用;除此之外,AMQ,RabbitMQ,ZeroMQ都是相对比较重量级的消息系统,尤其是ZeroMQ,虽然称作是最快的消息队列系统,但是复杂的配置和技术框架让很多开发者望而却步;然而kafka和jafka,作为一个高性能跨语言分布式发布/订阅消息队列系统,在具有以上消息系统的所有优点之外,在量级上相对于AMQ之类来说也是非常轻量级的。
为什么选择kafka?
kafka的优势如下:
1.可靠性,kafka的partition机制和replication机制,容错机制使消息的传递有着很高的可靠性
2.kafka支持集群规模的热扩展
3.kafka的高性能,在数据的发布和订阅过程中,都能够保证数据的高吞吐量,即使在TB的数据存储情况下,仍然表现出很好的稳定性
4.kafka的消息状态由consumer处理,可以根据重设offset实现消息的重复消费(这个也是我在做任务调度的时候,选择kafka的原因)
kafka架构简介
kafka可以实现两种类型的消息传递:点对点(单播),和订阅/发布(广播)
点对点
原创不易,完成人机校验,阅读全文