这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
架构
单体架构 垂直应用架构 分布式架构 SOA架构 微服务架构
微服务架构介绍
彻底服务化
优势:
- 开发效率
- 业务独立设计
- 自下而上
- 故障隔离
劣势:
- 治理、运维难度
- 观测挑战
- 安全性
- 分布式系统
服务治理:
- 服务注册
- 服务发现
- 负载均衡
- 扩缩容
- 流量治理
- 稳定性治理
可观测性:
- 日志采集
- 日志分析
- 监控打点
- 监控大盘
- 异常报警
- 链路追踪
安全:
- 身份验证
- 认证授权
- 访问令牌
- 审计
- 传输加密
- 黑产攻击
微服务
服务: 一组具有相同逻辑的运行实体
实例: 一个服务中心,每个运行实体即为一个实例
集群: 通常指服务内部的逻辑划分,包含多个实例
常见的实例承载: 进程、v8
服务注册与发行
服务注册与发现是为了解决微服务中服务间通信地址难以确定的问题。
想象一个服务 A 试图通过网络请求调用服务 B 的某个接口,他应该如何确定服务 B 的网络地址?
如果我们通过硬编码的方式在服务 A 指定网络地址,灵活性低暂且不说,对于具有多个实例的服务 B,一个网络地址只能指定到同一个服务实例中,
这会导致服务 A 的所有实例全部向服务 B 的单一实例进行网络请求,这明显是不符合我们负载均衡要求的。
我们可以尝试使用配合 DNS 的方式,不直接传入 IP 地址,而是传入域名,通过修改 DNS 服务中域名的 IP 地址来解决上文中灵活性的问题。
但这依然产生了问题,首先负载均衡问题仍未得到解决,其次本地 DNS 由于存在缓存,因此我们没办法做到服务更改的实时切换,亦无法支持服务实例得探活检查;
最后,这种方式由于端口依然是写死在代码里的,我们依然没有办法自定义端口号。