OpenSergo Spring Cloud Alibaba 带来的服务治理能力

 

博主介绍:✌全网粉丝3W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌

博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+MySQL+Vue等前后端分离项目,可以在左边的分类专栏找到更多项目。《Uniapp项目案例》有几个有uniapp教程,企业实战开发。《微服务实战》专栏是本人的实战经验总结,《Spring家族及微服务系列》专注Spring、SpringMVC、SpringBoot、SpringCloud系列、Nacos等源码解读、热门面试题、架构设计等。除此之外还有不少文章等你来细细品味,更多惊喜等着你哦

🍅开源项目免费哦(有vue2与vue3版本):点击这里克隆或者下载      🍅

🍅文末获取联系🍅精彩专栏推荐订阅👇🏻👇🏻 不然下次找不到哟

Java项目案例《100套》

https://blog.csdn.net/qq_57756904/category_12173599.html
uniapp小程序《100套》

https://blog.csdn.net/qq_57756904/category_12199600.html

Spring Cloud 应用为何需要服务治理​

随着微服务技术的发展,微服务(MicroServices) 的概念早已深入人心,越来越多的公司开始使用微服务架构来开发业务应用。如果采用得当,微服务架构可以带来非常大的优势。微服务架构的最大好处是它可以提升开发效率和系统整体的稳定性:

  • 开发和部署相对简单:单个微服务的功能可以更快地更改,因为可以独立部署、影响范围更小,启动和调试单个微服务的时间成本相比于单体应用也大大减少。
  • 横向扩展简单:根据业务的高峰低谷周期快速的横向扩展非常简单,因为单个微服务通常很小,可以随着系统整体负载的变化更快地启动和停止。
  • 架构升级灵活:单个微服务的“内部架构”可以迅速升级,因为微服务之间松散耦合的,只面向定义好的通讯接口进行编程。这使开发团队能够基于自身的技术背景和偏好灵活选择,而不会直接影响其他应用程序、服务或团队。
  • 更好的容错性:微服务之间可以实现更好的故障隔离,单个服务内的内存泄露等故障不容易影响其他服务,相比单体应用一个组件故障会拖垮整个系统。

但是微服务在实施过程中,也很容易遇到一些难点。随着业务规模的增长,在这个过程中如果微服务得不到恰当的治理,不仅不能享受到微服务架构带来的好处,反而会因为微服务带来的系统复杂性,造成开发、运维部署的复杂度增加,进而影响开发迭代的速度,甚至影响系统的整体稳定性,比如:

  • 服务之间使用远程调用进行通讯,这比进程内的直接调用复杂很多。由于通讯链路的复杂性,可能会出现很多不确定的问题,会出现远程调用不可用或者延迟较高的情况,开发人员需要能够处理这些偶发问题,避免影响业务。
  • 随着业务的发展,微服务之间的拓扑图开始变得复杂,排查问题变得困难,搭建完整的开发测试环境成本也越来越大。
  • 当功能涉及到多个微服务模块时,迭代时需要谨慎地协调多个开发团队的迭代排期,才能保证迭代能够按时交付,达到敏捷开发的效果。

因此, 微服务落地的成功与否,很大程度上取决于能否很好的对这些微服务进行治理,对于传统的 Spring Cloud 应用,并没有提供开箱即用的服务治理机制,用户只能通过自己去实现Spring Cloud中的各种扩展点来实现服务治理。相比起让用户费心费力去自己写代码实现扩展点,Spring Cloud Alibaba 选择了替用户做这些事情。用户只需导入 Spring Cloud Alibaba 中的 starter,即可快速给自己的 Spring Cloud 应用添加对应的微服务治理能力。

Spring Cloud Alibaba 新版本服务治理能力预览​

最新发布的 Spring Cloud Alibaba 2.2.10.RC1 新版本,基于社区 2.2.x 分支进行的构建发布,其中 2.2.10.RC1 版本通过首次给 Spring Cloud 生态带来了微服务治理能力,并给Spring Cloud Alibaba应用带来了Proxyless Mesh的能力,让Spring Cloud Alibaba应用更好的拥抱服务网格。详细的新版本预览内容如下新版本:

