微博平台服务化框架卫向军Agenda•服务化框架•服务标准化•日志标准化•数据聚合平台•服务治理平台•监控平台微博平台架构业务架构内容/关系/通讯技术架构接口层Jersey框架监控服务治理私信短链资源层组合服务原子用户关系Config…DubboMCQMessageQueueMCRedisMySQLHBaseCacheServiceSSDServiceKey-ListServiceTrace接口RPC异常Error调用链SLA服务状态服务依赖发布和灰度服务扩容与缩容流量切换核心内容业务架构•服务拆分为原子服务与组合服务•平台服务标准化定义技术架构•Trace系统与基础技术组件改造•Dubbo/ConfigService与服务治理改造•定义标准化日志格式•定义标准化分布式服务状态日志监控•接口状态:分析日志•服务状态:分析服务日志•Error/Exception:分析日志•调用链:分析日志服务治理•服务依赖:动态分析法+静态分析法•服务扩容:服务报警+手动/自动扩容•流量切换:不同的流量切换策略•服务发布与灰度:TBD服务化框架监控平台监控指标UI呈现报警子系统服务治理平台流量切换服务扩容数据聚合平台接口日志RPC日志资源日志MotanClientMotanRegistry上报上报上报服务发布RPCPushClientConfigServerPush…CacheService服务标准化服务模型服务注册ServiceType(atomic/composite)DependentServices+1.ServiceProvider在注册时增加ServiceType,标识该服务是Atomic还是Composite,atomic服务不依赖于任何其他服务。2.ServiceProvider在注册时增加DependentService,标识该服务直接依赖的所有服务。太古神王净无痕上面两项用于服务治理平台中服务依赖的静态分析。4.能否将Web接口注册为服务?(个人觉得短期不需要)。服务标准化1为核心服务2为非核心服务定义服务级别定义服务XXX日志标准化日志采集点采集点用于何种统计项调用链出入口调用链ExceptionException、调用链ErrorError、调用链服务节点日志服务健康状态TBD调用链模型(1)CSSRCRSSCSSRCRSSCSSRCRSSCSSRCRSSAPI接口(A)RPC(B)RPC(C)RPC(D)RPC(E)UserCSSRCRSS调用链模型(2)CSSRCRSS•一次服务调用由4个采集点组成,分别是:CS(客户端发送)、SR(服务端接收)、SS(服务端发送)、CR(客户端接收)。•CS和CR共同组成Client的一个Span,在当前RequestContext下生成该SpanID,同时从RequestContext下获取ParentSpan。•在SR和SS处理之前,RequestContext暂存的Span将被替换成上一步生成的SpanID,SR和SS将生成另外一个Span。调用链标准化日志ReqIDSIDPSIDAnnotationServiceNameStartTimeProcesstimeNodeIP16位UUIDRPCInterfaceNameNodeIPFieldDescriptionReqID请求序列号,在调用链入口生成,考虑使用节点IP地址+IDC机房编码+序列号生成SIDSpanID,调用链中的一个节点,从请求开始到请求结束,生成方式同ReqID。我是一只妖银瞳的狐狸该调用节点的类别,有APIclient/APIserver/RPCClient/RPCServer/其他中间件定义我X,什么鬼接口名称Start/ProcessTime开始时间和请求时间NodeIP处理该Span请求的机器IP地址Exception/Error标准化日志ReqIDSIDPSIDTypeContent16位UUIDException/ErrorFieldDescriptionReqID请求序列号,在调用链入口生成,考虑使用节点IP地址+IDC机房编码+序列号生成SIDspanID,调用链中的一个节点,从请求开始到请求结束,生成方式同ReqID。诡家仙黑岩内容备注:仅当Exception和Error发生在调用链上时,才生成ReqID,SID,PSID,Type服务状态标准化日志AnnotationServiceNameAvgQPSMinQPSMaxQPSSamplePeriodExtensionRPCInterfaceNameNodeIPFieldDescriptionAnnotation该调用节点的类别,有APIclient/APIserver/RPCClient/RPCServer/其他中间件定义ServiceName接口名称AvgQPS平均的QPSMinQPS最小的QPSMaxQPS最大的QPSSamplePeriod采样间隔Extension扩展用字段备注:所有的分布式服务都可以使用这个标准化日志数据聚合平台分布式服务状态流式处理流程RPCServerClusterNode1Node2Node3statusstatusstatusMotanRegistryN1Status数据聚合平台N2StatusN3StatusService运行状态服务静态状态+RPC调用链接口调用链资源调用链调用链信息+Service统计信息HBase分布式服务依赖MotanRegistry数据聚合平台服务静态依赖+RPC调用链接口调用链资源调用链调用链状态服务一致性校验HBase服务动态依赖服务动态依赖服务动态依赖服务治理平台服务依赖功能:•静态依赖表(MotanRegistry)•动态依赖表(调用链分析)•动态+静态依赖表一致性检查作用•指导如何拆分现有的业务或者复杂的RPC服务。•依赖某一RPC服务的所有接口和服务,下线服务时使用•当某一服务异常时,通知受影响的服务负责人•服务升级时,通知受影响的服务负责人流量切换功能:•将流量从一个IDC打到别的IDC•基于IDC/rack/machine级别流量切换作用•机房发生故障或者维修时,快速切换•某一机房的RPC服务故障时,快速切换能力•方便服务的扩容与升级,为服务的灰度发布提供基础能力流量切换MotanClient流量切换MotanRegistryIDC1:10.5.2.110.5.2.2IDC2:10.6.2.110.6.2.210.5.2.110.5.2.110.6.2.110.6.2.1控制流切换前数据流切换后数据流IDC1+IDC2IDC1问题:基于IDC的流量切换策略是否够用?是否需要增加按20/80比例的流量分发策略?Push服务扩容与缩容扩容•准备扩容服务机器,验证ready后。•通过服务治理平台,增加扩容服务节点,调整状态为预览。缩容•按照IDC/rack/machine规则将需要下掉的服务流量分流到其他机器上,然后对服务缩容。发布和灰度预览灰度放量全量放量通过标识服务节点状态,达到灰度发布目的服务更新后,选择1个节点预览服务客户端,调度策略可以给不同的节点分配不同的权重123选择部分节点做灰度发布服务客户端,调度策略可以给不同的节点分配不同的权重放量到全部服务节点服务客户端,调度策略可以给不同的节点分配不同的权重谢谢!