这是我参与「第五届青训营」伴学笔记创作活动的第5天。今天学的是微服务框架相关内容。主要内容包括微服务框架介绍,原理及特征,核心服务治理功能和在微服务架构稳定性治理中,对请求重试策略的讲解。
微服务架构就是把原本包含了众多复杂逻辑的软件进程按照功能单元抽象成多个服务,以服务为单位,为它们间的通信定义标准,并去中心化。它的优势是开发效率高,业务都独立设计,架构设计自下而上和业务间的故障隔离。缺点是服务治理和运维难,系统数据观测难,系统安全性和分布式系统本身的问题。微服务架构的核心要素有服务治理,可观测性和安全性
微服务中的服务注册及发现是怎么实现的呢?对于单体服务,不同模块通信只是简单的函数调用。对于微服务,服务间通信意味着网络传输。在代码层面,上级服务直接指定目的服务的地址和端口是不行的。因为,每个服务有多个实例,且一个服务的所有实例都是运行同一份代码,服务实例的IP和端口本身是动态变化的。如果通过DNS调用,会有以下问题:本地DNS存在缓存,会导致延时;目的服务的多个实例间会有负载均衡问题;不支持服务实例的探活检查;域名无法配置端口。此问题的解决思路是新增一个统一的服务注册中心,用于存储服务名到服务实例的映射。微服务的流量特征是采用统一网关入口,服务间内网通信多数采用RPC,服务间是网状调用链路和即同一个客户端长连接发出的请求,理论上可以到达服务中所有实例。
微服务中,服务发布是指让一个服务升级运行新的代码的过程。服务发布中,可能存在服务不可用,服务抖动和新代码上线出错造成服务回滚。对应对策有蓝绿部署和灰色发布。