为什么kafka和zk总是在一起?
一.概念
发布订阅,一个发布者发布到消息,所有订阅者都可以接收到
生产消费,一个消息对象只能被一个消费者消费
kafka是生产者,zookeeper是消费者
有3个微服务,聚合形成一个统一的业务层
但是每个微服务都需要互相知道对方的服务地址。这样每个微服务地址修改,其他微服务的配置文件都需要修改,这样就是耦合的。
解耦就是服务注册中心,统一管理所有的微服务信息
每个微服务调用接口,统一从服务注册中心获取,这样每个微服务地址修改,只需要向注册中心报备,其他微服务什么都不用改,这样就是解耦的。
那么有个角色就是“服务注册中心”,这个可以用 Zookeeper、Eureka、Consul 作为实现方案
二.例子
zk是用于消息列队的,分布式,调节各个程序之间的通信和操作
例如一个网站 注册分几部
1.用户点击注册,网站发请求到后端服务器
2.后端服务器收到后,给用户发个邮件
3.用户点击邮件进行验证,证明是他本人
4.将这个用户添加到数据中
这一套下来用户才算注册了,才能正常登陆,但有几个问题:
1.用户如果当前不方便验证邮件,那就没法注册了,显然不合理
2.当这个程序的数据库地址变动了,就需要在代码里修改,让程序知道最新的数据库地址,这样会很麻烦
3.这显然不合理
就引出了消息列队的作用 就是异步操作 程序收到请求 直接跳过2和3 先写到数据库 让用户可以登录 后面再发邮件 这是异步的 异步就是消息列队
也就是用户可以登录后 过段时间在验证邮件 不然超过24小时或者一些时间 不验证就禁止登录 如此
那就需要多个程序来完成这个任务 就是分布式 A程序负责接收请求 写到数据库 B程序负责发邮件 验证邮件,如果超时不验证 告诉A程序禁止账号
那你可以选择搞一个C程序 协调这2 一个注册请求进来 调用A注册 再调用B进行发邮件啥的
zk就是这个C程序 他将请求进行拆分 放到一个箱子里 箱子1号位置是用户1的注册请求,2号位置是用户3的邮件请求, zk依次将这些请求发到对应的小程序里
因为是异步的 所以不着急 就好像同时3用户注册 用户A点击注册了,可能10分钟后验证邮件才发过来
kafka是一个篮子 将这些请求装进去 然后依次交给zk zk将注册请求给A程序,验证请求给B程序
如果请求太多 篮子放不下 就堵塞了 就需要加kafka, 如果zk解决不过来了 那又堵塞了 就要加zk
kafka是生产者 他储存请求 zk是消费者 对请求进行处理
zk也是冗余作用的 比如A程序可以有10个 他做负载均衡 也做备份 当A1程序挂了 就把请求给A2
zk是中转站 他将各种请求异步的给各种其它程序 但要求是异步的请求
如果是比较严格的 例如打钱给别人 多个程序验证 就得同步 异步会出问题
Pro push消息到broker里面,然后会记录一个信息,(类似存储位置),给zk记录起来,然后consum消费时候先去zk里问他要数据存储的节点和位置。
取到信息返回,zk在这里面起到通讯作用,broker是kafka的存储,zk执行事物时候一般先把消息给leader,然后leader去推送,comsuer取消息时候是pull。
为什么kafka和zk总是在一起?的更多相关文章
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十一)NIFI1.7.1安装
一.nifi基本配置 1. 修改各节点主机名,修改/etc/hosts文件内容. 192.168.0.120 master 192.168.0.121 slave1 192.168.0.122 sla ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十三)kafka+spark streaming打包好的程序提交时提示虚拟内存不足(Container is running beyond virtual memory limits. Current usage: 119.5 MB of 1 GB physical memory used; 2.2 GB of 2.1 G)
异常问题:Container is running beyond virtual memory limits. Current usage: 119.5 MB of 1 GB physical mem ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十二)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网。
Centos7出现异常:Failed to start LSB: Bring up/down networking. 按照<Kafka:ZK+Kafka+Spark Streaming集群环境搭 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十一)定制一个arvo格式文件发送到kafka的topic,通过Structured Streaming读取kafka的数据
将arvo格式数据发送到kafka的topic 第一步:定制avro schema: { "type": "record", "name": ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十)安装hadoop2.9.0搭建HA
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(九)安装kafka_2.11-1.1.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(八)安装zookeeper-3.4.12
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(三)安装spark2.2.1
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二)安装hadoop2.9.0
如何搭建配置centos虚拟机请参考<Kafka:ZK+Kafka+Spark Streaming集群环境搭建(一)VMW安装四台CentOS,并实现本机与它们能交互,虚拟机内部实现可以上网.& ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十七):kafka manager安装
一.kafka-manager简介 为了简化开发者和服务工程师维护Kafka集群的工作,yahoo构建了一个叫做Kafka管理器的基于Web工具,叫做 Kafka Manager.这个管理工具可以很容 ...
随机推荐
- 解决异常:“The last packet sent successfully to the server was 0 milliseconds ago. ”的办法
出现异常"The last packet sent successfully to the server was 0 milliseconds ago."的大部分原因是由于数据库回 ...
- 【华为昇腾】 序言:从昇腾AI软硬件平台聊起
2021年是很值得纪念的一年,从上半年开始跟随导师编写有关华为昇腾软件栈CANN的教材,一年的时间反复迭代 终于快要出版了. 这一系列博客可以视作我从编者的角度,重新梳理的全书思路.明年入职商汤之后要 ...
- Dapr初体验之服务调用
初次理解服务调用 在微服务中,有一个难点就是:如果你想使用各个服务组件,你就得知道不同服务的地址和端口,也就是服务发现. 在传统应用我们是怎么做的?就是在web项目里配置上api地址,如下: 在一个w ...
- Devs--开源规则引擎介绍
Devs Devs是一款轻量级的规则引擎. 开源地址:https://github.com/CrankZ/devs 基础概念 此规则引擎的基础概念有字段.条件.规则等. 其中字段组成条件,条件组成规则 ...
- CentOS7部署ceph
CEPH 简介 不管你是想为云平台提供Ceph 对象存储和/或 Ceph 块设备,还是想部署一个 Ceph 文件系统或者把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Ceph ...
- 常见 js 数组方法使用详解
数组常用方法总结 concat filter map some every reduce sort includes join some every 语法:array.every(function(c ...
- R语言与医学统计图形-【14】ggplot2几何对象之直方密度图
ggplot2绘图系统--几何对象之直方图.密度图 1.直方图 参数. geom_histogram(mapping = , data = , stat = 'bin', #统计变换,概率密度为den ...
- DIA技术及其软件工具介绍
前言 关于蛋白质组学,你是不是已经听了太多公司的宣讲,介绍了一大堆的技术名词,反而越听越懵懂,脑袋一团乱麻?就和传话游戏一样,当我们接收了多手信息以后,得到的信息就越不准确.那么,何不自己看一看第一手 ...
- 金蝶EAS——客户端打开时,提示正在更新的文件d:\eas\client\bin\lib\proxy.jar被其他应用程序占用.请关闭
解决办法: 一.通过调用任务管理器来退出,启用任务管理器需同时按下键Ctrl+Alt+Del,在应用程序中找到金蝶EAS,单击,选择结束任务即可:或者在任务管理器中选择"进程",点 ...
- 生产调优2 HDFS-集群压测
目录 2 HDFS-集群压测 2.1 测试HDFS写性能 测试1 限制网络 1 向HDFS集群写10个128M的文件 测试结果分析 测试2 不限制网络 1 向HDFS集群写10个128M的文件 2 测 ...