核心服务-注册中心(中)

简介: 核心服务-注册中心(中)
假设 机房3突然和机房2和机房1的网络断了
即机房3出现了网络分区 网络划分
机房间网络划分
机房3 机房内还是通的
理论层zk集群还可以用
实际情况整个zk集群都不可用了
一旦网络发生分区 就会选举多个主节点 就会不一致了

原因是

ServerB2作为新服务 此时注册ZK不成功
因为机房3中的ZK节点已经脱离了ZK集群
不能通过ZK对服务进行扩容、重启、部署

期望的效果

期望的是跨机房不可用但机房3中的ServiceA调用ServiceB是可以用的
虽然说有多机房 很多情况下更鼓励在同一个机房内服务之间调用
机房内服务调用 服务内响应延迟会变的很低
服务每个机房都成了孤岛 每个机房调用只拿到本机房的服务列表
反而有更好的服务链路调用效果
千万不能因为自身的任何问题 破坏了服务之间的联通性

原生ZK

但原生的ZK同机房的服务调用也不可用
因为ZK是CP模型
为了保证网络分区下P (脑裂下)C一致性 A的可用性也让它不可用


ZK存储了大量的信息


1、写到zk里面的任何一个写操作 为了保证cp 
都会在从节点上都会在写一份
2、keepalive 、心跳信息、节点注册 全部都会在集群中同步
3、服务发布大量注册写请求
4、毫秒级服务健康状态的写请求


ZK集群最多支持1000台


zk是分布式的
根据paxios协议 选zk主 zk从
zk主 是写入单点 不能水平扩展
从节点可以扩展 
类似mysql 主从
主只能有一个
zk集群规模不能很多 1000台撑死了
集群有1万台 就会不堪负载

根据业务功能 垂直拆分集群?

根据业务功能 垂直拆分集群
58 房产、招聘、二手车
房产有自己的zk集群
招有自己的zk集群
二手车有自己的zk集群
破坏了公司整体服务的连通性
彼此不可以调用了
业务整合联通性不可预知
比如搜索业务1000台机器zk
推荐业务1000台机器zk
若将搜索和推荐做一个集群
zk 2000台 就不行了

为什么zk 到1000台就不行了?

image.png


有大量的持久化存储和事务

其实不需要存储 目的是为了做cp 所以存储了

ZK 2PC 两阶段提交事务

image.png


leader和其他节点数据提交 全部是二阶段提交 2PC(Propose ACK Commit)
强一致性 每一步都是2pc 同步阻塞写


ZK探活机制


image.png

track机制即tcp长连接 向网络发一个ping命令

image.png



相关文章
|
6月前
|
存储 缓存 测试技术
微服务注册中心的原理和实现方式
【2月更文挑战第19天】注册中心可以说是实现服务化的关键,因为服务化之后,服务提供者和服务消费者不在同一个进程中运行,实现了解耦,这就需要一个纽带去连接服务提供者和服务消费者,而注册中心就正好承担了这一角色。
|
存储 运维 Dubbo
Nacos 注册中心的设计原理:让你的应用轻松实现高效注册与发现!
Nacos 注册中心的设计原理:让你的应用轻松实现高效注册与发现!
182 0
|
6月前
|
微服务
注册中心机制
【2月更文挑战第16天】注册中心机制
56 5
|
6月前
|
存储
注册中心是如何工作的
【2月更文挑战第8天】
微服务注册中心技术选型:5种主流注册中心,哪个最香?
讲解5种常用的注册中心,对比其流程和原理,无论是面试还是技术选型,都非常有帮助。 对于注册中心,在写这篇文章前,我其实只对ETCD有比较深入的了解,但是对于Zookeeper和其它的注册中心了解甚少,甚至都没有考虑过ETCD和Zookeeper是否适合作为注册中心。 经过近2周的学习,原来注册中心除了ETCD和Zookeeper,常用的还有Eureka、Nacos、Consul,下面我们就对这些常用的注册中心,初探它们的异同,便于后续技术选型。 全文接近 8千字,有点长,建议先收藏,再慢慢看,下面是文章目录:
|
弹性计算 数据安全/隐私保护
阿里云注册流程详解
很多小白用户不知道怎么注册阿里云,下面小编就和大家系统讲解一下
应用中心——应用中心如何使用
应用中心——应用中心如何使用自制脑图
80 0
应用中心——应用中心如何使用
|
缓存 算法 Java
传统服务注册中心 | 学习笔记
快速学习 传统服务注册中心
传统服务注册中心 | 学习笔记
|
Java 开发者 微服务
EurekaServer 服务注册中心建立|学习笔记
快速学习 EurekaServer 服务注册中心建立
EurekaServer 服务注册中心建立|学习笔记
|
缓存 Java Nacos
第01篇:分布式注册中心
什么是`注册中心`,`注册中心` 往往是在分布式的应用体系下才会遇到的。对于分布式体系应用都是横向进行扩展。如下图`User App`这个服务,具有2台服务器 但是当用户从网关进来访问, 网关是如何知道这个 `User App`有几台服务及每台服务的网络地址是什么呢? 所以就需要有一个地方能收集到每台应用的地址及命名。 往往这个地方就被叫做 `注册中心`。分布式环境下的应用在启动时候都会向这个地方来注册自己的网络地址,及命名。
434 0
第01篇:分布式注册中心