微服务架构原理|青训营笔记

105 阅读2分钟

这是我参与【第五届青训营】伴学笔记创作活动的第9天,

微服务架构介绍

系统架构演进:硬件设施的快速发展以及用户越来越多

由最开始的单体架构演变到垂直应用架构再到分布式架构,然后到SOA架构,再到如今的微服务架构

单体架构:所有的项目在一个模块里面,性能最高,冗余小,但是模块相互影响,debug困难,模块分工困难

垂直应用架构:按照业务垂直划分,业务独立开发维护,但是有重复部分

分布式架构:抽查业务无关的公共模块,业务无关的独立服务,但是单个问题可能会导致全站出问题

SOA架构:面向服务

微服务架构:彻底的服务化,开发效率提高,业务独立设计,自上而下,可以故障隔离,但是治理和运维难度上升、安全性方面有较大问题

微服务架构概览 image.png

核心要素:

  • 服务治理
  • 可观测性
  • 安全

原理及特征

基本概率:

  • 服务:一组运行相同代码的多种实体

  • 实例:一种服务中,每一个运行实体就是一个实例

对于单体服务,不同模块通信只是简单的函数调用

服务注册及发现:新增一个统一的服务注册中心,用于存储服务名到服务实例的映射

流量特征:

  • 统一网关人口
  • 内网通信多数采用RPC
  • 网状调用链路

核心服务治理功能

服务发布

让一个服务升级运行新的代码的过程

服务发布的难点:

  • 服务不可用

  • 服务抖动

  • 服务回滚

服务发布:

  • 蓝绿部署:简单,但是需要两倍资源

  • 灰度发布

流量治理

在微服务架构下,可以基于地区、集群、实例、请求等维度,对端对端流量的路由路径进行控制

负载均衡(LB)

负责分配请求在每个下游实例上的发布

稳定性治理

线上服务总会出问题的,这与程序的正确性无关,有可能是网络攻击、流量突增、机房断电、光纤被挖、机器故障.....

为此微服务架构提出了稳定性治理功能

  • 限流

  • 熔断

  • 过载保护

  • 降级

服务治理实践

重试的意义:重试可以避免偶发的错误,提高SLA;降低错误率;降低长尾延时;容忍暂时性错误;避开下游故障实例

重试的难点:

  • 幂等性

  • 重试风暴(雪崩)

  • 超时设置

重试策略:

  • 限制重试比例

  • 防止链路重试

  • Hedged requests(对冲请求)