如何降低微服务复杂度丨云栖大会微服务主题分享实录

作者:谢吉宝

本文整理自阿里云资深技术专家、中间件负责人谢吉宝在2023云栖大会《极简微服务模式,降低微服务复杂度的最佳实践》的分享

图片

2023 云栖大会现场

当面临复杂的挑战时,"分而治之"的方法往往能取得显著的效果。微服务架构在这方面的贡献尤为突出,它不仅为"分"与"治"这两个环节提供了深思熟虑的理论指导,还进一步展示了如何将这些理念转化为最优的实践经验。

图片

微服务首次提出至今,有无数的企业在尝试用微服务架构去解决企业所遇到的架构问题,从我们服务外部客户的过程中发现,这些企业在落地微服务架构的过程中,普遍遇到四大挑战。

  • 上手门槛高
  • 稳定保障难
  • 安全防控难
  • 运营成本高

阿里也是在微服务技术领域积极探索的企业之一,至今已经有了 17 年的探索历程。我们把这 17 年的经验沉淀成了两款云上的微服务产品,分别是微服务引擎 MSE 和企业级应用分布式服务 EDAS。

图片

微服务引擎 MSE 集成了注册配置中心、微服务治理和云原生网关三个子产品,通过这三款产品,就能够搭建起一套完整的微服务架构,并且内置了安全和高可用的能力。

企业级应用分布式服务 EDAS 是以应用为中心的一套微服务最佳实践平台,提供应用全生命周期管理、业务流量管理和后台任务调度,打通资源管理、CI/CD、可观测服务。再结合应用实时监控服务 ARMS 和容器服务 ACK,就构建出了阿里云的整套微服务产品及解决方案。接下来,我将和大家一起探索 MSE 和 EDAS 在是如何思考和解决微服务落地难题的。

如何应对上手门槛高

针对上手门槛高,MSE 提供了新手引导功能,用户可以做到一键部署 demo 应用,3 分钟激活,30 分钟掌握产品的核心基础能力。

EDAS 则提供了更加云原生化的应用管理模型 CloudApp。通过 CloudApp,可以像原生使用 K8s 一样来操作 EDAS,并且能够和 EDAS 在线可视化的界面相互同步。习惯使用 K8s 的人员,可以完全使用 K8s 的方式,将应用托管到 EDAS 中,进行应用的治理和运维等动作。

除此以外,我们还通过通义千问训练了云原生专属大模型,并基于此打造了云原生产品智能助手。基于此,用户将在 MSE 和 EDAS 上拥有全新的产品体验。云原生产品智能助手完全基于对话式完成实例的创建、应用的部署以及产品核心能力的体验。同时,在应用上线以后,基于云原生产品智能助手的思维链模式,结合 ARMS 的 insight 智能洞察功能,用户还可以完成整个微服务请求的诊断分析能力。

图片

最后,针对云产品价格“上手门槛高”这一痛点,我们发布产品试用体验计划。

  • MSE: 全系列产品 30 天全功能免费体验,提供专家级的培训课程及技术支持。
  • EDAS: 提供 60 天、不限节点数的免费体验,提供 15 门免费的远程视频培训课程。

图片

如何应对稳定保障难

高可用是企业生产业务的核心挑战。高可用问题分成三大类,容量问题、容错问题和容灾问题。这三类问题时刻遍布在开发态、变更态和运行态,可以说,高可用的问题是无处不在的,并且,根据经验统计,70% 的线上故障都是由变更引起的。

MSE 集成高可用能力。首先,它自身就是基于多 AZ 进行部署的,确保了产品本身的高可用性。其次,针对 70% 风险都来自变更态问题的事实,MSE 提供了无损上下线以及各种粒度的灰度服务,通过灰度和无损上下线,可以有效解决变更带来的爆炸半径问题,进而缩小了故障产生的影响面,甚至从根源上杜绝故障的发生。 针对运行态,面对不确定性的流量调用、不稳定的基础设施和应用自身的故障,MSE 集成了全链路的 TLS 服务、微服务身份鉴权以及黑产刷单等防护,同时提供了限流降级等服务治理功能,可以有效的保护这些不确定性给业务带来的高可用风险。

