《云计算加速开源创新》——基于开源体系的云原生微服务治理实践与探索(下)

简介: 《云计算加速开源创新》——基于开源体系的云原生微服务治理实践与探索(下)

 更多精彩内容,欢迎观看:

《云计算加速开源创新》——基于开源体系的云原生微服务治理实践与探索(上)https://developer.aliyun.com/article/1223963?spm=a2c6h.13148508.setting.18.68ac4f0eE1VQvG



HTTP协议在Service Mesh架构上运行良好,但Dubbo协议在Sidecar网关上存些一些问题。

 

其一,元数据的位置:HTTP协议中元数据位于报文最前端,而Dubbo协议中元数据位于报文末端,因此需要先解析报文才能定位到元数据位置。

 

其二,序列化问题:解析报文需要对报文进行反序列化处理,目前Envoy支持Dubbo默认序列化协议。但这种方式会产生额外开销,而且Dubbo服务使用的序列化器复杂,甚至还有一些团队为进一步降低报文大小,使用了压缩算法,网关解析难度大。

 image.png

 

Dubbo 3推出了Triple,这是一种使用基于HTTP/2的gRPC并通过请求标头实现元数据信息传递的通信协议,也是Dubbo 3中推荐使用的服务通信协议

 

Triple协议适用于Envoy框架,且能轻松接入Service Mesh。Dubbo版本升级也并不复杂。

 image.png

 

由于gRPC的PB序列化格式,Triple协议无法直接使用。尽管Triple协议对PB兼容性较好,但PB要求先写契约再生成代码,而Dubbo要求先写代码,不存在契约,数据模型也是与PB对象完全不同的POJO格式。

 

为了连接POJO和PB对象,Triple协议设计了Wrapper。将原POJO对象序列化处理得到二级数据后,传入到Wrapper用PB进行序列化。

 

然而,这种方式不仅会导致内存占用变大,而且会引发更多的GC。多次GC和重复序列化将会增大CPU负载。

 image.png

 

为解决Triple协议带来的问题,项目给gRPC添加了自定义序列化器。这样不仅可以实现流式的序列化,也可以为用户提供和原生Dubbo一样的使用体验。

 

其他语言想要调用这种gRPC服务,只需要具备这种自定义序列化器即可,默认的自定义序列化器JSON可以被大部分语言解析。

 image.png

 

治理方面,Service Mesh使用Istio和Envoy作为基础设施,通过Istio读取K8S中CRD数据,并生成配置推送给Envoy。

 

因此,保存在自研服务治理系统里内的实例数据、配置数据必须全部转化成CRD格式,同步到K8S以供Istio处理。

 

Operator作为翻译机包含了大量模型转换逻辑,能够将配置模型翻译成CRD模型。针对一些复杂的功能,项目通过Envoyfilter或者Envoy的二次开发,添加自定义的Envoyfilter进行实现。

 

目前,所有的常用功能都已完成对齐,整体功能覆盖率超90%。数千个线上应用完成接入,进入后续接入推广工作。

 

三、 云原生微服务产品的未来发展趋势

 image.png

 

Service Mesh提供的都是通用能力,如分组、路由、流量控制、负载均衡等。这些功能本身没有语义,一线的业务研发和运维人员理解起来存在一定困难。

 

而且,该产品功能与现存治理系统的功能存在差异。为了给一线人员提供更好的微服务治理体验,需要将实际运维需求和底层控制数据联系起来。

 image.png 

目前,社区内Dubbo Mesh的研发工作也在积极进行,其做法跟携程云原生微服务治理框架类似。通过单独的控制面将配置数据写到K8S里,将实例数据通过MCP进行同步。

 image.png

 

另外,新的开源产品OpenSergo也在研发中。据官方介绍,该项目力图打造一套通用的面向云原生的微服务治理标准,并且提供一系列的API和SDK实践。

 

目前,多家大型互联网企业和开源社区正在共同推进该项目的进行,希望能够完成从服务治理到云原生基础设施的全链路生态覆盖。