2.2.10.RC1 是在 Spring Cloud Hoxton.SR12、Spring Cloud 2.3.12.RELEASE 的基础上,支持 Istio 以及OpenSergo 控制面下发的服务治理规则,对 Spring Cloud 生态中的 Ribbon 负载均衡器以及 Spring MVC, Spring WebFlux 的各种拦截器做了增强,实现了服务治理的部分能力,属于一个重大特性发布的。

2.2.10 RC1版本主要支持了标签路由与鉴权这两种服务治理的能力,并且支持对接多种控制平面的实现,除了目前服务网格的事实标准 Istio,新版本也支持社区最新推出的 OpenSergo 控制平面以及服务治理生态,详细的能力如下所示:

流量路由​

我们可以基于流量路由标准来实现各种业务场景,如标签路由、金丝雀发布、同机房优先路由等。

  • 标签路由:标签路由是按照标签为维度对目标负载进行划分,符合条件的流量匹配至对应的目标,从而实现标签路由的能力。当然基于标签路由的能力,赋予标签各种含义我们就可以实现各种流量路由的场景化能力。
  • 金丝雀发布:金丝雀发布是一种降低在生产中引入新软件版本的风险的技术,方法是在将更改推广到整个基础架构并使其可供所有人使用之前,缓慢地将更改推广到一小部分用户。金丝雀发布是一种在黑与白之间,能够平滑过渡的一种发布方式。让一部分用户继续用旧版本,一部分用户开始用新版本,如果用户对新版本没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到新版本上面来。一直都有听说,安全生产三板斧的概念:可灰度、可观测、可回滚。那么灰度发布能力就是帮助企业软件做到快速迭代验证的必备能力。在K8s中金丝雀发布的最佳实践如下:第一步:新建灰度 Deployment,部署新版本的镜像,打上新版本的标签。第二步:配置针对新版本的标签路由规则。第三步:验证成功,扩大灰度比例。第四步:若验证成功,将稳定版本的应用更新成最新镜像;若验证失败,把灰度的 Deployment 副本数调整到 0 或删除该 Deployment。
  • 全链路灰度:当企业的发展,微服务的数量会逐渐增多。在有一定规模的一定数量的微服务情况下,一次发版可能涉及到的服务数量会比较多,微服务链路也相当较长。全链路灰度可以保证特定的灰度流量可以路由到所有涉及到的灰度版本中。
  • 同可用区优先路由:当企业的对稳定性的要求变高时,企业的应用会选择部署在多个可用区中提高应用的可用性,避免某个可用区出现问题后导致影响应用的可用性。当应用在不同的可用区部署时,应用间跨可用区调用可能会被因为远距离调用造成的网络延迟影响,同可用区优先路由会让我们的 Consumer 应用优先调用当前可用区内 的Provider 应用,可以很好地减少这种远距离调用造成的影响,同时当某个可用区出现问题后,我们只需在流量入口处将当前可用区的流量隔离掉,其他可用区的流量不会访问至当前可用区的节点,可以很好地控制某个可用区出现问题后的影响面。

服务鉴权​

正常生产场景,微服务应用都具有安全要求,不会让任意的服务都可直接调用。因此需要对调用该应用的上游应用进行服务鉴权,保证应用自身的安全。

通过 OpenSergo 探索治理能力的标准化​

OpenSergo 是开放通用的,覆盖微服务及上下游关联组件的微服务治理项目,是阿里巴巴微服务治理的最佳实践。OpenSergo 从微服务的角度出发,涵盖流量治理、服务容错、服务元信息治理、安全治理等关键治理领域,提供一系列的治理能力与标准、生态适配与最佳实践,支持 Java, Go, Rust 等多语言生态。

image

OpenSergo 控制平面 (Control Plane) 作为 OpenSergo CRD 的统一管控组件,承载服务治理配置转换与下发的职责。

