草庐IT

【ArchSummit】阿里云原生微服务架构治理最佳实践

小明java问道之路 2025-01-03 原文

 

前言

📫 作者简介小明java问道之路,专注于研究 Java/ Liunx内核/ C++及汇编/计算机底层原理/源码,就职于大型金融公司后端高级工程师,擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。

📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样的认知和成长

🏆 InfoQ签约作者、CSDN专家博主/后端领域优质创作者/内容合伙人、阿里云专家/签约博主、51CTO专家 🏆

🔥 如果此文还不错的话,还请👍关注 、点赞 、收藏三连支持👍一下博主~

本文目录

前言

本文导读

一、云原生微服务的挑战和趋势

1、微服务在云原生下的挑战

1.1 挑战

1.2 微服务化深入服务治理是难点

2、云原生微服务的发展趋势

二、运行态服务治理最佳实践

1、无损上下线

2、安全生产(前后端全链路灰度发布)

三、开发态服务治理最佳实践

总结


前言

2022 年 9 月 26 -27 日,有幸参加极客邦科技旗下 InfoQ 中国举办的 ArchSummit 全球架构师峰会(杭州站)

本专栏是以“微服务架构设计模式与实践”为主题,经过推行多年,确实有很多应用程序落实了微服务架构,不过任有一些应用程序还处在 Monoliths 模式,而另一些则介于两者之间,而出现这样的情况,基本上就是公司在决定采用微服务和 Monoliths 时的技术折衷。这个专题,会相对聚焦在可落地的微服务架构经验分享。

大会内容涵盖人工智能、云计算、微服务、元宇宙、智能运维、大数据等主题,为企业管理者、架构师与开发人员提供了行业前沿视角与参考,帮助企业在数字化时代赢得先机,把握竞争优势。

本次大会官网ArchSummit 全球架构师峰会(杭州站),感兴趣的同学可以自行了解,错过杭州站的同学可以去了解一下北京站 

本文导读

本讲由阿里云云原生应用平台高级技术专家,阿里云微服务混合云产品研发负责人,Apache Dubbo PMC member,Apache Tomcat PMC member,Apache Member • Arthas Maintainer,阿里双十一中间件稳定性负责人望陶老师所分享。

一、云原生微服务的挑战和趋势

1、微服务在云原生下的挑战

1.1 挑战

稳定,业务高可用、多可用区部署;同城/异地容灾,业务多活;微服务需要更安全、更可信。

效率,白天流量高峰期发布;云边端一体化开发部署联调;服务治理体系强依赖SDK升级;K8s下应用IP的不确定、导致服务治理规则的失效。

成本,应用迁移_上云成本很高;极致、灵活的弹性

1.2 微服务化深入服务治理是难点

下面分享一下阿里的微服务治理技术演进路线:

微服务要想服务治理的好,首先是微服务治理的划分,全链路流量治理以及微服务引擎的服务治理。

阿里把整体流程划分为三个大模块,开发态Dev,测试态Test以及变更与运行态 Ops。

其中开发态Dev分为服务元信息、服务契约管理、服务调试、服务Mock、开发环境隔离、端云互联。

测试态Test分为服务压测、自动化回归、流量录制、流量回放。

变更与运行态 Ops,分为变更态和运行态,变更态有无损下线无损上线、金丝雀发布、A/B Test、全链路灰度;运行态有离群实例摘除、日志治理、流量控制与平滑、读写流量分离、熔断降级、缓存热点治理、同AZ优先路由、服务鉴权、推空保护、访问控制

阿里全链路流量治理(漏斗模型):

2、云原生微服务的发展趋势

后端服务BaaS化:DB,MQ, Redis, 注册中心、配置中心、服务治理中心

服务治理下沉、透明化:Java Agent, Sidecar, Java治 理和Mesh治理的统一,应用0成本. 上云

部署形态多云、混合云化:本地云端混部、多云混部、公私混部

二、运行态服务治理最佳实践

1、无损上下线

无损下线(白天大流量下发布依然丝般顺滑)

服务调用报错期的时候,由注册中心感知到服务端下线,通知消费者,客户端选择调用其他提供者,同时报错服务端确保在途请求处理完毕再下线。

无损上线

第一步应用初始化,第二部预建链接(Redis:JedisPool连接池创建后不会立即建连接;数据库:druid连接池异步创建连接),三注册服务(Dubbo/SC服务需要延迟暴露),四步,通过readiness检

