正文
六、微服务网关
网关是整个系统对外暴露的唯一入口,它封装了系统内的所有微服务,对外看来,别人只知道也只能通过网关才可以和系统进行交互。网关对所有请求进行非业务功能的处理,然后再将请求发送给内部指定的微服务进行业务上的处理。总的来说,网关最主要的功能如下:
- 反向路由;
- 安全认证;
- 限流熔断;
- 日志监控;
现在常见的网关有Kong、Zuul、Spring Cloud Gateway等;
微服务网关:
在实际应用中,一个微服务体系架构的系统可以有多个网关用来应对不同的使用场景,比如公司内网网关、外网网关、提供给第三方调用的网关等;
多网关的使用:
七、微服务配置中心
微服务在启动和运行的过程中,经常会需要读取一些配置信息,这些配置信息拥有如下的特点:
- 独立于程序的只读内容;配置与程序应该分离,应用应该只会去读取配置,而不应该去修改配置;
- 伴随应用的整个生命周期;配置会被程序读取用来控制自己的行为逻辑;因此配置是可以被更改的;
- 拥有多种加载方式;可以通过硬编码、配置文件、环境变量、启动参数、数据库存储等方式被加载到应用内;
- 配置内容需要治理;不同的环境下,配置具有不同的内容,因此需要配置内容的治理;
如上这些特点和需求,催生了配置中心的出现。现在主流的配置中心有Spring Cloud Config、Nacos、Apollo等;
配置中心:
八、微服务通信
RPC和REST:
九、服务监控
9.1 监控体系
监控体系:
9.2 监控架构
监控架构:
9.3 全链路监控
在微服务架构中,一次调用请求可能贯穿多个服务,这些服务可能是由不同的团队使用不同的技术开发而成的,如果出现调用失败需要排查问题时,如何能快速地复现调用现场,发现问题出在哪个服务哪个服务器上就成了全链路监控需要解决的问题。
全链路监控的基本原理都是:
- 一次请求全过程中只有一个TraceID保持不变;
- 每贯穿一个服务,SpanID都不同,同时标注上一个SpanID;
- 按照时间序列将监控信息进行报错和展示;
全链路监控主流工具有CAT、Zipkin、Pinpoint、Skywalking等;
十、断路器与流量控制
在微服务架构体系中,服务之间的调用是很频繁的,一旦某些服务出现故障或者高延迟,会很可能造成级联故障,如果客户端还在不停重试,将会加剧问题的严重性,最终导致整个系统彻底崩溃。
断路器的设计与实现有助于防止多服务之间的级联故障,允许我们构建具有容错性和高弹性的微服务架构系统,当某些服务不可用时,提供服务熔断和服务降级功能,保证系统的其它部分仍能正常运行。
断路器的三个状态和含义如下:
- 关闭;此时所有调用都能访问到当前的服务。当调用次数或者故障数超过设定的阈值后,断路器变为打开状态;
- 打开;不再调用当前服务,而是返回预设的错误信息;
- 半开;打开一定时间后,断路器切换为半开状态,放一个请求调用当前服务,测试服务是否正常。如果正常,则变为关闭状态;如果还是异常,再次变为打开状态。
主流常见的断路器有Hystrix、Sentinel等;
十一、DevOps(云原生架构系列)
DevOps:
蓝绿发布:
十二、容器云
如果使用了容器技术,那么容器编排、发布、治理就成了避不开的话题。