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

作者:谢吉宝

本文整理自阿里云资深技术专家、中间件负责人谢吉宝在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 帮助客户基于托管的应用历史数据做出可行性评估,并且给出开启建议,提供稳定长期技术支持。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt编写linux系统onvif工具(支持预览/云台/预置位/录像等)

一、功能特点 广播搜索设备,支持IPC和NVR,依次返回。可选择不同的网卡IP进行对应网段设备的搜索。依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。可对指定的Profile获取视频流Rtsp地址,比如主码流地址、子码流地址。可对每个设备设…

mmpose 2d姿态预测值转json文件

目录 效果图: 参考 模板文件下载地址: python预测代码: 效果图: <

Mall4j电商系统 java电商系统 后台界面-mall4v

一个基于vue、element ui 的轻量级、前后端分离、拥有完整sku和下单流程的完全开源商城后台所属前端界面 前言 mall4j商城项目致力于为中小企业打造一个完整、易于维护的开源的电商系统&#xff0c;采用现阶段流行技术实现。后台管理系统包含商品管理、订单管理、运费模板、规…

《动手学深度学习(PyTorch版)》笔记3

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;本书源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode测试通过。 Chapter3 Linear …

【模拟通信】AM、FM等的调制解调

调制相关的概念 调制&#xff1a;控制载波的参数&#xff0c;使载波参数随调制信号的规律变化 已调信号&#xff1a;受调载波&#xff0c;含有调制信号的全部特征 调制的作用: 提高发射效率多路复用&#xff0c;提高信道利用率提高系统抗干扰能力 两种调制方式 线性调制&a…

主播产品对比话术

—、价格对比 主播产品A︰这款产品定价相对较高&#xff0c;但是其品质和功能都是一流的&#xff0c;对于追求高端体验的消费者来说&#xff0c;物有所值。 主播产品B∶这款产品的价格相对较低&#xff0c;性价比很高&#xff0c;对于预算有限的消费者来说&#xff0c;是个不…

链表OJ---排序链表

https://leetcode.cn/problems/7WHec2/description/ //合并 struct ListNode* merge_link(struct ListNode* head1, struct ListNode* head2) {struct ListNode* temhead malloc(sizeof(struct ListNode));temhead->val 0;struct ListNode *tmp temhead, *cur1 head1, *…

Leetcode—2696. 删除子串后的字符串最小长度【简单】

2023每日刷题&#xff08;八十八&#xff09; Leetcode—2696. 删除子串后的字符串最小长度 实现代码 class Solution { public:int minLength(string s) {string sub " ";for(auto c: s) {if((c B && sub.back() A) || (c D && sub.back() C…

【推荐100个unity插件】3D物品描边效果——Quick Outline免费插件

文章目录 前言地址介绍使用例子完结 前言 关于3D描边&#xff0c;其实之前有用shader弄过一个&#xff1a;【实现100个unity特效】shader实现3D物品闪光和描边效果 但是很遗憾的是他不支持URP项目&#xff0c;所以现在推荐这款插件&#xff0c;他能很好的支持URP&#xff0c;…

SAP EXCEL上传行数限制问题(ALSM_EXCEL_TO_INTERNAL_TABLE)

标准函数ALSM_EXCEL_TO_INTERNAL_TABLE上传EXCEL函数限制上限是9999行&#xff0c;如果上传数据记录数超过9999行的情况&#xff0c;需要拷贝标准的函数封装一个自定义的函数进行处理 标准的函数ROW的长度为4位&#xff0c;如下图所示 因此&#xff0c;如果想行数的位数超过4位…

Wordpress seo优化该怎么做?

Wordpress作为开源管理系统&#xff0c;目前已然是世界上最流行的cms之一&#xff0c;这不仅仅因为他开源&#xff0c;对用户友好&#xff0c;让任何人都能轻而易举的制作网站&#xff0c;更是因为这套程序对于搜索引擎非常友好&#xff0c;是做谷歌seo的不二之选 Wordpress作为…

【仿网易云H5部署】Nodejs后台 + uniapp前台 部署

前言 之前在b站跟着学习写了前锋的<仿网易云音乐>uniapp项目 , 在这里记录一下H5版本的部署上线的过程. 这是该项目的b站链接:【千锋教育】前端项目_uni-app入门到实战项目之《仿网易云音乐》_哔哩哔哩_bilibili 一.后端 使用宝塔面板来部署 (1) 百度搜索宝塔面板, 复…

python的 read, readlines,readline 有何异同,读取文件的时候用哪个好?怎么选择。

先看是什么&#xff0c;再看怎么用。着急的话&#xff0c;可以看最后的一节。 开始前&#xff0c;先介绍一个小技巧&#xff1a;内置函数 repr&#xff08;英文名representation&#xff09;。开发调试用的&#xff0c;返回一个对象的字符串表示形式&#xff0c;包含对象的类型…

GitLab入门指南:上传与下载操作一网打尽

GitLab简介&#xff1a; GitLab是一个基于Git的开源仓库管理系统&#xff0c;提供了一个Web界面的Git存储库管理器&#xff0c;并集成了多种开发工具的功能&#xff0c;如代码审查、问题跟踪、持续集成和持续部署等。GitLab可以在本地服务器上部署&#xff0c;也可以使用其提供…

spring mvc 请求与响应

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 知…

Python批量采集亚马逊商品数据

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 知识点: 爬虫基本流程 非结构化数据解析 开发环境&#xff1a; python 3.8 解释器, 运行代码 pycharm 随便 配置 python解释器 DrissionPage >>> p…

注解实现策略模式

代码结构如下 代码如下 Getter AllArgsConstructor public enum AuditPlutusEnum {BACK("回款"),REFUND("退款"),INVOICE("开票");private final String name; }Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Component public…

深入解析与实践:基于VUE的axios异步请求应用指南

一、Ajax回顾 1、Ajax介绍 Ajax 是指一种创建交互式网页应用的开发技术。Ajax 异步 JavaScript 和 XML。 2、Ajax作用 Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下&#xff0c;对网页的某部分进行更新&#xff08;局部更新&#xff09;。传统…

ToDesk/向日葵的MAC远程鼠标控制不了?如何解决

不知道各位使用Mac电脑的小伙伴们&#xff0c;在日常进行跨设备远控操作时是否曾遇到过远程鼠标控制不了的问题&#xff1f;其实这是因为有项系统权限没有开设导致的&#xff0c;本篇文章木木小编就给大家逐步教学一下针对该问题如何解决才有效&#xff01; 当通过ToDesk远程连…

【学网攻】 第(8)节 -- 端口安全

文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan【学网攻】 第(5)节 -- Cisco VTP的使用​​​​​​【学网攻】 第(6)节 -- 三层交换机实现VLAN间路由【学网攻…