查(K8s readiness检查和SpringCloud/Dubbo体系没有打通),第五步小流量预热(流量需要缓慢增加,但Dubbo 2.7.4.1以下版本存在服务预热不生效问题;Fastjson/Jetty低版本没有开启并行类

加载;JVM JIT编译问题引起cpu飙高;日志异步化),最后正常流量进入。

2、安全生产(前后端全链路灰度发布)

安全生产发布最佳实践

第一步:新建灰度Deployment,部署新版本的镜像,打上新版本的标签

第二步:配置针对新版本的标签路由规则

第三步:验证成功,扩大灰度比例。

第四步:若验证成功,将稳定版本的应用更新成最新镜像;若验证失败,把灰度的Deployment副本数调整到0或删除该Deployment

三、开发态服务治理最佳实践

多版本开发测试环境主要设计有,一、研发人员每个人独立部署一套环境;二、基于全链路流量控制进行逻辑隔离;三。入口请求打上标识,标识绑定应用 分组,形成规则推送到配置中心;四、大幅度降低研发成本

多版本开发测试环境,云上VPC主要是本地开发环境通过通道服务进行ECS代理,转发到基线环境上。

总结

本文围绕阿里云云原生的微服务挑战和趋势、运行态服务治理最佳实践、开发态服务治理最佳实践展开介绍阿里云原生微服务架构治理最佳实践展开说明和复盘。

感兴趣的同学可以自行了解其中更加详细的信息(微服务架构设计模式与实践),错过杭州站的同学可以去了解一下北京站

有关【ArchSummit】阿里云原生微服务架构治理最佳实践的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  3. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  4. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  5. 阿里云国际版免费试用:如何注册以及注意事项 - 2

    作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。​关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐

  6. 阿里云RDS——产品系列概述 - 2

    基础版云数据库RDS的产品系列包括基础版、高可用版、集群版、三节点企业版,本文介绍基础版实例的相关信息。RDS基础版实例也称为单机版实例,只有单个数据库节点,计算与存储分离,性价比超高。说明RDS基础版实例只有一个数据库节点,没有备节点作为热备份,因此当该节点意外宕机或者执行重启实例、变更配置、版本升级等任务时,会出现较长时间的不可用。如果业务对数据库的可用性要求较高,不建议使用基础版实例,可选择其他系列(如高可用版),部分基础版实例也支持升级为高可用版。基础版与高可用版的对比拓扑图如下所示。优势 性能由于不提供备节点,主节点不会因为实时的数据库复制而产生额外的性能开销,因此基础版的性能相对于

  7. ruby-on-rails - Rails 中同一个类的多个关联的最佳实践? - 2

    我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来

  8. ruby-on-rails - 向 Rails 3 添加 Ruby 扩展方法的最佳实践? - 2

    我有一个要在我的Rails3项目中使用的数组扩展方法。它应该住在哪里?我有一个应用程序/类,我最初把它放在(array_extensions.rb)中,在我的config/application.rb中我加载路径:config.autoload_paths+=%W(#{Rails.root}/应用程序/类)。但是,当我转到railsconsole时,未加载扩展。是否有一个预定义的位置可以放置我的Rails3扩展方法?或者,一种预先定义的方式来添加它们?我知道Rails有自己的数组扩展方法。我应该将我的添加到active_support/core_ext/array/conversion

  9. ruby - 最佳原则中的原则 - 2

    我似乎经常遇到一些设计问题,但我不知道是什么是真的很合适。一方面我经常听到我应该限制耦合和坚持单一职责,但当我这样做时,我常常发现它很困难到在需要时将信息获取到程序的一部分。为了例如,classSingerdefinitialize(name)@name=nameendattr:nameend那么Song应该是:classSongdefnew(singer)@singer=singerendend或classSongdefnew(singer_name)@singer_name=singer_nameendend后者耦合性小,按道理应该用。但如果我以后发现宋有什么需要了解更多歌手,我的

  10. ruby-on-rails - 与 ActiveMerchant 一起使用的最佳支付网关是什么? - 2

    我需要使用ActiveMerchant库在我们的一个Rails应用程序中设置支付解决方案。尽管这个问题非常主观,但人们对主要网关(BrainTree、Authorize.net等)的体验如何?它必须:处理定期付款。有能力记入个人帐户。能够取消付款。有办法存储用户的付款详细信息(例如Authotize.netsCIM)。干杯 最佳答案 ActiveMerchant很棒,但在过去一年左右的时间里,我在使用它时发现了一些问题。首先,虽然某些网关可能会得到“支持”——但并非所有功能都包含在内。查看功能矩阵以确保完全支持您选择的网关-http

随机推荐