来电科技微服务治理落地实践|学习笔记(二)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 快速学习来电科技微服务治理落地实践

开发者学堂课程【来电科技微服务治理落地实践来电科技微服务治理落地实践】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/977/detail/14898


来电科技微服务治理落地实践

无损下线:

 image.png

根据常见的微服务开发框架,我们该如何解决无损下线的问题:

①Spring Cloud:需配合 Actutor,提前注销服务,并且及时刷新客户端缓存,等待流量停止再进行服务端下线逻辑

②Dubbo:需要开启 Qos 功能,进行提前注销服务。

以上都需要深入了解服务框架内部实现细节并要修改

不管是什么框架, SDK主要要做的三个步骤∶

①抽象出服务注销接口,并暴露给运维侧,配合发布系统进行。

②需要注意注册中心更新的实效性、以及及时刷新客户端的缓存

③等待流量停止后,再进行服务端下线,从而消除服务调用存在的报错时间

以 Dubbo 为例,关于无损下线一直是不断的,一直到Dubbo2.7.12时才具备,但是还有很多问题。当然,MSE服务治理能兼容2.5.x-2.7.x所有版本。

Dubbo 无损下线能力图:

image.png

无损上线:

image.png

在服务注册过程中,如果有一些异步资源要准备,可能Dubbo/SC服务需要做到延迟暴露。当流量过大时,服务要需要具有小流量预热的能力,流量需要缓慢增加。还有一些问题,比如Fastjson/Jetty低版本没有开启并行类加载,可能会导致请求报错、JVM JIT编译问题会引起cpu飙高、在应用刚启动时可能会出现日志异步化。

以上所有问题都处理完之后才能允许正常流量进入,在这个过程中,把它抽象为无损上线的过程。

 

三、来电科技微服务治理的选择

1.来电科技 MSE 全链路灰度最佳实践

image.png

来电科技选用 MSE 服务治理专业版实现无侵入的微服务治理能力,以上所有方案都不需要改变现有业务的架构。

通过 Java 应用的方式使得其系统具备可灰度、可观测、可回滚的安全变更三板斧的能力,满足了业务高度发展下的快速叠加及小心验证的诉求。

通过全链路灰度的方案:当前端请求进入时,通过Nginx转发,进入Gray机器之后,流量会自动打上Gray标,并且会往后优先找Gray应用,如果后面有Gray应用,它会到Gray应用;如果不存在Gray应用,会回到未打标。到未打标之后,后面有Gray应用,它会回到Gray,从而实现一个全链路灰度的能力。

Nginx控制灰度环境百分之十的流量,正式环境百分之九十的流量,针对百分之十的流量,可以实现日常的演练:故障演练以及新功能的验证。

这套方案同时支持Spring cloud和Dubbo,来电科技通过这个方案快速落地了全链路灰度的能力,从而使得应用发布上线更加稳定,也会避免一些安全生产的问,有效提升了线上的稳定性,从而保证了服务百分之九十九点九的可用率。

来电科技不仅用了全链路灰度的能力,它还使用了服务预热、离群实例摘除、精确发布、微服务治理、流量观测等能力。

 

四、最佳实践

1.无损上下线最佳实践

image.png

在MSE中,只需要控制台开启无损上下线的动态配置,将应用进行发布,就可以看到实时的流量曲线以及在这个过程中服务进行了哪些操作、当前处于哪个流程,提供一套完整的解决方案,并且不需要我们更改一行代码

2.服务发现高可用保护

(1)无服务发现高可用保护

网络抖动如CoreDNS异常等,导致与注册中心连接断开

注册中心Server异常,导致地址列表为空

注册中心变更过程中,有小概率返回空列表

Consumer订阅到空列表,业务中断报错

(2)开启服务发现高可用保护

Consumer 订阅到空列表,推空保护生效,丢弃变更,保障业务服务可用

image.png

当关闭服务开发高可用,会导致消费者找不到服务提供者地址,请求异常;如果服务开发高可用是开启的,即使注册中心销毁了,只要服务没有变更,在这个过程服务请求都是正常的。

关闭服务开发高可用保护:

image.png

开启服务开发高可用保护:

image.png 

下面我们进行分别演示:

image.png

回到我们刚刚讲的无损上线的相关知识点,我们抽象总结了应用初始化、预建连接、服务注册、通过readiness检查、小流量预热、正常流量进入等方法,当应用接进MSE之后并且控制台打开开关就会自动的具备以上能力。

以微服务引擎中的无损上下线为例,

image.png

在这里面,我们可以看到所有的实践记录,并且可以看到实时的流量信息。

在节点名称里找到一个无损下线成功的案例

 image.png

我们可以看到,在这个过程中首先是服务开始注册,在第一个请求进入之后,服务预热开始,因为我们设置的预热时长是112秒,到预热结束正好是112秒。流量是缓慢增加的,当Readiness检查通过并且预热结束、其他的pot开始滚动之后,流量开始下降,再往后就是流量均分达到稳态的情况,最后是先停止流量,流量停止之后,服务才开始下线。整个过程通过上述图片可以看出。

在控制台可以配置预热时长以及延迟注册时间,高级配置是设置预热曲线、服务预热关联滚动发布、微服务生命周期与k8s就绪检查对齐。

在控制台配置完成之后,还要在 spring-cloud-a 编辑启动探测,之后整个过程就可以实现。

下面我们来简单看一下开启服务开发高可用与没开的效果,首先,先演示关闭服务开发高可用保护:

