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

131 阅读4分钟

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

今天的主要内容如下:

  1. 微服务架构介绍
  2. 微服务架构原理及特征
  3. 核心服务治理功能
  4. 字节跳动服务治理实践

1、微服务架构介绍

1.1 系统架构演变历史

系统架构发展历史包括单体架构、垂直应用架构、分布式架构、SOA架构、微服务架构。

image.png

1.1.1 单体架构

单体架构是我们在学校中开发项目最常使用的一个架构。它的优势是性能高、冗余小,但是缺点也很明显:

  1. 调试困难
  2. 不同的模块间互相影响,非核心功能可能导致程序崩溃
  3. 不利于协同开发

image.png

1.1.2 垂直应用架构

垂直应用架构是按照业务线进行垂直划分,

优点:业务独立开发和维护

缺点:

  1. 不同业务存在冗余,无法复用
  2. 每个业务还是单体

image.png

1.1.3 分布式架构

分布式架构抽取出与业务无关的公共模块,独立部署运行,不同的业务系统可以复用公共模块。比如说图中的服务层就是与业务无关的公共模块。

优点:业务无关的服务是独立的,可以复用

缺点:

  1. 一个模块服务有问题,可能导致整个系统崩溃
  2. 服务之间调用关系错综复杂
  3. 不同服务间仍存在冗余

image.png

1.1.4 SOA架构

SOA架构引入了服务和服务注册的概念。

优点:可以进行服务注册

缺点:

  1. 整个系统从设计上依然是中心化的
  2. 需要从上至下,去设计划分
  3. 重构困难

image.png

1.1.5 微服务架构

微服务架构是彻底服务化,从下而上设计

优点:

  1. 提高了开发效率
  2. 故障可控

缺点:

  1. 系统复杂度提高,运维难度增加
  2. 存在安全问题

image.png

2、微服务架构原理及特征

2.1 基本概念

服务间的通信:

  • 对于单体服务,不同模块通信只是简单的函数调用;
  • 对于微服务,服务间通信意味着网络传输。

2.2 服务注册以及发现

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

image.png

3、 核心服务治理功能

3.1 服务发布

服务发布就是更新线上服务代码的过程。

服务发布的难点:

image.png 如何解决?

  1. 蓝绿部署:一个服务存在多个集群,轮流更新服务代码,某个集群更新过程中,将其流量全部转移到其他集群上。好处:简单稳定。缺点:需要两倍资源。

image.png

  1. 灰度发布

比如说服务b目前有三个实例,我们打算更新这三个实例的代码,我们先在此基础上添加一个新的实例,运行一段时间后如果没有问题,将之前三个实例中的一个下线;然后重复这个步骤,直到所有旧实例都被替换掉。 这种方法回滚难度大,基础设施要求高。

3.2 稳定性治理

image.png

限流:服务提供方拒绝部分请求

熔断:服务请求方有一个熔断器,如果请求不到服务,不会一直重试,而是间隔一段时间进行重试。

过载保护:服务提供方有过载保护功能,可以拒绝请求。

降级:保证重要服务可以正常工作,拒绝不重要的服务的请求。

4、字节跳动服务治理实践

4.1 重试的意义

image.png

4.2 重试的难点

幂等性:多次请求可能会造成数据不一致

重试风暴:随着调用深度的增加,重试次数会指数级上涨

超时设置:假设一个调用正常是1s的超时时间,如果允许一次重试, 那么第一次请求经过多少时间时,才开始重试呢?

4.3 解决重试风暴的策略

image.png

  1. 限制重试比例

image.png

  1. 防止链路重试

image.png