# nerver-governor **Repository Path**: chenld/nerver-governor ## Basic Information - **Project Name**: nerver-governor - **Description**: 为微服务提供一个错综复杂的服务治理,治理粒度达到每一个神经元(方法),故称之为微服务神经治理。关键词:微服务(Micro Service)、神经网络(Neural Network)、服务治理(Service Governor)、过滤机制(Filter)、权限机制(Oauth)、监控机制(Monitor)、路由机制(Route)、熔断机制(Fuse)、容错机制(Fault)、服务降级机制(Degrade)、重试/超时机制(Retry)、流量控制机制(Bandwidth)。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2016-05-20 - **Last Updated**: 2020-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README #微服务神经治理(nerver-governor) 为微服务提供一个错综复杂的服务治理,治理粒度达到每一个神经元(方法),故称之为微服务神经治理。 关键词:微服务(Micro Service)、神经网络(Neural Network)、服务治理(Service Governor)、过滤机制(Filter)、权限机制(Oauth)、监控机制(Monitor)、路由机制(Route)、熔断机制(Fuse)、容错机制(Fault)、服务降级机制(Degrade)、重试/超时机制(Retry)、流量控制机制(Bandwidth)。 ##场景一:依赖风险 在复杂的分布式架构的应用程序有很多的依赖,都会不可避免地在某些时候失败。高并发的依赖失败时如果没有隔离措施,当前应用服务就有被拖垮的风险。 例如:一个依赖30个SOA服务的系统,每个服务99.99%可用。 99.99%的30次方 ≈ 99.7% 0.3% 意味着一亿次请求 会有 3,000,00次失败 换算成时间大约每月有2个小时服务不稳定. 随着服务依赖数量的变多,服务不稳定的概率会成指数性提高. 解决方案:对依赖做隔离 依赖隔离措施: 1.使用命令模式Command包装依赖调用逻辑,每个命令在单独线程中/信号授权下执行。 2.可配置依赖调用超时时间,超时时间一般设为比99.5%平均时间略高即可.当调用超时时,直接返回或执行fallback逻辑。 3.为每个依赖提供一个小的线程池(或信号),如果线程池已满调用将被立即拒绝,默认不采用排队.加速失败判定时间。 4.依赖调用结果分:成功,失败(抛出异常),超时,线程拒绝,短路。 请求失败(异常,拒绝,超时,短路)时执行fallback(降级)逻辑。 5.提供熔断器组件,可以自动运行或手动调用,停止当前依赖一段时间(10秒),熔断器默认错误率阈值为50%,超过将自动运行。 6.提供近实时依赖的统计和监控 ##一、过滤机制(Filter) 对所有请求进行分层过滤,保证最后进入微服务群的是合法的的请求 ##二、权限机制(Oauth) 对数据格式进行校验 ##三、监控机制(Monitor) 对统一接入的请求进行统一监控 ##四、路由机制(Route) 针对所有请求进行规则路由,实现软Nginx、F5的功能 ###路由规则: + 服务分发: 如:/goods/** → http://10.45.23.50:8080/goods/** ##五、熔断机制(Fuse) 针对失败率达到一定程度的服务进行定期熔断(到期轴周期性重试恢复)和永久熔断的控制 ###熔断指标: + fuseState:熔断状态,默认为false表示未熔断,当触发熔断后会自动设置为true,恢复后又设置为false + errRate:错误率阀值(%),默认为错误率超过50%,则触发熔断 + fuseTime:每次熔断时间间隔,默认熔断60秒 + retryCycle:设置熔断到期后重试恢复周期,默认每隔10秒重试一次(成功则恢复,否则永久重试下去) + recover:设置熔断是否恢复,默认为true表示需要恢复 ##六、容错机制(Fault) 对执行失败的服务进行容错转移,提供二级容错(用于最坏情况)。 ###熔错指标: + groupKey:分组KEY + cmdKey:命令KEY + fallbackMethod:一级容错方法名称 + fallback2Method:二级容错方法名称,常用于最快的情况,如直接执行mock等 + extendProp:扩展点命令资源 + ignoreExceps:指定需要忽略的异常类 + triggerWatch:指定观察到的模式 ##七、服务降级机制(Degrade) 对非核心服务失败的情况,执行服务QoS降级,直接返回null/本地Mock/抛异常 ##八、重试/超时机制(Retry) 对调用方法进行周期性重试调度,对容错调度的方法进行周期重试 ##九、流量控制机制(Bandwidth,或称为带宽) 针对同一个服务调度的TPS限制、并发数限制进行限制,超过则快速拒绝