当前位置:文档之家› 新浪微博服务治理框架

新浪微博服务治理框架


SID
PSID Annotation
span ID,调用链中的一个节点,从请求开始到请求结束,生成方式同ReqID。
Caller spanID 该调用节点的类别,有API client/API server/RPC Client/RPC Server/其他中间件定 义 接口名称 开始时间和请求时间
Service Name Start/Process Time
服务化框架
监控平台
监控指标UI呈现 报警子系统 流量切换 服务治理平台 服务扩容 服务发布
RPC 数据聚合平台 Motan Registry 上报 资源日志 Push Motan Client
Cache Service … Config Server
上报
接口日志
上报 RPC日志
Push
Client
调用链标准化日志
ReqID SID PSID Annotation Service Name InterfaceNa me Start Time Process time Node IP 16位UUID RPC Node IP
Field ReqID
Description 请求序列号,在调用链入口生成,考虑使用节点IP地址+IDC机房编码+序列号生 成
10.5.2.1 IDC1: Motan Registry IDC2: 10.6.2.1 10.6.2.2 10.6.2.1 10.5.2.1 10.5.2.2 Push Motan Client 切换后数据流 10.5.2.1
10.6.2.1
问题:基于IDC的流量切换策略是否够用?是否需要增加按20/80比例的流量分发策略?
微博平台服务化框架
卫向军
Agenda
• • • • • • 服务化框架 服务标准化 日志标准化 数据聚合平台 服务治理平台 监控平台
微博平台架构
业务架构
接口层 内容/关系/通讯 技术架构 Jersey框架 监控 接口 RPC Tr a c e 服务依赖 服务治理
Dubbo 组合 服务 原子 短链 用户 关系 Config 私信 … MCQ MessageQu eue
Field Annotation Service Name Avg QPS Min QPS Max QPS Sample Period Extension
备注:所有的分布式服务都可以使用这个标准化日志
数据聚合平台
分布式服务状态流式处理流程
RPC Server Cluster Node 1 status Node 2 status Node 3 status
数据聚合平台
调用链状态
服务动态依赖
+
服务静态依赖
服务动态依赖
服务一致性校验
服务动态依赖
HBase
服务治理平台
服务依赖
功能:
• 静态依赖表(Motan Registry) • 动态依赖表(调用链分析) • 动态+静态依赖表一致性检查
作用
• 指导如何拆分现有的业务或者复杂的RPC服务。 • 依赖某一RPC服务的所有接口和服务,下线服务时使用 • 当某一服务异常时,通知受影响的服务负责人 • 服务升级时,通知受影响的服务负责人
服务标准化
服务模型
服务注册
+
ServiceType(atomic/ composite) DependentServices
1. Service Provider在注册时增加ServiceType,标识该服务是Atomic还是Composite, atomic服务不依赖于任何其他服务。 2. Service Provider在注册时增加DependentService,标识该服务直接依赖的所有 服务。 3. 上面两项用于服务治理平台中服务依赖的静态分析。 4. 能否将Web 接口注册为服务?(个人觉得短期不需要)。
流量切换
功能:
• 将流量从一个Ine级别流量切换
作用
• 机房发生故障或者维修时,快速切换 • 某一机房的RPC服务故障时,快速切换能力 • 方便服务的扩容与升级,为服务的灰度发布提供基 础能力
流量切换
流量切换 控制流
切换前数据流 IDC1+IDC2 IDC1
服务扩容与缩容
扩容
• 准备扩容服务机器,验证ready后。 • 通过服务治理平台,增加扩容服务节点,调整状 态为预览。
缩容
• 按照IDC/rack/machine规则将需要下掉的服务流量 分流到其他机器上,然后对服务缩容。
发布和灰度
通过标识服务节点状态,达到灰度发布目的
服务更新后,选 择1个节点预览 服务客户端,调 度策略可以给不 同的节点分配不 同的权重 选择部分节点做 灰度发布 服务客户端,调 度策略可以给不 同的节点分配不 同的权重 放量到全部服务 节点 服务客户端,调 度策略可以给不 同的节点分配不 同的权重
API 接口(A)
RPC(B)
RPC(C)
CS SR CS SR
RPC(D)
CR
SS
CS CR SS
SR
RPC(E)
CR CR SS SS
调用链模型(2)
CS
SR
CR
SS
• 一次服务调用由4个采集点组成,分别是:CS(客户端发送)、SR(服 务端接收)、SS(服务端发送)、CR(客户端接收)。 • CS和CR共同组成Client的一个Span,在当前RequestContext下生成该 SpanID,同时从RequestContext下获取Parent Span。 • 在SR和SS处理之前,RequestContext暂存的Span将被替换成上一步生成 的SpanID, SR和SS将生成另外一个Span。
异常
Error 调用链 SLA 服务状态
发布和灰 度 服务扩容 与缩容 流量切换
资源层
MC
Redis
MyS QL
HBa se
Cache Service SSD Service
Key-List Service
核心内容
业务架构 • 服务拆分为原 子服务与组合 服务 • 平台服务标准 化定义 技术架构 • Trace系统与基 础技术组件改 造 • Dubbo/Config Service与服务 治理改造 • 定义标准化日 志格式 • 定义标准化分 布式服务状态 日志 监控 • 接口状态:分 析日志 • 服务状态:分 析服务日志 • Error/Exception: 分析日志 • 调用链:分析 日志 服务治理 • 服务依赖:动 态分析法+静态 分析法 • 服务扩容:服 务报警+手动/ 自动扩容 • 流量切换:不 同的流量切换 策略 • 服务发布与灰 度:TBD
Node IP
处理该Span请求的机器IP地址
Exception/Error标准化日志
ReqID 16位UUID SID PSID Type Exception/Error Content
Field ReqID SID
Description 请求序列号,在调用链入口生成,考虑使用节点IP地址+IDC机房编码+序列 号生成 span ID,调用链中的一个节点,从请求开始到请求结束,生成方式同 ReqID。
数据聚合平台
接口调用链 RPC调用链 资源调用链 调 用 链 信 息 N1 Status N2 Status N3 Status 服 务 静 态 状 态
+
Service运行状态
+
Motan Registry
Service统计信息
HBase
分布式服务依赖
资源调用链 RPC调用链 接口调用链 Motan Registry
服务标准化
定义服务级别 1为核心服务 定义服务XXX
2为非核心服 务
日志标准化
日志采集点
采集点 用于何种统计项
调用链出入口 Exception
调用链 Exception、调用链
Error
服务节点日志 TBD
Error、调用链
服务健康状态
调用链模型(1)
User
CS SR CS CR SR SS
预览 1
灰度放量 2
全量放量 3
谢谢!
PSID
Type Content
Caller spanID
Exception or Error Exception/Error 内容
备注:仅当Exception和Error发生在调用链上时,才生成ReqID,SID,PSID,Type
服务状态标准化日志
Annotation RPC Service Name InterfaceN ame Description 该调用节点的类别,有API client/API server/RPC Client/RPC Server/其他中间件定义 接口名称 平均的QPS 最小的QPS 最大的QPS 采样间隔 扩展用字段 Avg QPS Min QPS Max QPS Node IP Sample Period Extension
相关主题