服务治理是微服务架构最核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。Erueka就是spring cloud中用于服务治理的框架。
服务治理的基础架构:服务注册中心,服务提供者,服务消费者。
服务治理机制:
服务提供者:服务注册 启动时向服务注册中心进行注册;服务同步 服务注册中心互相注册为服务,可完成服务同步;服务续约 通过”心跳“告说注册中心我还活着,防止注册中心将实例从列表中剔除。
服务消费者:获取服务 启动时从注册中心获取服务清单;服务调用 获取清单后可以通过实例名和元数据,进行服务调用,若一个服务名对应多个服务实例,在Ribbon中默认采用轮询的方式进行负载衡。 服务下线 正常关联服务实例,会通知注册中心:“我要下线了”,
服务注册中心:失效剔除 每隔一段时间将清单中超时没有续约的进行剔除;自我保护 心跳失败比例在15分钟内低于85%会触发自我保护,期间实例信息不会过期,客户端可能拿到实际不存在的实例,所 以客户端需要有容错机制。
我们为什么要用服务治理框架?无非服务间的调用关系非常复杂,难以维护。大家可以看看中介者模式,万物皆对象,服务同样是一种对象,从这个角度思考中介者模式,你会发现它们相同之处的。服务注册中心其实就是服务中介,服务提供者向中介注册服务,服务消费者通过中介获取服务完成消费,服务提供者和服务消费者之间的引用关系通过中介者进行解耦。像服务同步,服务续约等其它行为都是在维护服务的高性能和高可用上做出的策略。