背景
传统微服务架构的缺点:基础设施层与业务代码耦合、第三方SDK语言相关性
通信治理难题:服务发现、负载均衡、协议转换、熔断降级、安全
关键词
Istio、Envoy、iptables、pod、sidecar、微服务通信与治理
解决痛点
1. 服务通信下沉到基础设施层,对微服务屏蔽掉服务通信的复杂度
2. 以一种更加通用和标准的方式提供通信和治理能力,屏蔽不同语言、平台的差异性
3. 服务治理标准化,减少服务治理标准不一致带来的转换成本,提升服务治理效率。
通信、安全、可观测性、流量控制
代价
改造成本、基础设施层引入新的运维复杂性、通信开销、集成难度、学习曲线陡峭
istio
DestinationRule定义服务子集,负载均衡,熔断降级策略等
trafficPolicy.loadBanlancer配置负载均衡
trafficPolicy.outlierDetection配置熔断策略
VirtualService定义路由规则,权重分配。
类别
参数
生产建议值
作用
负载均衡
simple: ROUND_ROBIN
默认
轮询(均匀分布)
simple: LEAST_CONN
高并发服务
选当前连接最少的实例
consistentHash
有状态服务
按 Header/Cookie 哈希保持会话
连接池熔断
tcp.maxConnections
100~500
防客户端压垮单实例
http.maxRequestsPerConnection
10(HTTP/1.1)
防连接复用不足
异常剔除
consecutive5xxErrors
3~10
错误阈值(根据业务容忍度)
maxEjectionPercent
≤50
避免全实例剔除导致服务不可用
baseEjectionTime
30s~5m
剔除时长(错误越多剔除越久)
http headers匹配请求头,fault delay和abort配置请求延迟和拒绝服务,routers配置路由指向的服务子集。
mirror 流量镜像
eBPF、Proxyless性能优化
k8s
pod: 若干个联系紧密的容器的集合,它们共享网络和文件系统,是k8s调度的最小单位。
services: 是对一组提供相同功能的pod的抽象,借助services,实现服务发现和负载均衡。
node:是pod运行的物理机或者虚拟机。