云原生GIS关键技术——服务网格强势来袭

发布时间:2021 年 05 月 19 日  文/云产品研发中心 王伊湋 周世杰
导读:云原生GIS以稳定且弹性的系统架构和智能的故障恢复机制被大家认知,逐渐成熟后,我们踏上了对云原生GIS+服务网格的探索之旅。

云原生 GIS 是基于容器化技术、微服务架构和自动化编排技术搭建的高可用、高并发、高弹性的云 GIS 计算架构,它是集服务发布、门户定制、数据存储分析、运维管理为一体的 GIS 解决方案。云原生 GIS 不单单拥有全面的 GIS 能力,还能保证系统更稳定运行,实现细粒度的弹性伸缩与灵活部署。由于其架构的特殊性,单体应用被解耦,由多个小而专一的微服务组成,常常以多服务协作的方式提供应用能力。

  云原生 GIS 架构上突破的同时,也带来了运维管理方面的变化,为了全面提升云原生 GIS 的运维管理能力,我们考虑从以下三方面入手:

  1、服务更新。直接更新服务往往会因测试不全面导致更新后用户体验不佳,特别是多个服务同时更新,难以把控产品质量。服务网格技术引入前(左)服务网格技术引入后(右)

  2、通信监测。服务通信会产生无数的请求,因为无法监测服务请求状态,当出现请求失败、请求超载等状况时,故障服务不能及时定位。

  3、流量监测。服务内部通信如同“暗箱”一样,无从得知流量的方向与顺序,难以运维。

    要满足以上需求,就需要标准化的流量管理与监测工具,以强化运维管理手段,因此,经过层层筛选与预研,服务网格技术进入了我们视野。

 服务网格的概念与作用

先一起了解一下服务网格技术。服务网格(ServiceMesh)是用于控制微服务访问、监控服务流量的软件基础结构层,它加入了代理机制(称为“sidecar”),与微服务并行运行。sidecar 取代了原微服务直接通信,由sidecar 完成服务间的路由,并且全程跟踪记录。

  服务网格在服务连接和流量控制方面有较大提升,它侧重于管理服务内部通信,能够可视化通信链路,让用户更好地观察服务动态,避免多服务环境下的通信冗余。

  服务网格在云原生 GIS 中的应用

  服务网格技术应用于云原生 GIS 中,主要实现了灰度发布、服务度量、服务追踪三个功能。

  • 灰度发布——助力服务更新

  1、功能解释

  灰度发布是实现服务新旧版本间平滑过渡的一种发布方法,利用灰度发布,管理员可以在新版本上线前收集用户反馈、修复版本漏洞、把控产品质量、提升用户体验。配合服务的局部升级能力,可只对单个服务进行灰度发布,实现微服务的滚动更新,完善上线流程,防止大批量服务更新带来的风险。

  2、用户价值

  当项目涉及定制服务或上线修复漏洞的新版本时,直接上线存在一定的风险,比如上线后影响其他功能正常使用,或因为测试不足导致用户体验不佳。基于此,SuperMap 云原生 GIS推出局部升级结合灰度发布的方法,即对定制的服务或者修复了漏洞的某个微服务进行局部更新上线,通过灰度发布策略筛选出部分用户体验新版本,其余用户仍沿用当前稳定版本,确保服务稳定后再全面上线。

  3、产品中的应用

  云原生 GIS 支持两种灰度发布的策略,第一种是通过设置流量比例来控制使用新旧版本服务的用户比例。如下图所示,当管理员设置服务灰度发布的流量比例为 25% 时,会随机分配25% 的用户试用新版本 v2,剩下 75% 的用户仍使用现有版本v1;第二种策略是通过设置 HTTP 请求头与匹配值来区分用户、选取用户使用不同服务,例如,设置 User-Agent 请求头的匹配值,来识别高版本的浏览器,让使用高版本浏览器的用户先行体验新版本 v2 的功能。

  • 服务度量——完善通信监测

  1、功能解释

  服务度量是指对服务通信进行统计分析,以数据的形式展现 GIS 站点与微服务的通信状态,帮助用户作出合理的预测、评估、控制和改善。

  2、用户价值

  服务通信质量在很大程度上影响系统的运行速度与稳定性,当您 GIS 站点的响应变得缓慢,检查后却发现服务均正常运行,系统资源也很充足,苦于没有其他手段监测服务的通信状态,通信出现问题时难以排查;有了服务度量,您可以监测每个服务的多项通信指标,做到精准的通信故障定位。

  3、产品中的应用

  GIS 站点的度量指标包括全站点请求量、请求成功率、HTTP/HTTPS 负载、gRPC 负载、TCP 负载等;微服务的度量指标包括发送请求量、响应请求量、客户端工作负载、服务工作负载等。通过这些指标,管理员能够更全面地掌握站点内服务的通信状态,在状态欠佳时及时发现并解决。例如,访问高峰期随着访问人数增多、负载增加,服务响应逐渐变慢,这时可通过查看服务的 HTTP 负载,找出请求量过大的服务,对服务节点进行横向扩展,解决高并发致使的响应缓慢。

  • 服务追踪——流量监测可视化

  1、功能解释

  服务追踪是指通过监测 GIS 站点内部服务的请求与调用,可视化服务通信链路,让服务链路变得透明。服务追踪实现了分布式链路追踪,可跟进参与请求的服务和参与顺序,使每个请求的步骤清晰可见。

  2、用户价值

  由于微服务架构下的服务众多,内部服务调用复杂(一个请求需调用多个服务),相比传统单体应用,微服务架构下的通信问题更加难以定位,异常也更难追溯。服务追踪可以追溯所有发生过请求关系的服务,全局掌控系统内部实时服务请求,并将请求细化到每一个参与的微服务,从而理清微服务间的请求关系,在请求异常时能够准确、快速定位,让异常“有迹可循”。

  3、产品中的应用

  服务追踪分为 GIS 站点追踪与单个微服务追踪。GIS 站点追踪记录了整个 GIS 站点一定时间内被调用过的服务,以及服务的请求关系,统计了被调用的服务数量、应用数量、链路数量等信息,支持查看服务流量的进出详情。例如,站点拓扑图中的红色链路表示该链路的服务请求失败率高于 20%,用户可通过排查红色链路,找出参与请求的服务,并通过查看服务日志,查明失败原因,对故障服务进行修复。

  单个微服务追踪记录了该微服务发生请求的时间点以及请求耗时,每一条请求均可查看追踪详情,即请求过程中参与请求的微服务以及它们的参与顺序。例如,使用搜索过滤功能,列出服务节点 HTTP 状态码为 400 的链路,在详情页面查看导致请求失败的微服务,并对该微服务一键重新部署,解决通信故障。

  小结

  综上所述,为了提升云原生 GIS 的运维管理能力,我们引入了服务网格技术。利用灰度发布结合局部升级的方法,让服务上线更加平滑、稳定。服务度量丰富了监测指标,让访问流量可观测。链路追踪可视化服务请求,让异常请求“有迹可循”

版权所有© 1997-2019 中国科学院地理信息产业发展中心 《超图通讯》编辑部 京ICP备11032883号-6