菜鸟 Cpaas 平台微服务治理实践

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 在使用mse的云产品之后,对paas平台层来说,避免很多重复功能的建设。在我们业务侧实际落地的远不止如上列举的场景,比如:服务优雅停机、注册中心等能力,均解决了业务侧的微服务治理上的难点问题。在实现了对项目环境及灰度发布的能力开发之后,我们接下来对服务离群摘除、应用服务列表透出、服务鉴权、本地联调部署等能力做重点关注,在降低业务侧服务运维成本、微服务可观测、服务可用性方面与MSE团队加强合作,帮助业务侧解决微服务治理中的痛点。

背景


CPaaS(cainiao platform as a service)是以公有云为基座,结合先进的云原生理建设的企业级DevOps的PaaS平台,CPaaS主要目前主要支持的场景:菜鸟生态的云上研发运维、菜鸟公有云SaaS化的能力透出、菜鸟商业化输出支撑,部署到客户的公有云、专有云环境。

在服务了菜鸟多家生态公司及部分商业化输出的产品过程中,深入客户业务场景,解决业务研发及部署痛点的过程中,积累了一些宝贵的经验。这里我们主要对规范云上研发流程,提升研发效率为目标建设的环境治理(云上项目环境)及减少线上版本发布风而险建设的灰度平台的实现过程进行展开介绍。


目标


1、通过项目环境,为多分支并行开发场景提供流量隔离及快速联调的能力。

2、生产环境实现服务灰度发布(金丝雀发布),降低变更风险。

3、微服务应用具备优雅上下线能力,避免启停过程中带来的服务调用出错问题。


调研阶段


微服务流量管控


我们首先调研了开源自建的方案。在调研时我们发现,开发和维护开源 SDK方案的成本非常大。需要对 Spring Cloud 和 Dubbo 这些微服务框架以及 RockeMQ 这类消息中间件非常了解,才能准确地找到各个框架的增强点进行定制化开发。

除此之外,业务方使用的微服务框架版本也是跨度很大,维护这些不同版本的微服务框架适配,也需要投入大量的精力。

最重要的一点是,使用开源 SDK 自建的方案,开发业务的同事,需要在应用的开发和部署运维的流程都感知到 SDK 的存在,对开发、构建、运维的侵入性很大,很难进行推广。

后来我们也找到了阿里集团负责中间件的同事寻求支持,了解到中间件团队已经推出了一款面向公有云的微服务治理产品 MSE,于是我们进行了调研。

MSE作为公有云的微服务治理产品,具备云上的服务管控、微服务测试、标签路由、离群摘除、优雅上下线等能力,与我们的诉求完全吻合,并且通过agent方式实现,对应用代码无侵入,更适合PaaS平台对业务应用增加扩展。

(图 1.1)

经过与MSE团队同时的几次电话和会议沟通之后,逐渐对MSE产品有了一些功能上的认知。其中在微服务治理中,我们结合实际的业务需求,落地实现了下面MSE的部分能力。

(图 1.2)


落地场景


项目环境

在多分支开发的场景下,我们通常需要同时部署多个分支。但是多个分支同时部署之后,如何将开发自测流量与日常环境的测试流量分开,以及如何让各个分支拥有自己独立的流量,都是需要解决的问题。

流量隔离

调研和验证MSE的标签路由的能力之后,实现思路:通过标签路由能力,将流量进行隔离。

相同应用的不同分支,使用不同的deployment实现对版本和容器标签的管理。图2.1中core应用项目环境c1和项目环境c2均使用独立于日常环境的容器单独部署,各自的路由标签为joint1和joint2。通过对流量携带流量标记的方式,完成项目环境流量的控制。

接入层应用则通过K8S-Ingress实现流量路由,只需要在请求流量的请求头中携带 x-mse-tag的标签,则可以将流量路由到对应标签的入口层应用。入口应用设置标签传递的开发,可将流经此容器的流量打标传递到上有服务。如此反复,则实现流量在整个调用链路的封闭。

