微服务自身理解相关:

什么是微服务:服务拆分力度更细、服务独立部署、服务独立维护、服务治理能力要求高

服务拆分的方式:纵向拆分:从业务维度进行拆分;横向拆分:从公共且独立维度进行拆分

注册中心相关:

原理:微服务架构下有三种角色,服务提供者、服务消费者和注册中心。服务提供者向注册中心注册自身服务,并向注册中心定期发送心跳汇报自己的存活状态。服务消费者向注册中心订阅服务,把注册中心返回的服务节点缓存在本地内存中,并与服务提供者建立连接。当注册中心服务节点发生变更时服务消费者会同步变更。

常用注册中心:eureka和zookeeper。其中eureka是保证的AP、zookeeper是保证的CP。

监控相关:

监控系统的原理:数据的采集(服务主动上报、代理收集)、数据传输(UDP、kafka(传输的格式一般为二进制协议或者文本协议))、数据处理(接口维度聚集、机器维度聚集)、数据展示(Dashboard方式展现给用户)

监控的对象:用户、接口、资源、基础

监控的具体指标:请求量、相应时间、错误率

监控的维度:全局、分机房、单机、时间、核心

常用监控系统:Spring Boot Admin

链路追踪相关:

原理相关:

核心理念:通过一个全局的id将分布在各个服务节点上的同一次请求串联起来,从而还原原有的调用关系,可以追踪系统问题、分析调用数据并统计各种系统指标。

重要的基本概念:traceId:用于标识某一次具体请求的id,在一次调用链中traceId唯一;spanId:初始值为0,进入下一层调用为0.1,同层依次为0.2,0.3等,该层后面为0.11,0.12等;annotation:用于业务自定义埋点数据。

系统相关:一个链路追踪系统应该具备如下三个方面

数据处理层:包括CS、SR、SS、CR

数据处理层:按需计算(实时计算需求、离线计算需求)

数据展示层:调用链路图(详情图),调用拓扑图(全局视野图)

常用的链路追踪系统:

Twitter的OpenZipkin:通过在http client前后引入服务追踪的代码

Naver的pinpoint:通过字节码注入的方式实现服务的拦截调用

故障处理相关:

服务端出现故障:服务端出现故障常分为如下三种

集群故障:限流、降级(停止系统中的某些功能,来保证系统整体的可用性)

单IDC故障:流量切换到正常的IDC(DNS解析、RPC分组)

单机故障:重启(防止网络抖动导致的接口超时)

调用失败处理:超时、重试、双发、熔断。

其它:

常用负载均衡算法:随机、轮询、最少活跃算法、一致性hash算法