图片

EDAS 则可以让客户轻松构建自己的高可用架构,一键把业务直接也发布到多个可用区。 同时,针对每一个可用区自身的服务调用,能够确保优先调用本可用区的服务。一方面,减少跨可用区域之间调用给业务带来的不必要延迟,另一方面,也确保了在本可用区内服务调用闭环,进而增强了应用本身的高可用性。

图片

如何应对安全防控难

微服务架构的安全问题,也是企业不可避免的巨大挑战。随着服数量的增多,架构复杂性逐步提升,安全漏洞的修复速度挑战加剧。万一没有及时修复好,安全攻击的爆炸半径会随着微服务架构的复杂度的增加而增大,还有诸如微服务之间的认证鉴权、安全通信、配置存取加密等一系列的问题,都给企业带来了非常大的风险。

MSE 默认集成了安全能力。首先在架构侧,我们建议企业把微服务架构的入口统一收敛到云原生网关。云原生网关默认集成了证书管理、登录认证、WAF3.0 等一系列安全能力。同时,还支持向 Sentinel 限流降级、服务鉴权以及 WAF 插件增强能力,把微服务架构的安全统一收敛至网关侧,用来确保安全漏洞可以集中在网关侧,给网关后端的微服务漏洞修复,争取了修复的时间窗口,保障了整个架构的安全,同时,又能收敛住整个安全钩机的爆炸半径。微服间的调用,MSE 则默认集成了通信间的安全、配置加密以及全链路的 MTLS,确保了微服架构调用之间的安全。也基于此,MSE 荣获中国信通院最高安全成熟度评级。

图片

如何应对运营成本高

微服务架构的最后一个挑战就是运营成本高。首先,微服务架构都将面临流量的不确定性,导致入口流量难以评估。如果想通过全链路压测来做流量的评估,改造成本和复杂度都非常高。

其次,基于开源自建微服务相关组件依赖复杂,组件之间的兼容性问题频发。如果盲目的去做组件升级,评估不到位的话,很容易造成服务中断。

第三,应用的平均负载不高。按照行业报告显示,企业的平均 CPU 利用率不超过 20%,存在着极大的资源浪费。为了解决这些问题,MSE重磅发布升级,向 Serverlees 化演进。

图片

通过自适应弹性,来解决流量的不确定性。根据流量自动弹性伸缩,无需做复杂的流量规划,就能够保证潮汐式业务的稳定性,并且能够极大限度的节约成本。通过开箱即用免运维方案,解决微服务各组件依赖复杂的兼容问题,支持将相应的组件自动进行兼容性风险扫描,并自动升级,减轻用户的运维负担,所有的关键事件也能统一到一个视图里。

MSE Serverless 版支持按需付费。其中,云原生网关按照请求量计费,注册配置中心按照客户的连接数计费。对于中小型企业而言,MSE 的使用成本将大幅下降。

  • 注册配置中心开发板,47 元/月起,比开源自建成本下降 50%。
  • 注册配置中心 Serverlees 实例,生产集群 115元/月起,比开源自建下降成本62%。
  • 云原生网关 Serverless 实例,生产集群 97 元/月起,比开源自建更是下降成本75%。

图片

此外,EDAS  提供了更加全面的方式,帮助客户的业务来实现极致的资源弹性。例如将客户应用上的各类指标进行统一暴露,客户可以根据自身业务的特点,选择更贴合自己业务特性的指标,综合判断来进行资源弹性,提升弹性的准确度,进一步降低使用成本。同时,我们还将根据客户业务的特点,通过 AI 算法来预测未来某一段时间内的指标数据,根据指标回放,直接使用 N 天前的指标,提升资源弹性。通过资源弹性的分时复用策略,将最大限度的降低云产品的使用成本。

