注册中心原理
服务启动后向注册中心注册,server会将注册信息向其他server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后将服务提供者地址缓存在本地,下次再调用时,直接从本地缓存中获取服务列表来完成服务调用。
配置中心的原理
在服务运行前,将所需的配置信息从配置仓库拉取到本地服务,达到统一化配置管理的目的
配置中心是如何实现自动刷新的
- 配置中心server端承担起配置刷新的职责
- 提交配置触发post请求给server端的bus/refresh接口
- server端接收到请求发送给springcloud bus总线
- springcloudbus接到消息并通知给其他连接到总线的客户端
- 其他客户端接收到通知,请求server端获取最新配置
- 全部客户端均获取到最新配置
配置中心如何保证数据安全
- 保证容器文件访问安全性,所有的网络资源请求都需要登陆
- 配置中心里所有的配置文件中的密码进行加密,保证其密文性
- 开发环境禁止拉取生产环境的配置文件
zk和eureka做注册中心区别
zk保证cp,eureka保证ap
springcloud和dubbo区别
- dubbo是二进制传输,对象直接转成二进制,使用rpc通信
- springcloud是http传输,使用http协议一般使用json报文,json再转二进制,消耗大
- dubbo只是实现了服务治理,springcloud提供了整个框架
ribbon负载均衡原理
- ribbon通过ILOADBalancer接口对外提供统一的选择服务器server功能,会根据不同的负载均衡策略iRule选择合适的server返回给使用者
- irule是负载均衡策略的抽象,iloadbalancer通过调用irule的choose方法返回server
- iping用来检测server是否可用,iloadbalancer的实现类维护一个timer每隔10s检测一次server的可用状态
- iClientConfig主要定义了用于初始化各种客户端和负载均衡器的配置信息,实现类DefaultClientCOnfigImpl
微服务的熔断降级
hystrix是面向切面来拦截对外的请求,当拦截到异常,面向切面的方法就可以感知的到,靠aop的机制拦截用户的请求。
- 如果调用某服务报错或者挂了,就对该服务熔断,在5分钟内请求此服务直接返回一个默认值,不需要每次都卡几秒,这个过程就是熔断。
- 但是熔断之后就会少调用一个服务,此时需要做下标记,标记本来需要做什么业务,但是因为服务挂了,暂时没有做,等该服务恢复,就可以手工处理这些业务。降级数据保底,这个过程就是降级。
hystrix 实现原理
hystrix是一个延迟和容错库,旨在隔离对远程系统、服务、第三方库的访问点,停止级联故障,并在不可避免发生故障的复杂分布式系统中快速恢复。主要靠spring的aop实现
实现原理
- 正常情况下,断路器关闭,服务消费者正常请求微服务
- 一段时间内,失败率达到一定阈值,断路器将断开,此时不再请求服务提供者,而是只提供快速失败的方法 断路方法
- 断路器打开一段时间,自动进入半开状态,此时断路器可允许一个请求方法服务提供者,如果请求调用成功,关闭断路器,否则保持开启状态
断路器hystrix是保证了局部发生的错误,不会扩展到整个系统,从而保证系统的即使出现局部问题也不会造成系统雪崩
zab协议
zab协议是paxos协议的简化版本
实现了主要以下几个功能:
- zab确保已经在leader服务器上提交的事务最终被所有服务器提交
- zab确保在leader重启后继续同步之前没有完成的数据
- zab实现leader选举
- zab实现在最快速度同步到半数节点,并会尽快把数据同步到所有节点
注册中心挂了或服务挂了,如何处理
注册中心挂了,
- 可以读取本地持久化里的配置 服务宕机重启后可以读取
服务挂了 - 应该配有服务监控中心springboot admin 监控集群中运行的微服务
感知到服务下线后 通过通知机制通知管理员排查问题