# sg-govern **Repository Path**: sunflower-git/sg-govern ## Basic Information - **Project Name**: sg-govern - **Description**: 服务治理(Service Govern):服务调度监控(QPS、耗时和并发)、依赖链、流量限制、权值变更、访问控制、配置信息 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2016-07-05 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #服务治理(sg-govern),全称为Service Govern! ##一、项目源码结构 sg-admin:服务治理管理端,提供一个可视化的web治理管理端 sg-core:服务治理核心模块 sg-demo-consumer:服务消费者Demo sg-demo-provider:服务供应者Demo sg-monitor-api:服务监控API ##二、服务监控原理 sg-admin中的AbstractPushMonitor和FailbackPushMonitor实现了sg-monitor-api中的IMonitor接口来提供一个远程的rpc服务接收器,在每一个需要统计的节点上周期性调用rpc远程服务,来将需要汇总的服务全部推送至sg-admin,在sg-admin中将各个节点上收集来的所有数据进行持久入库。 监控的数据持久化至数据库中,通过使用SQL来进行加工。 ##三、网络性能-KPI-KQI-QoS-QoE及映射关系 ### 网络性能 网络性能是指网络或网络的部分提供用户间通信机制的能力,是保障QoE和QoS需求的基础。 ### KPI KPI(Key Performance Indication)即关键业绩指标,通常是网络层面的可监视可测量的重要参数,是现代企业中受到普遍重视的业绩考评方法。 ### KQI KQI(Key Quality Indicators)即关键质量指标,是主要针对不同业务提出的贴近用户感受的业务质量参数,是业务层面的关键指标,可能是不同业务或应用的质量参数。 ### QoS QoS(Quality of Service)即服务质量,是决定用户满意程度的服务性能的综合效果。 ### QoE QoE(Quality of Experience)即用户体验,是终端用户对移动网络提供的业务性能的主观感受。QoE=网络QoS+内容+人的体验。 ### 映射关系: ![简单监控](http://hi.csdn.net/attachment/201106/27/0_13091636958ijX.gif) 随着用户规模的增长,不断的重构、线上运行、探索与沉淀,逐步形成了当前平台的架构。如下图所示。横向、典型的三层架构;纵向、以业务为驱动,积累沉淀了众多技术规范、基础组件,丰富完善全栈业务监控。依托完善的监控体系,衍生出相应的服务治理机制。 ![简单监控](https://segmentfault.com/img/bVsk00) ## 四、解决方案 MQ队列、分布式缓存(Redis)、配置中心(Disconf)、注册中心(Zookeeper)、RPC框架、数据库中间件:MyCat ### 消息队列(MetaQ) 消息队列是分布式应用间交换信息的一种技术。为了解核心业务及辅助业务,我们引入消息队列,将搜索团队、大数据团队需要的业务数据定期全量同步,实时增量更新。既隔离了业务间的强耦合,又保障了数据的及时性。 ### 服务分类 服务分为两类: 基础服务:该类不依赖其他服务,业务逻辑简单,仅提供基础业务逻辑,例如应用管理服务; 聚合服务:该类聚合多个基础服务,形成相对复杂的业务逻辑,例如应用搜索服务。 ### 灰度发布 灰度发布的流程是这样的,首先是一个节点的发布,一个节定发布之后,跑几天看一下,如果没有什么问题,灰度放量,扩散到几个节点,这个集群里面选几个节点,让这些用户去用,如果还是OK,没有什么问题,我们就扩散到全部的节点。 在没有灰度发布之前,开发人员的状态大概是这样的,因为以前发布的话,基本上都是深夜,都是夜深人静的时候发布,看是否有异常的情况。引入了灰度之后,开发人员就是这样一种状态。 ## 五、最优线程计算 Ncpu=CPU的数量 Ucpu=牧宝CPU的使用率,0 ≤ Ucpu ≤ 1 W/C=等待时间与计算时间的比率 Nthread=Ncpu*Ucpu*(1+W/C)