Kafka复习
消息中间件的作用:
异步处理:
与并行相比,虽然减少了时间,但是还是得等待其他线程执行完,但是消息中间件对于简单的业务处理,还要引入一个中间件也比较复杂
如果我投递了简历之后需要发送成功邮件以及短信,就可以交给消息中间件
就像数据库、redis数据一致性,需要用到延迟双删,也可以异步处理
应用解耦:
比如用户下单之后,需要去库存系统缩减库存,这时候呢如果通过feign远程调用,这样耦合度就比较高,通过消息中间件去确保最终一致性
流量削峰:
像12306在抢票的时候,并发量极高,就将这些请求放在消息队列中一个个的去处理
日志处理:
流处理
Kafka的优点:
天然支持分布式
持久化数据(默认保存七天)
流式处理动态的数据
高性能、高可用、高伸缩性(集群目标)
基本概念:
消息和批次:
消息:由字节数组 组成
为了提高效率,会将消息以批次(生产者源码里的缓冲池) 的形式写入
序列化和反序列化(JSON或者XML)
主题和分区:
topic:以主题的形式进行分类(类似于数据库中的表),一个主题可以跨越多个服务器,高性能之一,多台服务器磁盘读写比单台更高
partition:一个topic对应多个分区,消息顺序追加
生产者:
消息默认情况下均衡分布 在所有分区上,如果需要指定分区,可以自己写分区器 或者根据key
直接指定分区:
消费者:
消费者订阅主题,可以订阅不同的主题,可以负责不同分区,但是一个分区只能对应一个消费者, 按照消息顺序读写
分区的偏移量都会保存在kafka上consumer_offset这个主题上
Broker和集群:
主要工作接收消息,设置偏移量,磁盘保存
拉模式,响应请求
Brocker会组成一个集群, 每个集群中会选出一个集群控制器( Kafka使用 Zookeeper的临时节点来选举控制器,并在节点加入集群或退出集群时通知控制器 ) 。包括进行分区,监控brocker
集群内布通过管道技术进行高效的复制
消息持久化:要么时间7天要么大小1G
常见配置:
brocker id 集群不能重复
listeners:监听列表
zookeeper connect:集群的地址
num partitions:分区数量
日志时间
分区大小
日志片段大小
能接收的最大字节数
硬件对于性能的影响:
磁盘吞吐量影响生产者 ,写的快性能就好
内存影响消费者 ,消费者数据一般从内存之
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1604695.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!