应用量化时代 | 微服务架构的服务治理之路 (2)

服务本身需要依赖不同的特性,构建不同的agent,来搜集服务运行时产生的数据。数据过滤针对采集的数据按照一定的格式规范进一步加工处理,例如基于kafka对原始的日志数据进行标准化处理后,导入日志系统。

 

数据聚合需要对独立的服务数据进行聚合操作,例如服务调用链呈现。

 

通过服务量化能够清晰的记录服务运行时产生的所有数据,为服务跟踪呈现和服务管控策略制定并提供强有力的数据支撑。

 

追踪

追踪能够有效量化服务调用链路上发生的事情,具体来讲,可以划分为:服务间的链路跟踪和服务内部的方法调用链路跟踪。追踪的本质,不仅仅是为了呈现服务链路及服务路由信息,更重要的是呈现服务间请求,以及服务内部请求的响应延迟,异常反馈,能够快速定位服务以及服务内在代码存在的问题。

 

管控

管控依赖于量化采集的聚合数据。管控允许运维人员聚焦某个服务单元的运行时状态,为服务设定一定的控制策略,从而保证服务稳定可靠的运行。例如熔断策略,负载策略,流量控制,权限控制等。

 

规范

规范更多针对服务通信而言,例如通信协议规范,无论针对哪种协议,例如http,tcp,rpc等都能够提供相应的检测手段。与此同时,规范也能够清晰定义服务名称和管控策略,使得服务在不同环境之间进行迁移的时候,依旧平稳可靠。

 

综上所述,在服务单元遵循一定规范标准的前提下,基于服务单元数据量化、服务调用跟踪以及服务策略管控的方式,才能构建出符合要求的服务治理平台。

 

接下来,我们从纵深的角度考虑构建服务治理平台过程中涉及的技术理论基础。服务治理之所以困难,原因在于构建业务系统采用的技术栈成多元化的方式存在。从目前行业内采用的技术而言可以划分为三大学派:代码集成、agent探针、流量劫持

 

代码集成

代码集成往往需要业务开发人员的支持,在业务系统中嵌入数据采集代码,用来采集服务运行时服务产生的各种业务指标及性能指标,并将数据传输到云端治理平台。平台依据数据信息,通过配置动态下发,从而影响业务响应动态,完成服务治理功能。

优点:治理深入,端到端监控

缺点:维护繁琐,语言版本众多,影响业务性能

 

Agent探针

Agent探针是对代码集成的进一步提炼。Agent探针将需要集成的监控代码,高度提取、抽象、封装成可以独立集成的SDK,并且以“弱旁路”的方式与代码集成在一起,从而完成数据采集工作。云端治理平台,同样以采集的数据信息作为治理策略制定的依据,下发各种治理策略,从而达到服务治理功能。

优点:治理深入,端到端监控

缺点:语言版本众多,影响业务性能

 

流量劫持

流量劫持与前两者相比,与代码集成不同。它从网络通信作为切入点,以proxy的方式,代理业务单元所有的IN/OUT流量,并且proxy内部可以对请求数据进行一定的策略控制。从而完成服务通信的治理功能。

优点:无关语言差异性,维护简单

缺点:治理略浅,影响业务性能

 

综上所述,目前服务治理的技术栈或多或少都存在一些缺陷,在构建服务治理平台时往往需要采用结合的方式,才能做到物尽其才。

 

 

03 “百家争鸣”,成就未来

 

竞争成就未来。

 

从目前行业发展来看,微服务奠定了服务构建的基础方式,容器引擎以及编排技术解决了服务编排上线的困惑,下一个“兵家必争”的场景必将在服务治理。那目前行业内又有哪些项目聚焦在服务治理领域?

 

SpringCloud

SpringCloud作为Spring社区的重要布局之一,在微服务落地伊始就逐渐发力,当下已经成为Java体系下微服务框架的代名词,SpringCloud 以 Netfilx 全家桶作为初始化基础,为开发人员提供业务单元服务支撑框架的同时,也开发出一系列的服务治理SDK,供开发人员选用。在微服务发展背景下,SpringCloud可谓如日中天。

 

Dubbo

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjfjf.html