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

86 阅读4分钟

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

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

今天主要对微服务框架进行学习。

一、本堂课重点内容:

本次课程讲了以下几个方面:

1.微服务架构介绍

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

3.核心服务治理功能

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

二、详细知识点介绍:

1.微服务架构介绍

随着互联网的爆炸性发展、硬件设施的快速发展、需求复杂性的多样化、开发人员的急剧增加、计算机理论及技术的发展等因素,传统的单体架构和垂直应用架构已经无法满足我们的需求了,所以系统架构也需要不断升级。下图是系统架构的演变历史: 架构的发展.png 下面我们依次看看这些系统架构

a.单体架构

单体架构,顾名思义就是将系统所涉及的所有资源都放在一起(all in process),它有性能高、冗余小等优势,也存在着debug困难、模块相互影响等不足之处。具体如下图: 单体架构.png

b.垂直应用架构

垂直应用架构就是将业务垂直划分,各个业务独立开发,互不影响。就是将其复杂的系统划分为多个单体系统架构,其中就会存在冗余。具体如下图: 垂直应用架构.png

c.分布式架构

分布式架构可以看作是对垂直应用架构的优化,它将与业务无关的公共模块抽离出来。当然,其中就存在着当公共模块有问题时会导致全站瘫痪、调用关系复杂等问题。具体如下图: 分布式架构.png

d.SOA架构

SOA架构时面向服务的一种架构,它将服务进行注册,解决了分布式调用复杂的问题。其中就会存在重构困难、系统过于中心化的问题。具体如下图: SOA架构.png

e.微服务架构

微服务架构是一个彻底服务化的架构,它可以提升我们的开发效率,各个业务之间是独立设计的,自下而上,并且将故障进行隔离。同时也存在着维护难度大、安全性等问题。具体如下图: 微服务架构.png

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

基本概念

  • 服务(service):一组具有相同逻辑的运行实体
  • 实例(instance):一个服务中,每个运行的实体即为一个实例
  • 实例与进程的关系:二者之间没有必然联系,一个实例可以对应一个或者多个进程
  • 集群(cluster):服务内部逻辑的划分,包含多个实例 服务间的通信

对于单体服务来说,不同模块之间的通信只是简单的函数调用。而对于微服务而言,服务间的通信就代表着网络传输。 微服务之间的通信.png

服务注册及发现

在微服务的架构中,使用一个统一的服务注册中心,用于存储服务名到服务实例的映射。以指定在代码层面调用一个目标服务的地址。

3.核心服务治理功能

a.服务发布

服务发布指的是然一个服务升级运行新的代码的过程。在服务发布的过程中会出现服务不可用、服务抖动、服务回滚等问题。我们可以使用蓝色部署或者灰度发布来应对。

b.流量治理

在微服务系统架构下,我们可以按照请求的地区、集群、实例等维度,对端到端流量的路由进行精确控制。 流量治理.png

c.负载均衡

负载均衡主要负责分配请求在每个实例上的分布,常见的负载均衡策略有:Round Robin、Random、Ring Hash等。 负载均衡.png

d.稳定性治理

在我们系统上线之后,还会出现一些非程序问题。如:网络攻击、机房断电、机械故障、网络故障等问题。在微服务架构中可以使用限流、熔断、过载保护、降级等操作来处理这些问题。 解决问题.png

三、课后个人总结:

通过对微服务框架的学习,我大概了解了微服务的原理,微服务架构是当前很多物联网公司的标准架构,在还未学习该门课程的时候,我对系统的架构还只停留在单体架构和垂直应用架构上,通过对此课程的学习,使我对系统开发的架构能力得到了提升。此外,我还在此课程中学到了服务治理功能是如何工作的。