是极客时间专栏的学习笔记
1.微服务注册和订阅的流程
a.服务端和注册中心建立连接,注册信息
b.注册中心通过心跳机制保存和服务端连接的信息
c.客户端向注册中心订阅
d.客户端和客户端通过心跳机制保持连接
e .客户端向服务端发送请求,获得服务
问题 1 高可用要考虑哪些方面?
主要是从服务端宕机,客户端容错和注册中心选型三个方面去考虑。
对于服务端宕机,注册中心心跳机制发现不存在就需要移除,不过为了防止错误移除,要移除之后继续心跳一段时间确定,在客户端容错是指如果发现错误率持续达到一段时间调用失败,就暂时放入不可用的列表,之后重试。
2.负载均衡
负载均衡的算法有轮询,加权轮询,随机,加权随机,哈希,一致性哈希,根据反馈动态权重。
负载均衡这里动态权重的一个好处是,缓存命中率可能会影响服务端的处理时间,延迟等,所以动态权重可以根据缓存命中之后给我们的延迟来动态调整。
除了这些还有根据服务端连接数去分配权重的负载均衡算法。
在动态调整权重的过程中可以根据调用结果 成功就增加权重,失败就减权重,不能减到 0,因为那代表完全不可用,而且相比于绝对值,相对值才是决定负载均衡的因素。
3.熔断
主要的高可用方案就是负载均衡,熔断限流和降级,其中熔断就是使得服务不可访问,在这里主要面对的是两个问题
第一个是怎么判断服务端出现问题,需要熔断
第二个是熔断之后怎么判断服务端恢复处理能力
判断出现问题需要指标,例如错误率,响应时延,为了防止误判,需要在指标超过阈值,且一段时间之后才能熔断,否则可能是因为网络偶发性问题造成的。
熔断之后客户端可以一段时间之后恢复请求,如果熔断本身是因为高并发造成的,直接恢复全部请求可能会再次熔断,反复熔断恢复熔断恢复造成抖动现象,可以逐步恢复请求。
在客户端也可以做容错如发现错误就把服务节点加入不可用节点,去其他节点请求,如果是因为数据库问题导致所有节点都不可用只能人工介入去解决问题。
这里关于微服务高可用的问题发现和心跳机制是第一次学到的,然后熔断的判断和恢复,这种实际生产环境发现问题,考虑偶发性和严重性的这种考虑方式也很重要。