这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天
微服务架构介绍
架构演变
由于互联网发展、硬件设施发展、需求复杂······
单体 -> 垂直应用架构 -> 分布式架构 -> SOA架构(从上至下) -> 微服务架构(从下至上)
微服务架构核心要素
服务治理:服务注册、服务发现、负载均衡、扩缩容、流量治理······
可观测性:日志采集、分析、监控打点、异常报警、链路追踪······
安全:身份验证、认证授权、访问令牌、黑产攻击······
微服务架构原理及特征
基本概念
服务(Service):一组具有相同逻辑的运行实体(运行同样的代码)
实例(Instance):一个服务中,每个运行实体即为一个实例
集群(Cluster):服务内部的逻辑划分,包含多个实例
服务间通信:服务与服务之间是通过网络传输的;与之相对的,对于单体服务,不同模块间的通信只是简单的函数调用
服务注册及发现
不能简单的用ip地址进行网络通信 -> 新增一个统一的服务注册中心,用于存储服务名到服务实例的映射
服务实例上线及下线过程
流量特征
统一网关入口
内网通信多采用RPC
网状调用链路
核心服务治理功能
服务发布(deployment)
一个服务升级,运行新的代码的过程
难点:服务不可用、服务抖动、服务回滚
蓝绿发布:简单、稳定,但是需要两倍资源
灰度发布(金丝雀发布):精细的切分流量、回滚
流量治理
微服务架构下,可以基于地区、集群、实例、请求等维度,对端到端流量的路由路径进行精确的控制
负载均衡 (Load Balance)
稳定性治理
线上服务总是会出问题的,但是这与程序的正确性无关
because of
网络攻击、流量徒增、机房断电、光纤被挖、机器故障、网络故障······
典型稳定性治理功能:
限流 + 熔断 + 过载保护 + 降级
字节跳动服务治理实践
对远程函数的调用 —— 重试
避免偶发的错误,提高SLA (Service-Level Agreement)