认识微服务

什么是微服务?
 
     微服务就是将庞杂臃肿的单体应用拆分成细粒度的服务,独立部署,并交给各个中小团队来负责开发、测试、上线和运维整个生命周期
 
单体应用拆分成微服务的正确姿势
 
纵向拆分
    按照业务的关联程度来决定,关联比较密切的业务适合拆分为一个微服务,而功能相对比较独立的业务适合单独拆分为一个微服务
 
横向拆分
    按照是否有公共的被多个其他服务调用,且依赖的资源独立不与其他业务耦合
服务化拆分的前置条件
 
服务如何定义
    无论采用哪种通讯协议,是 HTTP 还是 RPC,服务之间的调用都通过接口描述来约定,约定内容包括接口名、接口参数以及接口返回值
服务如何发布和订阅
    需要一个类似登记处的地方,能够记录每个服务提供者的地址以供服务调用者查询,在微服务架构里,这个地方就是注册中心
服务如何监控
    根据QPS(调用量)、AvgTime(平均耗时)以及 P999(99.9% 的请求性能在多少毫秒以内)等指标,设计一个覆盖业务埋点、数据收集、数据处理,最后到数据展示的全链路功能的监控方案
服务如何治理
    设定一个调用性能阈值,如果一段时间内一直超过这个值,那么依赖服务的调用可以直接返回,也就是熔断,也是服务治理最常用的手段之一
故障如何定位
    一次用户调用可能依赖多个服务,每个服务又部署在不同的节点上,如果用户调用出现问题,你需要有一种解决方案能够将一次用户请求进行标记,并在多个依赖的服务系统中继续传递,以便串联所有路径,从而进行故障定位
 
服务调用流程
 
    
1.服务提供者按照一定格式的服务描述,向注册中心注册服务,声明自己能够提供哪些服务以及服务的地址是什么,完成服务发布
 
2.服务消费者请求注册中心,查询所需调用服务的地址,然后以约定的通信协议向服务提供者发起请求,得到请求结果后再按照约定的协议解析结果
 
3.在服务的调用过程中,服务的请求耗时、调用量以及成功率等指标都会被记录下来用作监控,调用经过的链路信息会被记录下来,用于故障定位和问题追踪.期间,如果调用失败,可以通过重试等服务治理手段来保证成功率
 
微服务基本组件
    服务描述 注册中心 服务框架 服务监控 服务追踪 服务治理
 
注册中心的工作流程
     服务提供者在启动时,根据服务发布文件中配置的发布信息向注册中心注册和发布自己提供的服务
    服务消费者在启动时,根据消费者配置文件中配置的服务信息向注册中心订阅自己所需要的服务
    注册中心返回服务提供者地址列表给服务消费者
    当服务提供者发生变化,比如有节点新增或者销毁,注册中心将变更通知给服务消费者
服务监控的主要流程
 指标收集
    把每一次服务调用的请求耗时以及成功与否收集起来,并上传到集中的数据处理中心去 
 数据处理
    根据每次调用的请求耗时以及成功与否等信息,就可以计算每秒服务请求量、 平均耗时以及成功率等指标
 数据展示
    数据收集起来经过处理之后,需要以友好的方式对外展示才能发挥价值,并且每隔10s等间隔自动刷新,用作业务监控和报警等
服务追踪的工作原理
    服务消费者发起调用前,会在本地按照一定的规则生成一个RequestId,发起调用时,将RequestId当作请求参数的一部分,传递给服务提供者
    服务提供者接收到请求后,记录下这次请求的RequestId,然后处理请求
    如果此服务提供者执行消费者请求时,需要继续请求其他服务,会在本地再生成一个自己的RequestId,
然后把这两个RequestId都当作请求参数继续往下传递
    以此类推,通过这种层层往下传递的方式,一次请求,无论最后依赖多少次服务调用、经过 多少服务节点,都可以通过最开始生成的RequestId​串联所有节点,从而达到服务追踪的目的