系统架构设计 -- 微服务架构原理和治理实践 分布式架构 、SOA面向服务架构、微服务架构原理特征、核心服务治理、流量治理、负载均衡
微服务架构原理与治理实践
1. 微服务架构介绍
-
系统架构演变历史:
-
分布式架构
抽出业务无关的公共模块,但是服务模块 bug 会导致全站瘫痪,调用关系复杂
-
SOA 架构
面向服务, 服务注册与发现,但是整个系统设计是中心化,需要从上至下设计,重构困难
-
微服务架构
彻底的服务化,业务独立设计,自下而上,故障隔离,但是治理,运维难度增加,以及安全性挑战。
核心要素:
-
服务配置和治理
服务注册、服务发现、负载均衡、扩缩容、流量治理、稳定性治理
-
链路追踪和监控(可观测性)
日志采集、日志分析、监控打点、监控大盘、异常报警、链路追踪
-
安全
身份验证、认证授权、访问令牌、审计、传输加密、黑产攻击
-
2. 微服务架构原理及特征
2.1 基本概念
-
服务(service)
一组具有相同逻辑的运行实体。
-
实例(instance)
一个服务中,每个运行实体即为一个实例。
-
实例与进程的关系
实例与进程之间没有必然对应关系,可以一个实例可以对应一个或多个进程(反之不常见)。
-
集群(cluster)
通常指服务内部的逻辑划分,包含多个实例。
-
常见的实例承载形式
进程、VM、k8s pod ……
-
有状态/无状态服务
服务的实例是否存储了可持久化的数据(例如磁盘文件)。
-
服务间通信
HTTP/ RPC/Thrift
2.2 服务注册与发现
-
DNS – 一个域名可以注册多个不同的 IP
但是 DNS 不支持负载均衡(一般选择第一个IP)、不支持服务实例探活检查 ,域名无法支持配置端口(一个服务占了一个端口)
-
服务注册中心
基于DNS 思想,新增一个中间层服务注册中心,用于存储服务名到服务实例的映射。
服务发现会实时刷新
2.3 流量特征
统一网关入口、内网通信多数采用RPC(二进制形势传输)
3. 核心服务治理功能
3.1 服务发布
-
难点
服务不可用
服务抖动
服务回滚
-
如何发布
-
蓝绿部署 – 先升级一个集群,再切换
简单,稳定,但是有一半资源不可用
-
-
灰度发布(金丝雀发布)-- 加一个新服务,再减一个老服务
但需要不停更新注册表
3.2 流量治理
流量可以基于地区、集群、实例、请求等维度,对端到端流量的路由路径进行选择。
3.3 负载均衡
负责分配请求再每个下游实例上的分布
常见的 Load Balance 策略:
- Round Robin
- Random
- Ring Hash
- Least Request
3.4 稳定性治理
网络攻击、流量突增、机房故障等
治理方案:
-
限流
-
熔断
熔断冷却,过段时间,会再次请求重连
-
过载保护
cpu 过载,拒绝服务。
-
降级
保证重要的服务进行处理,等级低的服务被拒绝
4. 服务治理实践
4.1 重试
重试可以避免点偶发的错误,提高 SLA(Service-Level Agreement), 但默认不用
-
降低错误率
假设单次请求的错误概率为 0.01,那么连续两次错误概率则为 0.0001, -
降低长尾延时
对于偶尔耗时较长的请求,重试请求有机会提前返回。 -
容忍暂时性错误
某些时候系统会有暂时性异常(例如网络抖动),重试可以尽量规避。
-
避开下游故障实例
一个服务中可能会有少量实例故障(例如机器故障),重试其他实例可以成功。
图片均来自字节青训营课程,博客作为自己学习记录,如有侵权,麻烦联系删除。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhggjjig
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13