相关文章
|
1天前
|
监控 API 持续交付
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第8天】在当今快速演进的软件开发领域,微服务架构已经成为实现敏捷开发、持续交付和系统弹性的关键模式。本文将探讨构建一个高效且可靠的微服务系统所必须的策略和最佳实践。我们将从服务的划分与设计原则出发,讨论如何通过容器化、服务发现、API网关以及断路器模式来优化系统的可伸缩性和鲁棒性。此外,我们还将涉及监控、日志管理以及CI/CD流程在确保微服务架构稳定运行中的作用。
|
2天前
|
敏捷开发 持续交付 API
构建高效微服务架构:后端开发的现代实践
【5月更文挑战第8天】 在数字化转型的浪潮中,微服务架构已成为企业追求敏捷开发、持续交付和系统弹性的关键解决方案。本文将深入探讨微服务的核心概念,包括其设计原则、优缺点以及如何在后端开发中实现高效的微服务架构。我们将通过实际案例分析,展示微服务如何帮助企业快速适应市场变化,同时保持系统的可维护性和扩展性。
|
2天前
|
监控 云计算 开发者
探索云计算中的无服务器架构:从概念到实践
无服务器架构作为云计算领域的新兴技术,正在以其高效、灵活的特性吸引着越来越多的开发者和企业。本文将深入探讨无服务器架构的概念及其在云计算中的应用,通过实际案例展示如何利用无服务器架构构建可靠、可扩展的应用系统。
|
3天前
|
弹性计算 Cloud Native 安全
云原生架构的未来展望:如何引领企业转型与创新
【5月更文挑战第7天】随着云计算技术的不断发展,云原生架构已经成为企业数字化转型的关键驱动力。本文将深入探讨云原生架构的优势、挑战以及未来发展趋势,为企业提供一种全新的技术视角,以实现更高效、灵活和可扩展的业务运营。
|
3天前
|
监控 负载均衡 数据安全/隐私保护
探索微服务架构下的服务网格(Service Mesh)实践
【5月更文挑战第6天】 在现代软件工程的复杂多变的开发环境中,微服务架构已成为构建、部署和扩展应用的一种流行方式。随着微服务架构的普及,服务网格(Service Mesh)作为一种新兴技术范式,旨在提供一种透明且高效的方式来管理微服务间的通讯。本文将深入探讨服务网格的核心概念、它在微服务架构中的作用以及如何在实际项目中落地实施服务网格。通过剖析服务网格的关键组件及其与现有系统的协同工作方式,我们揭示了服务网格提高系统可观察性、安全性和可操作性的内在机制。此外,文章还将分享一些实践中的挑战和应对策略,为开发者和企业决策者提供实用的参考。
|
4天前
|
存储 安全 网络安全
云端防御:云计算环境中的网络安全策略与实践
【5月更文挑战第6天】 随着企业和个人日益依赖云服务,数据存储、处理和流通的边界变得模糊。这种转变不仅带来了灵活性和成本效益,也引入了新的安全挑战。本文探讨了云计算环境下网络安全的关键问题,包括身份验证、数据加密、访问控制和威胁监测等。通过分析当前云安全的最佳实践和面临的挑战,我们提出了一系列战略性措施以增强云基础设施的安全性,并确保信息资产的保密性、完整性和可用性得到保护。
30 5
|
4天前
|
Kubernetes Cloud Native 持续交付
构建高效云原生应用:Kubernetes与微服务架构的融合
【5月更文挑战第6天】 在数字化转型的浪潮中,企业正迅速采纳云原生技术以实现敏捷性、可扩展性和弹性。本文深入探讨了如何利用Kubernetes这一领先的容器编排平台,结合微服务架构,构建和维护高效、可伸缩的云原生应用。通过分析现代软件设计原则和最佳实践,我们提出了一个综合指南,旨在帮助开发者和系统架构师优化云资源配置,提高部署流程的自动化水平,并确保系统的高可用性。
26 1
|
4天前
|
API 持续交付 开发者
构建高效微服务架构:策略与实践
【5月更文挑战第6天】随着现代软件系统的复杂性增加,微服务架构逐渐成为企业开发的首选模式。本文深入分析了构建高效微服务架构的关键策略,并提供了一套实践指南,帮助开发者在保证系统可伸缩性、灵活性和稳定性的前提下,优化后端服务的性能和可维护性。通过具体案例分析,本文将展示如何利用容器化、服务网格、API网关等技术手段,实现微服务的高可用和敏捷部署。
|
5天前
|
缓存 NoSQL Java
构建高性能微服务架构:Java后端的实践之路
【5月更文挑战第5天】在当今快速迭代和高并发需求的软件开发领域,微服务架构因其灵活性、可扩展性而受到青睐。本文将深入探讨如何在Java后端环境中构建一个高性能的微服务系统,涵盖关键的设计原则、常用的框架选择以及性能优化技巧。我们将重点讨论如何通过合理的服务划分、高效的数据存储策略、智能的缓存机制以及有效的负载均衡技术来提升整体系统的响应速度和处理能力。
|
5天前
|
监控 持续交付 数据库
构建高效可靠的微服务架构:策略与实践
【5月更文挑战第5天】 在当今快速发展的软件开发领域,微服务架构已成为构建可扩展、灵活且容错的系统的首选模式。本文将探讨如何通过一系列经过验证的策略和最佳实践来构建一个高效且可靠的微服务系统。我们将深入分析微服务设计的核心原则,包括服务的细粒度划分、通信机制、数据一致性以及容错处理,并讨论如何利用现代技术栈来实现这些目标。文章将提供一套综合指南,旨在帮助开发者和架构师在保证系统性能的同时,确保系统的稳健性。
23 4