6.微服务框架-不变的基建| 青训营笔记

85 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

微服务架构介绍

系统架构的演进历史:单体架构->垂直应用架构->分布式架构->SOA架构->微服务架构。
微服务架构的三大治理要素分别为服务治理、可观测性、安全。

  • 服务治理
    • 服务注册
    • 服务发现
    • 负载均衡
    • 扩缩容
    • 流量治理
    • 稳定性治理
  • 可观测性
    • 日志采集
    • 日志分析
    • 监控打点
    • 监控大盘
    • 异常报警
    • 链路追踪
  • 安全
    • 身份验证
    • 认证授权
    • 访问令牌
    • 审计
    • 传输加密
    • 黑产攻击

微服务架构原理及特征

服务包含集群,集群包含实例,一个实例包含一个或多个进程,服务间的通信使用网络传输,架构中增加服务注册中心,来完成服务的注册和发现。

服务是一组具有相同逻辑的运行实体

实例是一个服务中的每个运行实体

实例与进程没有必然对应关系,一般一对一或者一对多

常见的实例承载形式,如进程、VM、k8s pod......

微服务之间通过网络进行通信,常见的通信协议包括 HTTP、RPC。

服务注册及服务发现存在服务间调用中,如何指定下游服务实例的地址的问题,简单的方案是直接指定 ip:port,但是没有任何动态能力且无法解决有多个实例下游实例的情况,另一个方案是使用DNS,但是本地DNS存在缓存,导致延迟、DNS没有负载均衡、不支持服务探活检查、DNS不能指定端口等问题。

服务注册发现是新增一个统一的服务注册中心,用于存储服务名到服务实例之间的映射关系,当旧服务实例下线前,从服务注册中心删除该实例,下线流量,而新服务实例上线后,在服务注册中心注册该实例,上线流量。

微服务流量特征有统一网关入口、外网通信多数采用 HTTP,内网通信多数采用 RPC(Thrift, gRPC)。

核心服务治理能力

服务发布就是让一个服务升级运行新代码的过程。

服务发布的难点在于:服务不可用,服务抖动(某几次不可用),服务回滚(升级的代码有问题,先用前一个版本)。

蓝绿部署:将服务分成两部分,先后分别发布,流量接入其中一个服务,都成功再接两个服务。简单稳定,但是需要两倍资源。

灰度发布:新代码先放到原来很多个实例中加一个新实例,观察一下,如果没问题再加新实例断掉旧实例,缺点是回滚难度大,基础设施要求高

流量治理,微服务架构中,可以根据地区,集群,实例,请求等维度,对端到端的流量在链路上进行精确控制。

负载均衡:一个服务多个实例,通过一些策略分配到各个实例上请求。

稳定性治理:面对网络攻击,流量突增等情形,保持微服务的稳定性。

稳定性治理功能:限流,熔断,过载保护,降级。

限流就是限制服务处理的最大QPS,拒绝过多请求。

熔断就是中断请求路径,增加冷却时间从而让故障实例尝试恢复。

过载保护就是在负载高的实例中,主动拒绝一部分请求,防止实例被打挂。

降级就是服务处理能力不足时,拒绝低级别的请求,只响应线上高优请求。

参考

【后端专场 学习资料四】第五届字节跳动青训营 - 掘金 (juejin.cn)