【直播】微服务治理技术的原理介绍|学习笔记(二)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 快速学习【直播】微服务治理技术的原理介绍

开发者学堂课程【微服务治理技术进阶【直播】微服务治理技术的原理介绍】学习笔记,与课程紧密联系,让用户快速学习知识。  

课程地址:https://developer.aliyun.com/learning/course/1033/detail/15310


【直播】微服务治理技术的原理介绍


2.应用场景

·日常/开发/项目/测试环境隔离

构造日常、开发、项目、测试等多套环境的“泳道”,每个项目环境都有唯一的一个项目标签,流量带上这个项目标签后会路由到该项目环境,否则会去主干环境。如果没有这套机制,开发环境要进行物理隔离,这就需要部署整套微服务架构,成本非常高。

·全链路灰度发布

线上所有应用部署灰度版本,灰度流量全部进入灰度版本,正常流量进入生产版本。灰度版本只针对灰度流量验证,有效减少风险。云上客户安x就有这样的场景,要灰度发布 N 个应用,想灰度流量在这 N 个应用的灰度版本之间路由。

·高可用同机房优先路由

业务高可用部署后,服务调用如果跨机房,会带来额外的调用延迟。开启同机房优先路由后,让 Consumer 服务调用优先选择相同机房的 Provider,降低 rt。

·全链路压测

直接使用线上环境压测,让压测流量的 DB 操作落库到影子表,Redis落到影子KEY,MQ 落到影子 TOPIC。如果没有路由能力,需要搭建一套仿真的线上环境用于压测,成本直线上升。用线上环境配合流量控制能力可以实现О机器成本,0维护成本完成全链路压测。

其实是有很多应用场景的知识,比如日常开发项目,测试环境等隔离只要简单的构造多套环境的一个泳道,并且给每个环境都打开一个唯一的项目标签,流量带上项目标签或者会自动的路由到对应的一个项目环境中,否则会回到主线的极限环境中,如果没有这套机制,要进行多套开发环境,是需要进行一些物理隔离,就需要部署整套的微服务架构,成本与维护都是非常高的。全链路灰度发布,就是线上应用墙发布时,可以说通过部署灰度版本,引入配置一些简单的流量规则,引入一些灰度流量,在灰度版本中进行验证,可以有效的控制发布的风险,云上有很多的客户都是这样用的,要恢复发布 N 个应用,其实是想要流量 N 个应用之间、灰度版本之间进行路由,如果有些应用没有灰度版本,就回到线上极限的环境中,除了最常见的几个场景外,还有一些比如像高可用场景的同机房优先,以及像常见的全链路压测,都是基于全链路灰度能力实现的。

3.微服务全链路灰度解决方案

全场景全链路

·前端

·网关

·RPC

· MQ

· Database

· Redis

· 分布式任务调度

完整全链路解决方案

·基于 Ingress-nginx 网关实现全链路灰度

·基于 Apache APISIX 网关实现全链路灰度

·基于 MSE 云原生网关实现全链路灰度

·基于 Java 网关实现全链路灰度

·基于 RocketMQ 实现全链路灰度

·通过 Jenkins 构建 CI/CD 实现金丝雀发布

·微服务敏捷开发最佳实践

产品化界面

·完整的产品控制台

·秒级可观测能力

·流量大盘

关于全链路灰度的一个完整的解决方案。一个想法是想要做线上,云上客户或者线上的客户需要涉及到的所有场景,从前端到网关,到微服网关,再到微服务应用之间,比如像 RPC 有、MQ 以及消息有、Database、Redis、分布式任务调度以及到后端的数据库,想要做到全场景的一个全链路灰度的能力,基于这个点之后,有尝试在做的是全场景的各种场景的各种 case 的完整的全链路的解决方案,比如像基于 Ingress-ngix 网关实现全链路灰度,以及基于各种开源的网关、Apache APISIX网关以及 JAVA 的微服务网关之类的实现全链路灰度,也有基于云厂商提供的 MSE 云原生实现全链路灰度,同时还有 RocketMQ 实现全链路灰度,也有通过 Jenkins 构建 CI/CD 实现金丝雀发布以及涉及到专业互联的,即微服务敏捷开发的最佳时间。

