这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天 微服务架构是当代大多数互联网公司的标准架构。
-
系统架构的演进历史
- 单体架构
- 垂直应用架构
- 分布式架构
- SOA架构
- 微服务架构
-
微服务架构的三大要素
- 服务治理:服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理
- 可观测性:日志采集、日志分析、监控打点、监控大盘、异常报警、链路追踪
- 安全:身份验证、认证授权、访问令牌、审计、传输加密、黑产攻击
服务:一组具有相同逻辑的运行实体 实例:一个服务中每个运行实体即为一个实例 实例与进程的关系:实例与进程之间没有必然对应关系,可以一个实例对应一个或多个进程。 集群:通常指服务内部的逻辑划分,包含多个实例。 常见的实例承载形式:进程、VM、k8s、pod等 服务间通信:对于单体服务,不同模块通信只是简单的函数调用;对于微服务,服务间通信意味着网络传输。
服务注册及服务发现
-
基本问题
- 服务间调用中,如何指定下游服务实例的地址?
-
简单方案
-
直接指定 ip:port?
- 没有任何动态能力
- 有多个实例下游实例怎么办?
-
使用 DNS?
- 本地 DNS 存在缓存,导致延迟
- DNS 没有负载均衡
- 不支持服务探活检查
- DNS 不能指定端口
-
-
服务注册发现
- 新增一个统一的服务注册中心,用于存储服务名到服务实例之间的映射关系
- 旧服务实例下线前,从服务注册中心删除该实例,下线流量
- 新服务实例上线后,在服务注册中心注册该实例,上线流量
-
微服务流量特征
-
统一网关入口
-
外网通信多数采用 HTTP,内网通信多数采用 RPC(Thrift, gRPC)
-