image

  1. 准备 Kubernetes 环境;
  2. 在 K8s 集群安装 OpenSergo Control Plane
  3. Spring Cloud Alibaba 应用集成 OpenSergo

注意 本章节只是为了便于您理解接入方式,本中已经示例代码完成接入工作,您无需再进行修改。

首先,修改 pom.xml 文件,引入 spring-cloud-starter-alibaba-governance-routing 依赖。同时引入 Spring Cloud Alibaba 的 spring-cloud-starter-opensergo-adapter 模块:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-governance-routing</artifactId>
</dependency>
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-opensergo-adapter</artifactId>
</dependency>

在 application.properties 配置文件中配置 OpenSergo 控制面的相关信息:

# OpenSergo 控制面 endpoint
spring.cloud.opensergo.endpoint=127.0.0.1:10246

  1. Spring Cloud Alibaba 应用启动:启动三个模块的启动类,分别为OpenSergoConsumerApplication,两个ProviderApplication,将其注入到Nacos注册中心中。
  2. 通过 OpenSergo 控制面也定义了特定的流量路由规则TrafficRouter。TrafficRouter 将特定特征的流量映射至特定特征所对应的工作负载上,社区目前的设计TrafficRouter主要是基于 Istio VirtualService 进行补充与扩展。

如下是一个 OpenSergo 控制面对应的流量路由规则:

apiVersion: traffic.opensergo.io/v1alpha1
kind: TrafficRouter
metadata:name: service-providernamespace: defaultlabels:app: service-provider
spec:hosts:- service-providerhttp:- match:- headers:tag:exact: v2route:- destination:host: service-providersubset: v2fallback:host: service-providersubset: v1- route:- destination:host: service-providersubset: v1

这条  TrafficRouter指定了一条最简单的流量路由规则,将请求头tag为v2的HTTP请求路由到v2版本,其余的流量都路由到v1版本。如果v2版本没有对应的节点,则将流量fallback至v1版本。

效果演示​

发送一条不带请求头的 HTTP 请求至 OpenSergoConsumerApplication:

curl --location --request GET '127.0.0.1:18083/router-test'

因为请求头不为 v2,所以请求将会被路由到v1版本,返回如下:

Route in 30.221.132.228: 18081,version is v1.

之后发送一条请求头tag为 v2 的HTTP请求:

curl --location --request GET '127.0.0.1:18083/router-test' --header 'tag: v2'

因为满足路由规则,所以请求会被路由至 v2 版本:

Route in 30.221.132.228: 18082,version is v2.

停止 v2 版本的 ProviderApplication 后,继续发送一条请求头tag为 v2 的 HTTP 请求:

curl --location --request GET '127.0.0.1:18083/router-test' --header 'tag: v2'

因为 v2 版本没有服务提供者,因此流量被 fallback 至 v1 版本。

Route in 30.221.132.228: 18081,version is v1.

OpenSergo 总结与展望​

在 Java 生态中, OpenSergo 紧接着会支持 Apache Dubbo 的流量路由与全链路灰度场景,同时 Sentinel 2.0 会进行服务治理全面升级,能力实现从流量防护场景升级至支持微服务治理场景。在多语言生态中,OpenSergo 后续会探索 Dubbo、Kratos、CloudWeGo 以及 Mesh 等更多生态的治理能力支持与覆盖,与企业与社区共建微服务治理的最佳实践。

image

OpenSergo 社区现在处于高速发展阶段,从微服务治理标准定义,到统一控制面 (control plane) 的实现,再到 Java/Go/C++/Rust 等多语言 SDK 与治理功能的实现,再到各个微服务生态的整合与落地、最佳实践,都还有大量的演进工作,欢迎社区一起参与标准完善与代码贡献。 

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1383086.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

弱电工程LED显示屏日常维护方法

目前&#xff0c;LED显示屏已经广泛应用于各行各业&#xff0c;给人们生活带来了很多便利。很多企业都会用到LED显示屏&#xff0c;有的企业采购数量还比较多&#xff0c;比如房地产企业、电影院线等。企业虽然购买了产品&#xff0c;但是很多人还是不知道怎么去维护和使用的&a…