图片

此外,在应用开发过程中,我们发现客户的程序实际使用的堆内存和申请的最大堆内存存在不一致的情况,甚至前者是远远小于后者的,导致客户的内存出现大量的闲置,引发了高昂的资源使用成本。对于此,EDAS 和阿里云 Dragonwell 团队合作,联合推出了 JVM 弹性堆能力,只在运行时为程序自动适应理想的对大小,从而将闲置内存返还给操作系统,为客户节省内存资源。

图片

在 EDAS 上开启弹性堆之后,Dragonwell JDK 会自动为 Java 程序匹配合理的自适应堆大小,对内存占用预计节省 10% 以上。 基于原生的 JVM GC 触发内存弹性,对应用影响极小或者几乎没有影响。配置上,只需要增加少量 JVM 参数即可,对客户的业务完全没有侵入,替代了传统人工发现、人工调整、观察改进多轮内存优化的策略。EDAS 帮助客户基于托管的应用历史数据做出可行性评估,并且给出开启建议,提供稳定长期技术支持。

以上就是今天的全部分享, 希望通过阿里云的微服务产品矩阵和解决方案,能够帮助在企业在微服务落,降低复杂度,打造极简微服务模式。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答

学习目标: 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议,了解典型网络设备的组成和特点,理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

使用 Redis 的 List 数据结构实现分页查询的思路

假设有一个存储数据的 List,每个元素代表一个记录,例如 recordsList。 按页存储数据: 每页存储一定数量的记录。例如,第一页存储索引 0 到 N-1 的记录,第二页存储索引 N 到 2N-1 的记录,以此类推。 分页查…

Java入门——基本语法(注释、字面量、变量、使用变量的注意事项、关键字、标识符)

目录 注释 字面量 变量 使用变量的注意事项 关键字 标识符 注释 什么是注释 注释是写在程序中对代码进行解释说明的文字,方便自己和其他人查看,以便理解程序的。 注释有哪些 单行注释 // 注释内容,只能写一行 多行注释 /* 注释内…

Java中的HTTPS通信

在Java中实现HTTPS通信,主要涉及到SSL/TLS协议的使用,用于提供数据传输的安全性。下面我们将深入探讨如何使用Java进行HTTPS通信。 一、基本概念 HTTPS,全称为Hypertext Transfer Protocol Secure,是HTTP的安全版本。它使用SSL/…

Matlab|含风电-光伏-光热电站电力系统N-k安全优化调度模型

目录 1 主要内容 程序算例 程序模型 程序亮点 2 部分程序 3 部分结果 4 下载链接 1 主要内容 该程序参考《光热电站促进风电消纳的电力系统优化调度》光热电站模型,主要做的是考虑N-k安全约束的含义风电-光伏-光热电站的电力系统优化调度模型,从而…

uniapp page宽度设置为750rpx,子元素宽度100%,大小不一致