希望输出完整的全链路灰度的解决方案帮助企业更快速的一个上云,第三块 MSE 这款产品在做的,需要对用户提供一个完整的产品控制台,做到开箱即用的能力,同时对于灰度流量,提供了秒级的一个可观测能力,当在网吧配置规则之后,马上能看到流量进入了一个灰度环境,对于应用间的调用,对于整个拓普有一个流量大盘,可以让我全链路灰度做到回到哪里一目了然,基于上述为了让用户在上云的过程中,微服治理时间的过程中,可以做的更加平滑以及稳定。简单的介绍了概念及场景,还有未来的一些想要做的以及传入的最佳实践以及产品化的一些东西。

五、微服务 Serverless Pass 解决方案

·典型的【业务系统】外的配套

图片6.png

微服务相关的技术解决了很多系统的问题和效率的问题,但也有一些门槛,前面分享了各种微服务治理的解决方案、这方面的经验,进一步降低拥抱微服务技术战的成本。但可以看到拥抱微服除了需要微服务技术本身的组件以外,还需要配套的可观测方面的全链路监控化解系统、发布系统、CI/CD工具等,以及需要运维基础的lass 资源,包括很多企业也会使用 k8s 更好的管理。拥抱微服务确实解决了单体的一些混合问题、效率问题,但是也引入了一些其他的复杂性,也推出了一站式的微服务 Severless pass 的解决方案,也就是阿里云 SAE 这个产品,进一步降低大家理解和使用微服务的成本。

阿里云 SAE(Serverless App Engine)- 一站式微服务 Serverless Pass 解决方案

图片7.png

包括 Serverless 化的 lass 和 k8s,在零感召前提下,无需运维 lass 和 K8s,最大化的减少大家的运维成本,同时又有丰富的弹性特性以及作为一个一站式的 pass 型产品,它也集成了 MSE 微服务治理、MSE 注册中心,完整的可观测性体系,企业之间权限、发布,CSAD 对接等等,通过这样一个产品,希望企业在拥抱微服务技术站的同时,进一步降低其配套的复杂度,把相关的最佳实践作为一个产品交付给大家,进一步的内容,欢迎查阅白皮书。另外最近开源了 open 设置项目,致力于建设统一的微服务治理规范

六、趋势和展望

·后端 BAAS 化,开箱即用,极致弹性,分钟级交付,安全可靠,提供 99.95%高可用。

·客户端轻量化︰降低业务侵入,多语言标准集成,治理能力下沉。

·业务侧 Serverless 化:让业务无需感知服务器,更加聚焦业务开发,提升研发和运维效率。

首先是后端 BASS 化,用户只需要从云服务厂商购买服务,就能够得到后端服务,比如通过 MSE SQL 购买,能够立马得到实例,开箱即用,弹性和运维成本不需要关心,只需要用对应的域名和 IP 端口就可以,同时提供了高可用的能力;二是客户端轻量化,基于开源客户端,开源客户端只需提供一个 interface,业务方这一块无侵入,多语言是通过标准的能力集成,具体的服务治理能力实现是放在 SDK 的Java Agent 中,它的治理能力是下沉的,客户端非常轻量化,只需要提供一个标准的 RPC 接口或数据库接口、MQ 接口都可以,最后一点是业务侧 Serverless,业务侧不需要感知业务如何部署的,不需要感知资源的情况,只是代码写好,部署上去就可以,Serverless 这种模型,业务只需要关注业务模型是什么样子的,能够提升研发效率和运维效率

服务治理数据面透明化,控制面标准化

图片8.png

服务治理的主要趋势就是说数据面越来越透明,用户或说业务开发者不需要关注数据面具体是什么样子、有什么样的能力、有什么样的不足等,仅仅是把它当做一个透明的面来用就可以,控制面就是更加标准化,用一套标准的控制面控制各个微服务的框架,比如图中的例子,下面是 one java agent 模式和 SDK 模式来接入,Service Mesh 也是一种无侵入的接入方式,通过这三种接入模式的话,用户在写代码时是不需要关注具体使用哪种方式接入的,这三种接入模式都会遵循统一的控制面,就是控制面标准化的一部分,在管控面这边不管是开源的管控面,还是 MSE 的管控面,都是兼容标准化的能力,给用户提供管控能力,下面的话是总结出来的功能上的特性

OpenSergo- 建设统一的服务治理管控

图片9.png

