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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 《云计算加速开源创新》——基于开源体系的云原生微服务治理实践与探索(上)

一、 携程微服务产品的发展历程 image.png

 

携程微服务产品起步于2013年。最初,公司基于开源项目ServiceStack进行二次开发,推出.Net平台下的微服务框架CServiceStack。

 

2014年,公司推出Java平台下同CServiceStack完全互通的自研微服务框架Baiji和第一代服务注册中心。该服务注册中心后续经历多次重构,目前使用的已是第四代产品。

 

2017年,公司正式引进开源产品Dubbo,推出整合携程治理能力的CDubbo框架。该框架最初基于Dubbo 2.5.4版本进行二次开发,经历多次版本升级后,目前使用Dubbo 2.7.7版本。

 

2020年,公司正式开始探索落地Service Mesh项目。目前,相关产品已经在生产环节正式落地,正在进行接入推广工作。

image.png

 

携程微服务产品情况复杂,主要在于以下四点

 

线上同时运行着三种微服务框架产品。

同时采用HTTP和Dubbo两种通信协议。

采用完全自研的基础设施,包括注册中心和配置中心。

现存8000多个线上服务,实例数超过10万个。

image.png

 

随着研发的深入,我们团队主要遇到了以下三点问题

 

维护多个功能类似的中间件产品工作量较大,保证产品之间功能对齐需要花费大量的精力。

 

由于产品以SDK公共依赖包的形式集成在业务应用内,进行版本升级需要业务方配合,推动升级比较困难,版本长尾问题严重。

 

由于团队工作精力和技术栈的限制,只有少数几个语言平台上存在SDK支持,不利于小众语言用户使用微服务产品。

 

二、 携程的云原生微服务架构设计

image.png

 

由于线上集群已初具规模,如何平滑过度和迁移框架成为关键问题。彻底抛弃现有基础设施,一步到位实现全面云原生,不仅实施难度较大,项目周期也比较长。

因此,项目决定采用“小步快走”的方式。首先保证代码完全向后兼容,其次保证整体架构支持业务应用迁移,提升接入容错率。

 image.png

项目进行架构设计时,遇到了三个关键的问题。

 

数据权威问题

 

常见的Service Mesh实践以K8S为准则,将所有的数据保存在K8S内,但平台现有数据大部分保存在自研的注册中心和配置中心内。

 

有方案提出采用两条推送路的方式,云内数据保存在K8S内,云外数据保存在现有注册中心里,通过外部工具或组件实现双向同步。但双向同步复杂度较高,既要保证数据的准确性和实时性,也要保证同步不成环。

 

因此,出于架构简便性考虑,项目最终选择保持注册中心数据权威地位不变,通过外部组件将数据写入K8S。

 

边界划分问题

 

目前的项目部署体系是一个Region内包含多个Zone,一个Zone内又包含多个K8S集群,集群之间网络互通。但由于故障隔离的需要,数据最好保持在Zone内收敛,使实例信息不需要进行跨Zone同步。

 

Zone内收敛存在的问题是当调用方发起跨Zone调用时,需要经过网关进行中转。这种调用方式和现有的调用链路存在差异,会提高计算复杂度。

 

因此,项目最终选择保持现有工作模式不变,使得调用方能够获取Region内所有的Zone服务实例,保持数据在Region内透明。

 

技术选型问题

 

过去,项目研发产品大部分采用自研模式,通过整个团队成员协作完成开发工作,而依托开源社区能够更容易地产出优秀产品。

 

因此,项目最终选择基于开源产品进行二次开发。

image.png

目前所使用的Service Mesh架构设计,也被称为“渐进性”架构,主要有三个方面的特点。

 

开源方面:选择Istio和Envoy作为Service Mesh的基础设施。

 

实例和配置同步方面:由新开发的SOA Operator负责将存储在注册中心和配置中心中的数据写入K8S。

 

同时,该程序也会把K8S集群内服务提供方的数据写入注册中心,使得K8S集群外用户也能够正常读取服务数据。并且,该服务不需要SDK支持,由SOA Operator直接完成注册和发现,任何语言都可以方便地接入微服务产品体系。

 

使用方面:K8S集群外的应用仍然使用过去的交互方式,通过SDK和注册中心进行通信。

 

K8S集群内的应用,如果使用SDK,检测到Sidecar存在之后,SDK会自动地关闭服务治理功能,使用特殊的host进行请求。如果不存在SDK支持,接入Mesh可以直接使用HTTP Client,继续使用特殊的host发起请求。

 image.png

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

《云计算加速开源创新》——基于开源体系的云原生微服务治理实践与探索(下)https://developer.aliyun.com/article/1223962?groupCode=tech_library

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
8天前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
1天前
|
Cloud Native 安全 Docker
云原生技术在现代应用部署中的实践与思考
本文深入探讨了云原生技术如何在现代应用部署中发挥关键作用,并提供了具体的代码示例来展示其实现。通过分析云原生的核心概念和优势,我们将了解如何利用这些技术来提高应用的可扩展性、可靠性和安全性。文章还将讨论云原生技术的未来发展趋势,以及如何将其应用于实际项目中,以实现更高效和灵活的应用部署。
|
1天前
|
监控 持续交付 API
深入理解微服务架构:从设计原则到实践应用
深入理解微服务架构:从设计原则到实践应用
|
8天前
|
Cloud Native 安全 API
云原生架构下的微服务治理策略与实践####
—透过云原生的棱镜,探索微服务架构下的挑战与应对之道 本文旨在探讨云原生环境下,微服务架构所面临的关键挑战及有效的治理策略。随着云计算技术的深入发展,越来越多的企业选择采用云原生架构来构建和部署其应用程序,以期获得更高的灵活性、可扩展性和效率。然而,微服务架构的复杂性也带来了服务发现、负载均衡、故障恢复等一系列治理难题。本文将深入分析这些问题,并提出一套基于云原生技术栈的微服务治理框架,包括服务网格的应用、API网关的集成、以及动态配置管理等关键方面,旨在为企业实现高效、稳定的微服务架构提供参考路径。 ####
31 5
|
6天前
|
Kubernetes API Docker
构建高效后端服务:微服务架构的深度实践与优化####
本文深入探讨了微服务架构在现代后端开发中的应用,通过剖析其核心概念、设计原则及实施策略,结合具体案例分析,展示了如何有效提升系统的可扩展性、可靠性和维护性。文章还详细阐述了微服务拆分的方法论、服务间通信的最佳实践、以及容器化与编排工具(如Docker和Kubernetes)的应用技巧,为读者提供了一份全面的微服务架构落地指南。 ####
|
8天前
|
弹性计算 Kubernetes Cloud Native
云原生技术的实践与思考
云原生技术的实践与思考
23 2
|
9天前
|
运维 Kubernetes Cloud Native
云原生技术在现代应用架构中的实践与挑战####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在实际项目中的应用案例,分析了企业在向云原生转型过程中面临的主要挑战及应对策略。不同于传统摘要的概述性质,本摘要强调通过具体实例揭示云原生技术如何促进应用的灵活性、可扩展性和高效运维,同时指出实践中需注意的技术债务、安全合规等问题,为读者提供一幅云原生技术实践的全景视图。 ####
|
5天前
|
负载均衡 Cloud Native 持续交付
云原生时代的微服务架构:优势、挑战与实践
云原生时代的微服务架构:优势、挑战与实践
14 0
|
5天前
|
存储 监控 负载均衡
构建高效微服务架构:服务治理与监控的实践
构建高效微服务架构:服务治理与监控的实践
|
8天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
下一篇
无影云桌面