这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天
一、课程内容
- 微服务架构介绍
- 微服务架构原理及特征
二、详细知识点
1、系统架构演变历史
单体架构
all in one process
优点:性能高、冗余小
缺点:debug困难、模块相互影响、模块分工、开发流程
垂直应用架构
按照业务线垂直划分
优点:业务独立开发维护
缺点:不同业务存在冗余、每个业务还是单体
分布式架构
抽出业务无关的公共模块
优点:业务无关的独立服务
缺点:服务模块bug可导致全站瘫痪、调用关系复杂、不同服务冗余
SOA架构
面向服务
优点:服务注册
缺点: 整个系统设计是中心化的、需要从上到下设计、重构困难
微服务架构
彻底的服务化:
优点:开发效率、业务独立设计、自下而上、故障隔离
缺点:治理、运维维度、观测挑战、安全性、分布式系统
2、微服务架构基本概念
服务(service)
一组具有相同逻辑的运行实体
实例(instance)
一个服务中,每个运行实体即为一个实例
实例与进程的关系
实例与进程之间没有必然对应关系,可以一个实例对应一个或多个进程
集群(cluster)
通常指服务内部的逻辑划分,包含多个实例
常见的实例承载形式
进程、VM、k8s pod……
有状态/无状态服务
服务的实例是否存储了可持久化的数据
服务间通信
网络传输(常见的有HTTP和RPC)
3、服务注册与服务发现
Q:在代码层面,如何指定调用一个目标服务的地址(ip:port)?
方案一:写死
缺点:存在多个服务且难以动态变化
方案二:DNS
缺点:本地DNS存在缓存导致延时、负载均衡、不支持服务的探活检查、域名无法配置端口
方案三:统一的注册中心来存储服务名到服务实例的映射
在服务启动时,服务提供者向注册中心注册服务,暴露自己的地址和端口。如果提供者发生变更,注册中心会将变更推送给服务消费者,更新可用的服务地址列表。