观察趋势之后,推出了公司各项目,主要是建设统一的服务治理管控面,中间有一个 OpenSergo 规范,它规定服务源数据是什么格式、服务治理的配置、参数应该如何填、服务发现应该用什么样的模式来接入和可观测,就比 OpenTelemetry 应该用什么样的方式去接入,右面这一块是数据面,比如刚刚提到的 java agent 接入的服务治理和 service Mesh 的服务治理,或者说现有的模式服务治理,比如Spring cloud Alibaba 或 Kratos 这种新的或旧的微服务框架都能够用 SDK 模式去接入,总而言之就是 SDK、service mesh、java agent 交易都可以用来接入,都会用 openSergo 的模式接入服务治理,左边是管控面,openSergo 作为一个开源项目,会提供一个开箱即用的 Dashbaord,开发项目名字为 openSergo Dashbaord,用户可以开箱即用的去管理自己的微服务,去治理自己的微服务,企业有自建的需求,也可以遵循 openSergo 规范来做一些企业自建的 Dashbaord 实现一些定制化的能力,更加关注底层的用户,可以直接用 Kubernetes CR 的这种模式直接去编辑来实现自己微服务的配置和管理等。

微服务治理技术白皮书不仅包含了阿里巴巴集团在电商领域10余年的微服务治理技术实践,其实也包含了 MSE 数百余家客户的一些方案,不仅包含帮助写序的来电科技,三菱电梯这么一些公司,也包含了阿里巴巴集团内部的一些客户,比如菜鸟、达摩院以及电商的场景都是有在使用的,邀请到了菜鸟平台分享他们在借助于MSE 去实现的微服务治理技术能力这一边的最佳实践。

是一个多语言为基础结合先进的云原生建设的理念去建造服务平台,主要支撑的是包括菜鸟商业化的一些客户的话,甚至还有一些菜鸟生产的公司,但在这个支撑的过程当中,也不是第一次跟 MSE 合作,之前因为客户要把自建的注册中心迁移到阿里云上面的 nginx 上,已经有过一次沟通,提供了一个 java 进程,帮助服务在不停机的情况下,迁移到上面来,这是第一次相遇。在我们后面支撑业务的过程中,提出了几个常见的问题,可能也是目前来讲 web 客户或者 web 公司里面会经常遇到的,第一个是想要在日常环境上面提高日常的研发效率,因为日常环境上面可能会有多个分支开发的这种场景,多个分支开发的过程当中涉及到如何去减少分支开发冲突次数,如何让自己的分支有一个隔离的原料环境去使用、调试,有一个快速的测试平台测试,这一块相当于在日常研发绩效方面上的一个诉求,第二个诉求是在安全生产方面的需求,之前在云上的恢复能力自建起来是比较复杂的,在调研了很多产品之后,也发现 MSE 其他具有云上这个基于标签路由能力的推动能力,这一块相当于在其中得到的收益。第三是关于服务自身的稳定性,基于上述三点,如何帮助客户达成目标,如果有目标,去自建就可以,想自建一套体系,但自建会有几个问题,第一是它的成本大,因为要有不同的中间件的流量隔离,中间件的版本的差异等一些问题,维护成本就特别大嘛,所以把自建的方案给否掉,第二是业务侧开发,通过业务代码测试自身代码的形式,去开发灰度或者隔离等能力,这一块业务或者客户自身是不愿意的,因为这一块带来的成本也很大,而且整个开发周期比较长,技术难度比较高,也否掉,基于之前的一些了解,他的定位是微服务治理的一个平,最终选择 MSE 通过 java agent 方式去做无侵入的方案解决,其无侵入的方案解决带来的一些好处是有更多的发挥空间,无论是基于标签路由方式的项目环境或是灰度环境的一些构建,还是在基于上下线的集群的稳定性或是服务肯定性的方面去做发挥,还是在其他后期包括同城调度、流量的治理、无侵入防护,以前后期的流量大盘方面都有提供的一些基础的服务,或提供便捷的能力,这也是选择 MSE 团队的产品作为微服务治理产品的一个心得。