LED屏幕初始化以及设置屏参

LED屏幕初始化以及设置屏参 Led配置&#xff1a; 在led屏幕后面通常会有&#xff0c;控制卡的信息 使用软件LedshowTW 2017&#xff08;默认密码168 或者 888&#xff09;用网线对每个LED进行ip配置&#xff0c;还有参数配置&#xff0c;配置对应的控制卡驱动 软件操作如下流…

计算机屏幕显示故障,led显示屏的十大常见故障及其解决方法

led显示屏的十大常见故障及其解决方法 一、显示屏不工作&#xff0c;发送卡的绿灯闪烁 故障原因&#xff1a; 屏体无电源&#xff1b;网线连接不正确; 接收卡无电源或电源电压过低&#xff1b;发送卡已损坏&#xff1b;信号传输中间设备的连接或故障(如功能卡、光纤收发器盒)。…

led显示屏服务器是什么问题,led显示屏怎么设置

led显示屏怎么设置?下面学习啦小编整理了如何led显示屏的方法 &#xff0c;希望能帮到大家O(∩_∩)O哈哈~ LED屏的应用可以理解成是采用C/S模式(Client/Server&#xff0c;客户机/服务器)的设备&#xff0c;由服务器控制并设计相应LED屏要显示的内容。一般&#xff0c;终端机只…

LED大屏调试详解

第一步 打开LED屏幕编辑软件&#xff0c;LedshowTV2016(LED显示屏编辑软件)&#xff0c;进去设置----屏参设置--密码一般是168或者888 得益乳业的参数如下&#xff1a; 第二步 其中控制组件&#xff0c;就是板卡信息&#xff0c;要到大屏后面的板卡上看&#xff0c;是BX-5…

STM32定时器TIM控制

一、CubeMX的设置 1、新建工程&#xff0c;进行基本配置 2、配置定时器TIM2 1&#xff09;定时器计算公式&#xff1a;&#xff08;以下两条公式相同&#xff09; Tout ((ARR1) * PSC1)) / Tclk TimeOut ((Prescaler 1) * (Period 1)) / TimeClockFren Tout TimeOut&…

服务器机柜可放多大显示器,一个标准服务器机柜究竟能够放多少服务器

常常就客户问大家&#xff0c;究竟标准服务器机柜的尺寸是多少?以及机柜可以放多少台服务器&#xff0c;这些也都是用户们比较关心&#xff0c;以及比较关注的问题&#xff0c;为此小编为大家进行总结。 2U标准服务器机柜尺寸简介 在了解42U标准服务器机柜尺寸之前&#xff0c…

15寸计算机显示器,苹果确认15寸RMBP支持全球首款5K显示器

苹果在今年4月发布了OS X 10.10.3&#xff0c;并开启了Retina 5K iMac和2013款Mac Pro对戴尔双线缆5K显示器的支持&#xff0c;不过当时没有任何苹果笔记本支持这款显示器。 苹果确认15寸RMBP支持全球首款5K显示器(图片来自快科技) 据MacX报道&#xff0c;现在苹果更新了支持网…

送一台27寸高清显示器

为回馈广大读者粉丝们的大力支持&#xff0c;本号主特地选了这款 27寸4K显示器作为抽奖礼品送给大家。这礼物呢&#xff0c;可手捧追剧玩游戏&#xff0c;也可写字撰文搞创作。无论是自己玩&#xff0c;还是当礼物送人&#xff0c;都是理想佳品。 赠送规则 本次活动联合了其他 …

眼镜中的“黑科技”| 3D打印眼镜为您带来全新配戴体验

3D打印定制眼镜 你的眼镜应为你而生 每次换眼镜的时候&#xff0c;近视人士往往都会遇到选镜框的烦恼…… “这个镜框风格我喜欢&#xff0c;但是尺寸不合适&#xff0c;好可惜” “孩子调皮好动&#xff0c;镜架总是摔坏” “想要一款眼镜&#xff0c;适合头围大、瞳距小…