(图 2.1)

服务测试

在研发过程中,除了分支之间的相互干扰需要隔离之外,还需要从业务侧研发的角度解决服务测试的效率问题。MSE平台提供了微服务测试平台,可以快速的帮助开发者实现服务自测,并且我们通过集成方式集成到自身的paas平台中,免去自身重建的痛苦。

测试平台支持按照服务提供者IP的维度进行服务测试,刚好与流量隔离相互契合,可以对自身关注的项目环 境的应用容器发起服务测试完成服务自测。

图(2.2)

灰度环境

灰度环境的目的是为了降低线上应用版本发布的风险,减小问题爆炸半径。同样可以通过MSE提供的标签路由功能基础上完成对流量灰度的实现。


想要流量实现灰度,那么需要对流量的所有入口实现流量路由。通常我们所感知的流量入口包括:HTTP接入层、RPC下游调用、MQ服务消费、Task任务调度。当前在MSE的灰度能力支持范围内,微服务云网关、金丝雀发布、MQ灰度均可以组合实现。

当然,这里我们只实现了HTTP接入层+RPC的灰度能力,因为历史的原因,在接入层使用了另一个接入层(MSHA的MSFE,本质上是一个tengine)实现接入层的灰度。但这里丝毫不影响与MSE的灰度能力完成流量的串联,这得益于mse产品自身拥有良好的对其他产品的兼容性。我们只需要在入口层的应用上设置流量经过此容器时带标,即可完成灰度流量的传递。


(图 2.3)

在实际的业务灰度场景中,我们总结了常见的四种灰度场景,均通过MSE完成并实现。

(图 2.4)


未来规划


在使用mse的云产品之后,对paas平台层来说,避免很多重复功能的建设。在我们业务侧实际落地的远不止如上列举的场景,比如:服务优雅停机、注册中心等能力,均解决了业务侧的微服务治理上的难点问题。

