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

111 阅读2分钟

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

一、课程内容

  • 微服务架构介绍
  • 微服务架构原理及特征

二、详细知识点

1、系统架构演变历史

单体架构

all in one process

优点:性能高、冗余小

缺点:debug困难、模块相互影响、模块分工、开发流程

垂直应用架构

按照业务线垂直划分

优点:业务独立开发维护

缺点:不同业务存在冗余、每个业务还是单体

分布式架构

抽出业务无关的公共模块

优点:业务无关的独立服务

缺点:服务模块bug可导致全站瘫痪、调用关系复杂、不同服务冗余

SOA架构

面向服务

优点:服务注册

缺点: 整个系统设计是中心化的、需要从上到下设计、重构困难

微服务架构

彻底的服务化:

优点:开发效率、业务独立设计、自下而上、故障隔离

缺点:治理、运维维度、观测挑战、安全性、分布式系统

2、微服务架构基本概念

服务(service)

一组具有相同逻辑运行实体

实例(instance)

一个服务中,每个运行实体即为一个实例

实例与进程的关系

实例与进程之间没有必然对应关系,可以一个实例对应一个或多个进程

集群(cluster)

通常指服务内部的逻辑划分,包含多个实例

常见的实例承载形式

进程、VM、k8s pod……

有状态/无状态服务

服务的实例是否存储了可持久化的数据

服务间通信

网络传输(常见的有HTTP和RPC)

3、服务注册与服务发现

Q:在代码层面,如何指定调用一个目标服务的地址(ip:port)?

方案一:写死

缺点:存在多个服务且难以动态变化

方案二:DNS

缺点:本地DNS存在缓存导致延时、负载均衡、不支持服务的探活检查、域名无法配置端口

方案三:统一的注册中心来存储服务名到服务实例的映射

在服务启动时,服务提供者向注册中心注册服务,暴露自己的地址和端口。如果提供者发生变更,注册中心会将变更推送给服务消费者,更新可用的服务地址列表。