服务器显示器多少寸合适,购买别冲动!先看多大的显示器适合你

1大屏幕固然有许多优点 【中关村在线显示器频道原创】随着大屏显示时代的到来&#xff0c;无论是电视、手机还是显示器的屏幕都越来越大&#xff0c;消费者在选购产品的时候&#xff0c;也更加愿意选择大屏的产品&#xff0c;一方面大屏幕能够显示更多的内容&#xff0c;另一方…

计算机电脑显示器都有多大的,计算机显示器有多大? 24或27?总是有你的食物...

随着电子竞技产业的日趋成熟,显示产业的重要组成部分也已经崛起,争夺分辨率地位的斗争从未停止。尽管4K显示器具有足够的细微差别,并且4K资源和游戏套件已经跟上,但业内仍然有制造商在开发6K和8K显示器...实际上,从显示技术的发展和变化来看,盲目追求分辨率是最重要的。路…

配置家用计算机lcd,2017家用电脑显示器多大最合适

显示器(display)通常也被称为监视器。显示器是属于电脑的I/O设备,即输入输出设备。它是一种将一定的电子文件通过特定的传输设备显示到屏幕上再反射到人眼的显示工具。下面是学习啦小编带来的关于2017家用电脑显示器多大最好的内容,欢迎阅读! 2017家用电脑显示器多大最好 这个…

nodejs+vue+elementui多媒体素材管理系统

语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode 多媒体素材管理系统的设计与实现&#xff0c;最主要的是满足使用者的使用需求&#xff0c;并且可以向使用者提供一些与系统配套的服务。…

【MySQL--->数据库基础】

文章目录 [TOC](文章目录) 一、基本概念二、实际应用中的数据库三、mysql的架构四、mysql语句分类五、存储引擎查看 一、基本概念 mysql本质是一个CS模式的网络服务,mysql是客户端,mysqld是服务端,提供高效的数据存取方案.数据库系统简单来说是一个数据集合加上管理这个数据集…

Android自定义软键盘KeyboardView 使用实例

在有些应用中会有定制软键盘的需求&#xff0c;往往实现起来会有些难度&#xff0c;或者说实现出来的效果不尽如人意。 最近在项目中有这种需求 博主也是不辱使命地完成了这个需求&#xff0c;效果图如下 说一下思路的和详细实现 主要是利用android自带的android.input…

IntelliJ IDEA和Android studio怎么去掉usage和作者提示

截止到目前我已经写了 600多道算法题&#xff0c;其中部分已经整理成了pdf文档&#xff0c;目前总共有1000多页&#xff08;并且还会不断的增加&#xff09;&#xff0c;大家可以免费下载 下载链接&#xff1a;https://pan.baidu.com/s/1hjwK0ZeRxYGB8lIkbKuQgQ 提取码&#xf…

iOS开发-keyboardType合集

1、UIKeyboardTypeDefault&#xff0c;常用于文本输入 2、UIKeyboardTypeASCIICapable&#xff0c;常用于密码输入 3、UIKeyboardTypeNumbersAndPunctuation&#xff0c;和上一个键盘互相切换 4、UIKeyboardTypeURL&#xff0c;适用于网址输入 5、UIKeyboardTypeNumberPad &am…

Android自定义实现漂亮的软键盘

工作中遇到了自定义软键盘的场景&#xff0c;虽然简单很快就实现了&#xff0c;但对个别的细节不太满意。 因为细节决定成败&#xff0c;所以细节之处也不能忽视。 先来张效果图吧&#xff1a; key的相关属性&#xff1a;row的相关属性&#xff1a;KeyboardView的相关属性&am…

ios键盘通知和自定义键盘

一.键盘通知 当文本View(如UITextField,UITextView, UIWebView内的输入框)进入编辑模式成为first responder时&#xff0c;系统会自动显示键盘。成为firstresponder可能由用户点击触发&#xff0c;也可向文本View发送becomeFirstResponder消息触发。当文本视图退出first respon…