coldsmog运维笔记
Linux 中间件部署
升级MySQL至最新版本
Zabbix与Zabbix-agent2部署
Galera-Cluster-MySQL 部署
JDK8 部署
FastDFS 部署
MySQL 主从备搭建
RabbitMQ 部署
Redis 部署
Nginx 部署
Gitlab + Jenkins + Sonarqube 部署
Docker 部署
keepalive的安装
Gitlab-ce 部署
Graalvm 部署
Nacos 部署
Kafka 部署
PostgreSQL 部署
MongoDB 部署
Fizz网关搭建
Vue项目部署(Nginx)
CentOS 运维笔记
centos 添加自定义服务
Linux 系统挂载
MySQL命令行
故障排查
Docker 运维笔记
keepalived 配置笔记
win 编辑EFI
win 安装 openclaw
本站点使用 MrDoc 构建
-
+
Kafka 部署
## 1. 什么是Kafka 一个高性能MQ,支持点对点和订阅发布形式进行的分布式消息传递。 - 发送过程 produce生产者发送消息。可以指定topic话题(必填),value序列化值(必填),partition分区和 key。 生产者利用ZK的watch功能,监听partition的leader并建立连接,发送时将消息序列化,根据key和partition异步发送消息,将小消息用buffer缓存拼成大消息再发送partition,partition再分发给broker存储。 - 分发过程 通过hash操作,多个topic落到partition分区里。一个分区对应一个文件,分区收到文件就将消息追加到log文件末尾,同时维护消息的offset偏移量。 同时,kafka支持配置replicated副本,将partition分区文件备份到多个broker存储。一般一个broker对应一个server服务器。那么在副本机制时,partition分区也只和选举出的broker leader连接,再由该broker完成消息分发同步。 - 接收过程 consumer消费者这里采用了pull模型,不再像rabbit一样监听,而是主动地去拉取消息。每一个消费者属于一个consumer group 消费组,一个组包含多个消费者。消费完后原本是要向ZK汇报自己消费的offset消息偏移量,后面优化性能就改完通知 consumeroffsets topic的分区即可。 特别需要注意的是:Topic是按组来订阅的,发送到 Topic 的消息,只会被订阅此Topic的每个group中的一个消费者消费,除非消费失败否则不会争抢。 如果所有的消费者属于同一个组,那么就是一个生产者一个消费者的单点模型;如果每个消费者都具有不同的组,那么就是一个生产者多个消费者的订阅广播模型。 - 队列模型 - At most once:最多一次,消息可能会丢失,但不会重复。 - At least once:最少一次,消息不会丢失,可能会重复(推荐)。 - Exactly once:只且一次,消息不丢失不重复,只且消费一次 ## 2. Docker安装 ``` version: '3.1' services: zookeeper: image: 'zookeeper:3.7.0' restart: unless-stopped hostname: zoo1 container_name: zookeeper environment: - ZOO_STANDALONE_ENABLED=true # - JVMFLAGS='-Xmx1024m' # - ZOO_MY_ID=1 # - ZOO_SERVERS= server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 ports: - 2181:2181 # client # - 2888:2888 # follower 跟从 # - 3888:3888 # election 选举 # - 8080:8080 # adminServer 通过url进行API操作 volumes: - ./conf/zoo.cfg:/conf/zoo.cfg - ./logs:/logs ```
寒烟濡雨
2021年9月22日 18:31
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码