当 coding s 是错误时,服务是正常的,当 coding s 恢复时,出现大量报错。原理是当连接断开时收到的是空地址推送,这时消费者会请求异常.

可以看到健康状态,超时之后,服务未下线

当 coding s 恢复时,流量没有任何损失,也没有出现大量报错

如果在生产上,不具备服务发现高可用保护的话,那在这个过程中,当 provider 与注册中心出现连接异常,即使消费者和注册中心都是正常的,服务还是会报错,对生产产生的影响是非常大的。

MSE 以无侵入的方式提供了全链路灰度、微服务流量治理的可观测等核心能力,以更加经济的方式、更加高效的路径帮助来电科技在云上快速构建起完整的微服务治理体系,有效的提升了线上稳定性,保障了服务百分之九十九点九的可用率。

客户也提到:MSE 服务治理帮助系统以很低的成本、无侵入的方式快速实现了全链路灰度的能力,进一步提升了系统的稳定性,让我们新需求的迭代更加安心。

最后我们也介绍了两个方案,一个是无损上下线,无损上下线通过产品化的方式可以在控制台上快速的配置上下线的规则并且实时的看到上下线的观测图。另一个是服务开发高可用保护,通过开启服务开发高可用可以实现注册中心异常的容灾保护,保障业务服务的可用性。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
23天前
|
弹性计算 持续交付 API
构建高效后端服务:微服务架构的深度解析与实践
在当今快速发展的软件行业中,构建高效、可扩展且易于维护的后端服务是每个技术团队的追求。本文将深入探讨微服务架构的核心概念、设计原则及其在实际项目中的应用,通过具体案例分析,展示如何利用微服务架构解决传统单体应用面临的挑战,提升系统的灵活性和响应速度。我们将从微服务的拆分策略、通信机制、服务发现、配置管理、以及持续集成/持续部署(CI/CD)等方面进行全面剖析,旨在为读者提供一套实用的微服务实施指南。
|
18天前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
19天前
|
算法 NoSQL Java
微服务架构下的接口限流策略与实践#### 一、
本文旨在探讨微服务架构下,面对高并发请求时如何有效实施接口限流策略,以保障系统稳定性和服务质量。不同于传统的摘要概述,本文将从实际应用场景出发,深入剖析几种主流的限流算法(如令牌桶、漏桶及固定窗口计数器等),通过对比分析它们的优缺点,并结合具体案例,展示如何在Spring Cloud Gateway中集成自定义限流方案,实现动态限流规则调整,为读者提供一套可落地的实践指南。 #### 二、
42 3
|
21天前
|
负载均衡 Java 开发者
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
深入探索Spring Cloud与Spring Boot:构建微服务架构的实践经验
64 5
|
17天前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
31 1
|
19天前
|
监控 安全 持续交付
构建高效微服务架构:策略与实践####
在数字化转型的浪潮中,微服务架构凭借其高度解耦、灵活扩展和易于维护的特点,成为现代企业应用开发的首选。本文深入探讨了构建高效微服务架构的关键策略与实战经验,从服务拆分的艺术到通信机制的选择,再到容器化部署与持续集成/持续部署(CI/CD)的实践,旨在为开发者提供一套全面的微服务设计与实现指南。通过具体案例分析,揭示如何避免常见陷阱,优化系统性能,确保系统的高可用性与可扩展性,助力企业在复杂多变的市场环境中保持竞争力。 ####
36 2
|
18天前
|
消息中间件 运维 API
后端开发中的微服务架构实践####
本文深入探讨了微服务架构在后端开发中的应用,从其定义、优势到实际案例分析,全面解析了如何有效实施微服务以提升系统的可维护性、扩展性和灵活性。不同于传统摘要的概述性质,本摘要旨在激发读者对微服务架构深度探索的兴趣,通过提出问题而非直接给出答案的方式,引导读者深入
37 1
|
19天前
|
负载均衡 监控 API
后端开发中的微服务架构实践与挑战
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势和面临的挑战,并通过案例分析提出了相应的解决策略。微服务架构以其高度的可扩展性和灵活性,成为现代软件开发的重要趋势。然而,它同时也带来了服务间通信、数据一致性等问题。通过实际案例的剖析,本文旨在为开发者提供有效的微服务实施指导,以优化系统性能和用户体验。
|
19天前
|
弹性计算 Kubernetes API
构建高效后端服务:微服务架构的深度剖析与实践####
本文深入探讨了微服务架构的核心理念、设计原则及实现策略,旨在为开发者提供一套系统化的方法论,助力其构建灵活、可扩展且易于维护的后端服务体系。通过案例分析与实战经验分享,揭示了微服务在提升开发效率、优化资源利用及增强系统稳定性方面的关键作用。文章首先概述了微服务架构的基本概念,随后详细阐述了其在后端开发中的应用优势与面临的挑战,最后结合具体实例,展示了如何从零开始规划并实施一个基于微服务的后端项目。 ####
|
16天前
|
Cloud Native API 持续交付
云原生架构下的微服务治理策略与实践####
本文旨在探讨云原生环境下微服务架构的治理策略,通过分析当前面临的挑战,提出一系列实用的解决方案。我们将深入讨论如何利用容器化、服务网格(Service Mesh)等先进技术手段,提升微服务系统的可管理性、可扩展性和容错能力。此外,还将分享一些来自一线项目的经验教训,帮助读者更好地理解和应用这些理论到实际工作中去。 ####
34 0