uniapp page宽度设置为750rpx,子元素宽度100%,大小不一致。 原因是我在page加了margin: 0 auto;去掉就正常了(但是如果在超大屏幕还是会出现,我猜是使用rpx导致的,rpx渲染成页面时会转成精确到一个小数点几位数的rem&a…

【创建vue项目的两种方式】

Vue环境搭建 NodeJs安装包安装淘宝镜像 环境搭建webpack安装全局安装vue/cli查看模板创建项目1.webpack2. vue-cli NodeJs安装包 下载链接:官网链接 下载下来后,直接傻瓜式的安装即可。 通过在cmd控制台输入以下命令查看是否安装成功 node -v因为适配某…

【oracle】oracle客户端及oracle连接工具

一、关于oracle客户端 1.1 Oracle Client 完整客户端 包含完整的客户端连接工具。 包很大,需要安装 1.2 instantclient 即时客户端 是 Oracle(R) 发布的轻量级数据库客户端,减少甚至只包含几个文件,您无需安装标准的客户端,就可以…

第四篇【传奇开心果短博文系列】Python的OpenCV库技术点案例示例:机器学习

传奇开心短博文系列 系列短博文目录Python的OpenCV库技术点案例示例系列短博文 短博文目录一、项目目标二、OpenCV机器学习介绍三、OpenCV支持向量机示例代码四、OpenCV支持向量机示例代码扩展五、OpenCVK均值聚类示例代码六、OpenCVK均值聚类示例代码扩展七、OpenCV决策树示例…

jetson-inference----docker内运行分类任务

系列文章目录 jetson-inference入门 jetson-inference----docker内运行分类任务 文章目录 系列文章目录前言一、进入jetson-inference的docker二、分类任务总结 前言 继jetson-inference入门 一、进入jetson-inference的docker 官方运行命令 进入jetson-inference的docker d…

opencv012 滤波器04 中值滤波,双边滤波

中值滤波 取中位数,可以处理椒盐噪音 CV自带medianBlur函数dst cv2.medianBlur(src, ksize) 参数说明:1.src: 需要滤波的图片;2.ksize:核大小,必须是比1大的奇数【举个例子:3,5,7……

CSS复合选择器和CSS层叠性、继承性有哪些内容?

知识引入 1.CSS复合选择器 书写CSS样式表时,可以使用CSS基础选择器选中目标元素。但是在实际网站开发中,一个网页中可能包含成千上万的元素,如果仅使用CSS基础选择器,是远远不够的。为此,CSS提供了几种复合选择器&am…

node.js安装配置详细教程(附图-贼详细)

一:下载 Node.js官网下载地址:Node.js — Download 选择自己需要的版本我用的Windows ps:如果想下载指定版本,点下面这个就可以选择想要的版本 二:安装 1.下载完成后,双击安装包开始安装 2.安装过程:一步…

基于禁忌搜索算法的TSP路径规划matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 TSP问题描述 4.2 禁忌搜索算法原理 4.3 算法步骤 5.完整程序 1.程序功能描述 基于禁忌搜索算法的TSP路径规划,输出优化收敛曲线以及路线规划图。 2.测试软件版本以及运行结果展示 …

redis-发布缓存

一.redis的发布订阅 什么 是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 Redis的发布和订阅 客户端订阅频道发布的消息 频道发布消息 订阅者就可…

C语言练习题110例(十)

91.杨辉三角 题目描述: KK知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他 解答。杨辉三角,本质上是二项式(ab)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1&…

【量化交易】股市舞者:小明的撮合交易之旅

马西森AES撮合交易系统 在繁华的都市中,小明,一个普通的青年,刚刚赚到了人生的第一桶金——20万。这笔意外的财富,点燃了他对股市的强烈兴趣。他开始如饥似渴地学习金融知识,钻研各种交易策略。 一天,小…

关于mysql默认禁用本地数据加载的情况处理(秒解决)

1.首先报错信息:ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides 2.排查问题: 先检查local_infile的状态:使用sql指令 show global variables like local_infile; 这种情…

详细分析Java中的StringUtils工具类(org.springframework.util.StringUtils)

目录 前言1. 基本知识2. 常用API方法3. 扩展类 前言 常用的工具类有很多,这是其中一个,了解基本的API可以帮助我们更好的开发 1. 基本知识 org.springframework.util.StringUtils 是 Spring Framework 中的一个实用工具类,用于执行各种字符…

对于gzip的了解

gzip基本操作原理:通过消除文件中的冗余信息,使用哈夫曼编码等算法,将文件体积压缩到最小。这种数据压缩方式在网络传输中发挥了巨大作用,减小了传输数据的大小,从而提高了网页加载速度。 静态资源 Vue Vue CLl修改v…