微服务思想

本文深入探讨了微服务架构中的注册中心,重点介绍了Zookeeper的角色和实现原理。Zookeeper作为服务治理的核心,负责服务的注册与发现,确保服务间的协调。其工作机制包括原子广播、状态同步和故障恢复。在微服务场景下,Zookeeper还实现了客户端的服务列表更新和负载均衡。此外,文中还详细阐述了Zookeeper的安装、集群配置以及集群选举规则,强调了避免脑裂现象的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微服务思想

在微服务架构中,注册中心是核心的基础服务之一,如微服务中的服务治理框架,服务治理的核心功能就是注册中心。
1、SOA思想
一种面向服务的架构,将不同的服务进行拆分,并通过这些服务之间定义良好的接口和协议联合起来,接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互
2、RPC
远程过程调用,基于TCP进行远程调用,数据传输在传输层TCP层完成,RPC主要依赖于客户端和服务端之间建立Socket链接进行,底层实现比REST更复杂。
REST是基于HTTP传输,数据传输在应用层完成,通信代价高。

1、注册中心

记录了服务和服务地址的映射关系。
Dubbo支持多种注册中心的实现,常用的是:1、Redis; 2、Zookeeper
SpringCloud 支持的 Eureka等

1.1、Zookeeper原理

原理:

Zookeeper 的核心是原子广播,这个机制保证了各个Server之间的同步。实现这个机制的协议叫做Zab协议。
Zab协议有两种模式,它们分别是恢复模式(选主)和广播模式(同步)。当服务启动或者在领导者崩溃后,
Zab就进入恢复模式,当领导者被选举出来,且大多数Server完成和 leader的状态同步以后,恢复模式就结束了。
状态同步保证了leader和Server具有相同的系统状态。
为了保证事务的顺序一致性,zookeeper采用了递增的事务id号(zxid)来标识事务。所有的提议(proposal)
都在被提出的时候加上了zxid。实现中zxid是一个64位的数字,它高32位是epoch用来标识leader关系是否改变,
每次一个leader被选出来,它都会有一个新的epoch,标识当前属于那个leader的统治时期。低32位用于递增计数。

1.2、Zookeeper在微服务架构中的实现原理

1、当server启动时,会将服务器的状态写入到注册中心(服务名称/IP/端口)
2、注册中心接受到服务器信息时,会动态的维护服务列表数据
3、当客户端启动是,会先连接注册中心,获取所有的服务列表数据,并且将服务链表数据保存到本地
4、当客户端进行服务调用时,如果有多个服务生产者时,采用负载均衡的策略选取其中一个生产者提供服务(RPC)。
5、当服务器发生宕机时,由于注册中心有心跳检测机制,会动态的维护服务列表数据,会全网广播所有的客户端进行服务列表数据更新,在同步服务列表时,数据的同步会进入阻塞状态。

1.2、Zookeeper的安装

zookeeper是Java语言编写的,需要在Java环境下使用
1、Zookeeper安装包上传到linux
2、解压安装包 tar  -xvf apache-zookeeper-3.6.0-bin.tar.gz
3、启动需要进入到bin目录下输入命令:
		sh zkServer.sh start   开启
		sh zkServer.sh stop   停止
		sh zkServer,sh status 查询状态

1.2、Zookeeper集群配置

?集群的最小单位是几台    3台
公式:	存活节点 > N/2
集群一般都是奇数点为什么?
	因为搭建奇数台和偶数台的容灾效果是一样的,所以一般奇数个
1.2.1、集群中的脑裂现象
集群工作中主机意外宕机,集群开始选举,如果出现多次平票的状态时,则可能出现脑裂的现象。
如何降低脑裂现象的发生:增加节点的数量
1.2.2 配置集群

1、在zookeeper根目录中创建新的文件夹zkCluster.
在这里插入图片描述

2、在zkCluster中创建 3个文件夹zk1 zk2 zk3

在这里插入图片描述
3、在每个文件夹中创建data log文件夹
在这里插入图片描述
在这里插入图片描述

4、分别在zk1/zk2/zk3中的data文件夹中创建新的文件myid.其中的内容依次为1/2/3,与zk节点号对应.
在这里插入图片描述
5、编辑配置文件
复制zoo_sample.cfg为z001.cfg
在这里插入图片描述
编辑z001.cnf文件
vim z001.cfg
在这里插入图片描述
将zoo1.cfg 复制为zoo2.cfg zoo3.cfg,更改内容
在这里插入图片描述
在这里插入图片描述
6、开启集群
在bin目录下,输入命令启动集群,问集群开启最少开启几台才行,根据公式 存活节点>N/2,3台的集群开2台即可工作
sh zkServer.sh start zoo1.cfg
sh zkServer.sh start zoo2.cfg
在这里插入图片描述

检查主从关系:
sh zkServer.sh status zoo1.cfg
sh zkServer.sh status z002.cfg
在这里插入图片描述
leader负责监控集群状态,follwer负责客户端链接获取服务端列表信息,同时参与投票。

1.3、Zookeeper集群选举的规范
zk集群选举规则是myid最大优先
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值