在实现了对项目环境及灰度发布的能力开发之后,我们接下来对服务离群摘除、应用服务列表透出、服务鉴权、本地联调部署等能力做重点关注,在降低业务侧服务运维成本、微服务可观测、服务可用性方面与MSE团队加强合作,帮助业务侧解决微服务治理中的痛点。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
22天前
|
负载均衡 测试技术 持续交付
高效后端开发实践:构建可扩展的微服务架构
在当今快速发展的互联网时代,后端开发扮演着至关重要的角色。本文将重点探讨如何构建可扩展的微服务架构,以及在后端开发中提高效率的一些实践方法。通过合理的架构设计和技术选型,我们可以更好地应对日益复杂的业务需求,实现高效可靠的后端系统。
|
7天前
|
Kubernetes 安全 Java
构建高效微服务架构:从理论到实践
【4月更文挑战第9天】 在当今快速迭代与竞争激烈的软件市场中,微服务架构以其灵活性、可扩展性及容错性,成为众多企业转型的首选。本文将深入探讨如何从零开始构建一个高效的微服务系统,覆盖从概念理解、设计原则、技术选型到部署维护的各个阶段。通过实际案例分析与最佳实践分享,旨在为后端工程师提供一套全面的微服务构建指南,帮助读者在面对复杂系统设计时能够做出明智的决策,并提升系统的可靠性与维护效率。
|
23天前
|
消息中间件 敏捷开发 运维
构建高效可靠的微服务架构:策略与实践
随着现代软件开发的复杂性增加,微服务架构逐渐成为企业解决大型应用系统分解、敏捷开发和持续部署问题的有效手段。本文深入探讨了构建一个高效且可靠的微服务架构的关键策略,包括服务的合理划分、通信机制的选择、数据一致性保障以及容错处理。通过分析这些策略在具体案例中的应用,我们旨在为开发者提供一套可行的微服务设计及实施指南。
128 6
|
3天前
|
Kubernetes 监控 Cloud Native
构建高效云原生应用:基于Kubernetes的微服务治理实践
【4月更文挑战第13天】 在当今数字化转型的浪潮中,企业纷纷将目光投向了云原生技术以支持其业务敏捷性和可扩展性。本文深入探讨了利用Kubernetes作为容器编排平台,实现微服务架构的有效治理,旨在为开发者和运维团队提供一套优化策略,以确保云原生应用的高性能和稳定性。通过分析微服务设计原则、Kubernetes的核心组件以及实际案例,本文揭示了在多变的业务需求下,如何确保系统的高可用性、弹性和安全性。
10 4
|
15天前
|
消息中间件 安全 API
构建高效微服务架构:策略与实践
【4月更文挑战第1天】在数字化转型的浪潮中,微服务架构已成为企业追求敏捷、可扩展和灵活部署的重要技术手段。本文将深入探讨如何通过合理的设计原则和先进的技术栈,构建一个高效的微服务系统。我们将剖析微服务设计的核心要点,包括服务的划分、通信机制、数据一致性以及安全性问题,并结合案例分析,展示如何在现实世界中应用这些策略以提升系统的可靠性和性能。
|
15天前
|
设计模式 API 持续交付
构建高效微服务架构:从理论到实践
在当今快速迭代和部署的软件开发环境中,微服务架构已成为一种流行的设计模式,它允许开发团队以模块化的方式构建、维护和扩展应用程序。本文将深入探讨微服务的核心概念,包括其定义、优势、挑战以及如何在实际项目中实施。我们将通过一个实际案例来展示如何将传统的单体应用拆分成一系列独立、松耦合的服务,并通过容器化、服务发现、API网关和持续集成/持续部署(CI/CD)等技术手段来管理这些服务。
|
23天前
|
消息中间件 缓存 API
微服务架构下的API网关性能优化实践
在现代的软件开发中,微服务架构因其灵活性和可扩展性被广泛采用。随着服务的细分与增多,API网关作为微服务架构中的关键组件,承担着请求路由、负载均衡、权限校验等重要职责。然而,随着流量的增长和业务复杂度的提升,API网关很容易成为性能瓶颈。本文将深入探讨API网关在微服务环境中的性能优化策略,包括缓存机制、连接池管理、异步处理等方面的具体实现,旨在为开发者提供实用的性能提升指导。
|
25天前
|
缓存 负载均衡 监控
构建高效微服务架构:API网关的作用与实践
【2月更文挑战第31天】 在当今的软件开发领域,微服务架构已成为实现系统高度模块化和易于扩展的首选方法。然而,随着微服务数量的增加,确保通信效率和管理一致性变得尤为重要。本文将探讨API网关在微服务架构中的核心角色,包括其在请求路由、安全性、负载均衡以及聚合功能方面的重要性。我们将通过具体案例分析,展示如何利用API网关优化后端服务,并讨论实施过程中的最佳实践和常见挑战。
|
26天前
|
消息中间件 敏捷开发 数据库
构建高效微服务架构:后端开发的现代实践
【2月更文挑战第30天】 在数字化转型的浪潮中,微服务架构已成为企业追求敏捷开发、持续交付和系统弹性的关键解决方案。本文将深入探讨如何构建一个高效的微服务架构,包括关键设计原则、技术选型以及实践中的挑战与应对策略。通过分析具体案例,我们旨在为后端开发人员提供一套实用的指南,帮助他们在不断变化的技术环境中保持竞争力。
|
26天前
|
消息中间件 监控 安全
探讨后端开发中的微服务架构设计与实践
在当今快速发展的互联网时代,后端开发领域的微服务架构成为越来越多企业关注和采用的技术方案。本文将深入探讨微服务架构的设计原则、实践经验以及常见挑战,帮助读者更好地理解和应用微服务架构在后端开发中的作用。