首先 MSE 在专业团队上的这个专业性是够用的,其次跟其他云产品之间的兼容性是比较好的,不用考虑冲突导致太多的问题,最后一点是未来的话,可能会基于MSE 的微服务治理,去做更多关于服务治理方面的相关事情,合作空间应该会更大一些。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
1天前
|
存储 NoSQL 关系型数据库
微服务Zipkin链路追踪原理,图解版,一文吃透!
本文重点讲解Zipkin链路追踪的原理与使用,帮助解决微服务架构下的服务响应延迟等问题,提升系统性能与稳定性。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
微服务Zipkin链路追踪原理,图解版,一文吃透!
|
12天前
|
Cloud Native API 持续交付
利用云原生技术优化微服务架构
【10月更文挑战第13天】云原生技术通过容器化、动态编排、服务网格和声明式API,优化了微服务架构的可伸缩性、可靠性和灵活性。本文介绍了云原生技术的核心概念、优势及实施步骤,探讨了其在自动扩展、CI/CD、服务发现和弹性设计等方面的应用,并提供了实战技巧。
|
14天前
|
人工智能 文字识别 Java
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
尼恩,一位拥有20年架构经验的老架构师,通过其深厚的架构功力,成功指导了一位9年经验的网易工程师转型为大模型架构师,薪资逆涨50%,年薪近80W。尼恩的指导不仅帮助这位工程师在一年内成为大模型架构师,还让他管理起了10人团队,产品成功应用于多家大中型企业。尼恩因此决定编写《LLM大模型学习圣经》系列,帮助更多人掌握大模型架构,实现职业跃迁。该系列包括《从0到1吃透Transformer技术底座》、《从0到1精通RAG架构》等,旨在系统化、体系化地讲解大模型技术,助力读者实现“offer直提”。此外,尼恩还分享了多个技术圣经,如《NIO圣经》、《Docker圣经》等,帮助读者深入理解核心技术。
SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?
|
28天前
|
Kubernetes Cloud Native 云计算
云原生时代的技术演进:Kubernetes与微服务架构的完美融合
随着云计算技术的飞速发展,云原生概念逐渐深入人心。本文将深入探讨云原生技术的核心——Kubernetes,以及它如何与微服务架构相结合,共同推动现代软件架构的创新与发展。文章不仅剖析了Kubernetes的基本工作原理,还通过实际案例展示了其在微服务部署和管理中的应用,为读者提供了一条清晰的云原生技术应用路径。
41 2
|
9天前
|
运维 Kubernetes 开发者
构建高效后端服务:微服务架构与容器化技术的结合
【10月更文挑战第18天】 在数字化转型的浪潮中,企业对后端服务的要求日益提高,追求更高的效率、更强的可伸缩性和更易于维护的系统。本文将探讨微服务架构与容器化技术如何结合,以构建一个既灵活又高效的后端服务体系。通过分析当前后端服务面临的挑战,介绍微服务和容器化的基本概念,以及它们如何相互配合来优化后端服务的性能和管理。本文旨在为开发者提供一种实现后端服务现代化的方法,从而帮助企业在竞争激烈的市场中脱颖而出。
12 0
|
2月前
|
运维 监控 前端开发
微服务灰度发布的底层原理是什么?
微服务灰度发布的底层原理是什么?
42 1
|
2月前
|
运维 Kubernetes Cloud Native
探索云原生技术:容器化与微服务架构的融合之道
【9月更文挑战第18天】在数字化转型的浪潮中,云原生技术以其灵活性、可扩展性成为企业创新的强大引擎。本文将深入探讨云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同推动现代应用的开发与部署。通过实际代码示例,我们将揭示这些技术如何简化运维,加速产品上市时间,并提高系统的可靠性和弹性。无论你是开发人员、架构师还是IT决策者,这篇文章都将为你提供宝贵的洞见和实践指导。
43 2
|
2月前
|
Kubernetes Cloud Native Java
云原生技术之旅:从容器化到微服务架构
【9月更文挑战第18天】云原生技术正改变着我们构建、部署和管理应用的方式。本文将通过一次虚拟的旅行,带领读者探索云原生的核心概念,如容器化、微服务、持续集成与交付等。我们将以一个实际案例为线索,逐步展开对Kubernetes集群管理、Docker容器创建和Spring Boot微服务开发的讨论。就像在旅途中不断发现新风景一样,您将了解到这些技术如何协同工作,提升开发效率和应用性能。准备好了吗?让我们启航!
|
2月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
2月前
|
负载均衡 Java 应用服务中间件
微服务分布式系统架构之zookeeper与dubbor-1
微服务分布式系统架构之zookeeper与dubbor-1