5月27-28日,GOTC全球开源技术峰会在上海如约举办,Sermant也在GOTC中进行亮相,并参与了活动展台、快闪演讲等活动,吸引众多开发者深入了解Sermant的无代理微服务框架的非侵入、高性能、插件化的核心优势,并对探索实践和落地表现出极大兴趣。
本次GOTC峰会也邀请了Linux基金会执行董事、LF AI & Data 基金会执行董事,CNCF中国区总监、来百度、华为、腾讯、火山引擎、红帽、Intel、VMWare、F5、微软、开源中国等企业的全球开源重磅嘉宾出席。在峰会上,Sermant对5月23号社区发布的v1.1.0-beta版本进行首次公开宣讲,也让行业内专家和更多的开发者了解Sermant以及新版本带来的新特性和改进点。
此次发布的v1.1.0-beta版本对服务治理的可观测性,流量治理能力,以及可用性治理能力做出了很大提升,下面对这些提升点进行详细说明。
社区地址:https://github.com/huaweicloud/Sermant
官网地址:https://sermant.io
可观测性提升
新版本中,针对可观测性,建立了对Sermant运行状态及服务治理能力状态的监控机制,用户能够更直观,更清晰的看到Sermant进行服务治理的过程,可用于快速了解Sermant运行状态及当前已生效的服务治理能力,使服务治理有迹可循。
在新版本中,用户通过访问Backend,可在浏览器中直接看到Sermant运行状态,服务治理能力触发的事件以及Sermant服务运行期间产生的警告、错误等日志信息,特别的是,用户可以在Backend界面中配置钉钉和飞书webhook通知,当服务运行过程中有异常发生,能够第一时间将异常事件发送至相关人员知悉。
下图对可观测性进行展示,图中可清晰看出服务运行期间不同等级的事件数量,并且列出一段事件内的事件相关信息。
Backend模块还具有事件管理能力,以下图片展示了事件的部分搜索能力以及webhook通知能力。
(1)根据服务名查询事件的能力
(2) 根据事件级别查询的能力
(3)webhook通知的能力
流量治理能力提升
系统规则流控和负载自适应流控
Sermant在上一版本中对流控能力有以下不足:
l 缺乏对服务器本身资源的规则配置
l 规则具有延迟性
针对上述不足,Sermant新版本中对流控能力做了提升,引入基于系统规则的流控能力以及基于负载的自适应流控能力。
系统规则流控是指对系统规则指标实时检测,当系统规则某一项指标超出阈值时,对流量进行控制,目前支持以下五种系统指标:
l 系统负载
l CPU使用率
l 平均响应时间
l 并发线程数
l QPS
负载自适应流控根据系统规则流控中的负载指标,增加了自适应的能力,自适应是指当前流量的控制需要根据系统过去一段时间内资源消耗情况进行判断,下图展示部分自适应流控能力的测试数据:
(1)下图展示了应用随着请求压力的增加,响应时间的变化曲线。可以看出,自适应流控可以显著提高并发下请求的响应时间。
(2)下图展示了应用在固定请求压力下,系统负载资源的变化曲线。可以看出,自适应流控可以明显降低负载资源的损耗。
路由规则模型统一和链路染色
以往版本中,路由能力存在基于不同内容匹配流量的规则数据格式不统一和路由能力不便于扩展的缺陷,所以新版本对路由规则配置能力提升,不同的路由能力采用同一套数据模型。
通过使用新版本的路由能力,用户可以基于同一套数据结构来适配不同的匹配规则,极大的简化了规则配置。
下图展示流量染色的过程:
当客户端client发起携带特征的请求调用应用App_1时,App_1携带的Sermant对符合路由规则的入口流量进行染色,即增加流量标记,根据请求特征进行分流后,进入后端的微服务应用,流量标记会随着请求调用一直传递下去。
链路染色即对请求流量进行颜色标记,并且将标记跟随着链路一直传递下去。结合流量路由与流量染色能力,可以实现全链路灰度、多环境隔离等场景。
可用性治理能力提升
离群实例摘除
在服务调用过程中,为了解决下游实例异常导致业务不稳定,服务调用失败的问题,新版本增加了离群实力摘除能力,通过检测应用实例的可用性,当下游服务出现异常时,可以动态调整下游服务实例列表。
下图展示Sermant离群实例摘除能力:
当App_1的下游服务App_2,App_3,App_4的实例出现异常时,Sermant会将异常实例从下游实例例表中去除,保证服务能够调用成功。
通过使用离群实例摘除服务治理能力,检测服务提供端的状态来动态调整服务消费端的实例发现,避免在运行过程中服务消费端因服务提供端状态异常而导致降低性能降低和可用性受损的状况,从而提升业务的稳定性和服务质量。
同可用区域优先调用
当应用部署在多个机房时,可能会出现跨机房互相调用的场景,这会导致网络时延增加。Sermant新版本提供了同可用区优先调用的能力,开启后,Consumer将优先调用同机房的Provider,降低网络时延。
下图展示同可用区域优先调用能力:
当应用App_1调用下游实例App_2时,App_2的下游实例分布在az1和az2,当App_2对下游发起调用时,az1和az2的下游都有可能被访问,当采用Sermant同az优先调用能力后,会优先调用az1的下游实例,保证调用低时延,提高用户体验。
总结
本文主要介绍了Semrnat v1.1.0-beta版本为用户提供的新特性和优化点,帮助大家更清楚的了解新版本提供的能力,以及如何更好的使用这些能力。
未来Sermant还将提供不限于以下针对Sermant-agent的提升及更多基于JavaAgent的微服务治理能力:
l Sermant-agent将提供动态挂载的能力,这将为一些运维态服务接入服务治理能力带来便利。
l Sermant-agent将提供内部事件通知机制,让服务治理插件可以感知Sermant-agent及其他插件的状态,以做出动态调整。
l 在架构升级场景(使用Springboot注册插件)中支持Webflux客户端。
l 支持标签跨线程传递,在各类路由场景中可以在异步调用中传递标签。
结束语
Sermant作为专注于服务治理领域的字节码增强框架,致力于提供高性能、可扩展、易接入、功能丰富的服务治理体验,并会在每个版本中做好性能、功能、体验的看护。
开发者也可以加入到Sermant社区,参与相关功能的讨论和共建。
• Sermant 官网:https://sermant.io
• GitHub 仓库地址:https://github.com/huaweicloud/Sermant