当前位置: 首页 > 网络应用技术

dubbo3.0 |阿里巴巴服务框架三位一体的选择和实践

时间:2023-03-05 17:19:56 网络应用技术

  服务框架就像铁路的铁路一样。它是互操作性的基础。只有解决服务框架的互操作性,我们才能完成更高的业务互操作性。该框架是不可避免的趋势。Dubbo3.0是Dubbo2.0和HSF的融合,它是Ali经济的唯一标准服务框架内部业务,商业化和开源。

  服务框架就像铁路的铁路一样。它是互操作性的基础。只有解决服务框架的互操作性,我们才能完成更高的业务互操作性。该框架是不可避免的趋势。

  Dubbo3.0是Dubbo2.0和HSF的融合,它是Ali经济内部业务,商业化和开源的唯一标准服务框架。

  Dubbo和HSF在阿里巴巴的实践

  Dubbo和HSF是阿里巴巴当前使用的微服务RPC框架。

  在2011年的Dubbo开源之后,Dubbo迅速成为该行业中流行的微型服务框架产品,并且在国内外广泛使用。Dubbo项目出生于2008年。它首先在内部系统中使用阿里;2011年,Ali B2B决定开源整个项目,只花了一年的时间才收获来自不同行业的大量用户。2014年,由于内部努力,Dubbo暂停更新;2017年9月,Dubbo 3.0重新启动了开源。2019年5月,它被Apache孵化,成为第二个从阿里巴巴毕业的项目。

  HSF在阿里巴巴使用更多,并实现了从单体应用到微服务的架构的演变,支持了阿里双重十一年的平稳运行。自从2008年5月发行了第一个版本1.1以来,它已经经历了数年的迭代。HSF从基本的RPC框架逐渐发展为每日支持的微型服务框架,支持100万亿个级别的呼叫。用户可以选择少量配置,以轻松访问微服务系统以获得高性能稳定的服务呼叫。您还可以根据自己的业务扩展HSF,以增强获得整个链接的能力。

  对于小组的需求,稳定性和性能是核心。因此,当时由E-商务高级技术测试的HSF被选为新一代服务框架的核心。SUB后来,HSF启动了2.0版本,并重建了先前版本的主要问题的重建HSF,降低维护成本以及进一步提高稳定性和性能。HSF2.0解决了框架可扩展性的问题,例如支持不透明协议和序列化协议,支持不透明的不透明。基于HSF2.0 Java版本,该小组还执行了Multi -Multi -discor-语言客户端(例如CPP/nodejs/php.baf.bave HSF)也与Dubbo协议兼容,原始的Dubbo用户可以平稳迁移到新版本,因此HSF将在HSF启动后在组中完全滚动。在内部微服务框架中,经过了多年的洪水峰值的验证。

  下一代微服务的挑战和机遇

  但是,业务的发展和框架本身的迭代使两个框架从协议层的简单兼容性中无法满足需求。云计算的连续开发和云原始概念的广泛传播,微服务的发展具有以下趋势:

  这些趋势也为HSF和Dubbo带来了新的挑战。

  HSF和Dubbo的挑战

  Micro -Service框架是基本组件。当早期选择或业务发展到一定规模时,大多数公司都需要确定某个框架的使用。稳定,高效的自我开发框架通常需要长时间的迭代才能进行抛光和优化。因此,大多数公司倾向于使用开源。早期的组件。对于阿里巴巴云,这带来了一个问题:HSF框架是在内部使用的,并且云上的大多数用户是开源Dubbo Framework。支持的差异。

  如何使HSF中ALI组内部组件的最佳实践和切割 - 边缘技术更简单,直接输出到云中。每个是技术商业化的学生都会遇到并必须解决的问题。实际上,我们也进行了一些探索。最早在云上推动微服务的HSF框架。当关闭的源组件在云上输出时,对于许多用户而言,遇到问题后没有进行调查。BlackBox组件。我们发现这不是一个好产品。当在云上输出时,我们必须选择拥抱开源的方法,并将重点放在Dubbo和Spring Cloud Framework上。

  同时,同时由HSF和Dubbo框架引起的许多问题。如何将原始部门或公司的技术堆栈整合到现有技术系统中是不可避免的问题。2019年加入阿里巴巴。Koala以前已将Dubbo用作微服务框架。基于Dubbo,已经构建了大型微服务应用程序。迁移成本很高,风险很高。小组和考拉的基础设施部门需要很长时间才能长时间进行调查和解决方案设计,以确保在开始之前基本上是可行的从一批灰度到最终的全部数量。这种血液不仅需要消耗大量的人力,而且需要很长的时间,这将影响企业的发展和稳定性。时间,由于历史原因,该组中总是有一定数量的Dubbo用户。为了更好地为这些用户服务,HSF框架与Dubbo的API层兼容。但是,这种兼容性仅限于互操作性。随着Dubbo开源社区的多年发展,该基金会在灾难恢复,绩效和迭代性方面具有很大的劣势,并且很难使Dubbo的服务治理系统保持一致。在稳定和稳定性方面也有风险甚至不可能享受该集团技术发展的技术股息和Dubbo社区的发展。

  这些问题的根本原因是,封闭源的HSF不能直接用于大多数云中的用户和其他用户,而随着开放产品的持续开发,开源产品的挑战将变得更加密集来源和云。您越早解决此问题,阿里巴巴云和外部业务用户的云成本越低,生成的价值就越大。

  因此,HSF和Dubbo的整合是一般趋势。为了更好地为内部和外部用户服务,为了更好地为两个框架,Dubbo3.0和HSF3.0与Dubbo 3中的基础架构生态系统更好地开发。.0随着内核改编小组的发展。

  最终选择了三重策略Dubbo3.0下的服务框架

  Dubbo3.0与原始功能集和API完全兼容,同时,它具有以下新功能,它们面对云云的新特征。

  对于微服务框架,由于客户的业务守则,仍然存在很多挑战。

  首先,就迁移成本而言,我们希望将迁移的减少减少到0。在开始时,我们在云上出售了HSF + EDAS容器的体系结构。因此,由于代码不是开源,因此调查问题也很头疼。后来,我们发现大多数客户的微服务框架将选择开源的Dubbo/Spring Cloud,但是客户有自己的注册中心。您还需要将您的注册中心迁移到MSE注册中心。此过程要求用户更改代码。一般来说,讲话是一件非常困难的事情。许多客户的Dubbo版本仍在4 - 5年的版本中。您不仅需要关注研发,测试,操作和维护,而且还需要安排支持。这项行动将消耗大量人力资源。同时,面临许多稳定挑战。仅此步骤将阻止许多客户。为了解决客户的SDK升级问题,我们正在思考,我们不能迁移注册中心吗?有必要提供相同的服务治理能力。因此,我们提出了一项基于Java代理字节码增强的技术,以帮助用户使用云产品而不更改代码。维度和维度。

  为了选择中等和微服务框架的商业化,我们的态度一直在拥抱开源。

  我们还需要根据开源微服务框架提供差异化的服务治理功能。在Shangyun的过程中,K8S上传统的开源微服务的问题逐渐暴露出来。通过与客户进行一系列沟通,我们总结了一些主要的痛苦点,以供客户管理微服务,主要包括在线上下的非破坏性,在微服务发布,标记路由,服务验证和OUT -of -of -of -group实例删除的过程中离线。完整链接等的灰色等等,我们通过Java代理技术在没有更改代码的情况下通过Java Agent技术实现了上述问题。通过客户交流,收集需求,落入产品并证明该模型供客户演示验证该模型的运行,它的运行正向。方案,我们使用服务网格,WASM和其他技术。它还为客户提供支持,即在不修改代码线的情况下,我们在Java应用程序中具有一致的服务治理功能和经验。

  同时,我们在选择Java代理方面有一些尝试和选择。一开始,我们使用了封闭源开发的Java代理。每个云产品都有一个相应的Java代理。在同一时间,我们维护的Java代理已关闭。踏上一些坑后,我们决定使用Arthas One代理来重建服务治理系统代理以合成相关代理。同时,我们基地的Java代理也使用开源策略。我们使用开源Arthas One Agent。

  Dubbo3.0符合这个方向。通过Dubbo3.0 + Java代理,该集团的技术发展和Dubbo社区的演变以及商业实践的技术股息不断向云上的客户出口。

  服务治理无缝支持Dubbo3.0

  与阿里巴巴云的微服务治理有关的三种解决方案:MSE(Micro -Service Engine,提供微服务的能力),EDAS(全生周期监护权的应用程序平台),SAE(具有EDAS和SAE的无服务器应用程序平台),EDA和SAE具有深入的MSE服务治理能力;MSE的所有服务治理功能都可以解开包装,在过去五年中,包括Dubbo 3.0在内的所有开源Dubbo和Spring Cloud Frameworks支持。您不需要修改代码行,并且配置您只需要将Dubbo 3.0应用程序连接到EDAS/MSE/SAE。在发布Microservices的过程中包括非毁灭性的上和离线功能,使Microservices的生命周期对齐和K8S豆荚;标签路线削弱了对IP的依赖,服务验证,出发实例删除,全链接grayscale.Service模拟,服务监控,服务合同等。

  如何无缝升级HSF应用程序到Dubbo 3.0应用程序

  这三个是阿里巴巴的“自我研究”,“开源”和“商业化”采用统一的技术系统。在这个技术方向上,Dubbo 3.0的设计和着陆事业实现了统一的降落。在同一时间,EDAS容器4.X版本是Dubbo 3.0的商业输出形式之一。

  如果将其应用于EDA或SAE,则使用HSF + EDAS容器的体系结构。用户可以将HSF应用程序方便地升级到Dubbo 3.0应用程序。升级后,HSF应用程序可以遵循原始开发方法,并且还可以使用EDAS/SAE来提供Dubbo应用程序提供的更完整的服务治理功能。同时,您的HSF应用程序还将具有各种新功能,Dubbo 3.0的应用程序级服务,三重协议等。

  Java微服务近距离网状架构

  在非均质的微服务场景中,凭借ServiceMesh方案的受欢迎程度,如何使用原始微服务应用程序与服务网格微服务架构中的其他网格节点进行通信不需要在MSE微服务引擎上添加使节,并且可以与网格体系结构互操作而无需修改任何代码行。

  在Dubbo3.0的过程中,我们有许多大型实践,考拉,钉子等。

  让我们以指甲为例介绍

  背景

  为了拥抱容器化并享受云的福利,指甲文件于2020年推出了上山战役。目前,有50%的交通在公共聚会集群中运行。

  商业挑战

  文档的云分为两个阶段。

  在第一阶段,炸弹中有一个文件集群(即Ali集团中的网络)和云:轰炸机的内部集群进行了股票业务;云集群从事增量业务。内部群集的功能同时具有代理的功能:对于轰炸机中的上游服务,内部群集代理是文档云的群集的调用;对于云的群集,内部服务代理具有组内部的依赖性。

  第一阶段:弹跳中有一个簇和云

  在第二阶段,库存数据被迁移到云,只保留了云的群集。UpstreamServices和下游依赖性通过三重协议直接调用。

  第二阶段:只有一个云集群

  我们目前处于第一阶段。

  在第一阶段,我们有一些要求:

  1.我希望使用一组代码在弹跳和云中的两个簇中运行;

  2.我希望内部群集将继续使用HSF协议;

  3.希望在云上使用开源RPC协议;

  4.希望可以连接云和内部炸弹的簇。

  Dubbo 3.0,完全符合我们的需求。

  着陆计划

  1.双集群

  目前,文档中有两个簇。炸弹中的群集暴露了三重和HSF双重协议,而云的群集仅公开三重协议。

  炸弹中的版本编号保持1.0.0不变,并且在云上使用了1.0.0.zjk的版本编号。

  对于上游服务,炸弹中只有一个集群,并且在炸弹集群中所有流量都受到打击。无需在这项上游业务中进行任何转变。

  2.单位路线

  内部服务,拦截即将到来的HSF请求。如果请求需要在云上进行路由,则在云服务上启动三重调用。否则,请继续向轰炸机中的服务请求。

  3.下游依赖性

  该文档对炸弹中的服务有一定的依赖,无法删除。当前的方法是该文档本身已打包了下游服务,从而暴露了呼叫云的三重协议。

  4.服务治理

  服务互操作性完成后,它将开始查看如何控制服务。包括服务查询,服务测试,服务压力测试,服务流量限制,服务监控等。

  4.1 MSE

  服务查询,服务测试,服务路由等通过访问MSE完成。这里是特殊的MSE服务测试。最初在Curl HSF的HTTP端口对商业同学进行了测试。这非常麻烦,但是在访问MSE服务治理后,可以直接使用MSE平台的服务测试功能。服务测试是为用户提供私人网络邮递员,允许用户轻松致电他们的服务。需要在云上感知复杂的网络拓扑结构,没有关系服务,没有自我制造的测试工具,并且只需要通过控制台实现服务调用。支持Dubbo 3.0框架和Dubbo 3.0主流三重协议。

  4.2其他

  由于标准的Dubbo协议,AHA,ARM和其他中间件使用云上的云,因此它们可以无缝访问。

  借助指甲文档的三位一体股息,云在三个月内迅速使用到云中,在香an过程中遇到的问题通过云产品的生产化产品进行了标准化。服务框架从互操作性到治理的登陆。

  自我开发,商业和开源的“三位一体”使我们能够使用Double 11中的核心技术直接将其用于客户,从而省略了云层的沉积和输出过程,并减少了客户以获取客户“双重11技术发动机工程发动机。”阈值和成本可以帮助客户快速进入数字时代。Dubbo3.0是此策略下的选择。基于Dubbo3.0的基于Dubbo3.0和基于HSF的基于HSF的HSF在外部和内部。要创建最稳定的服务框架,请领导云时代的微服务。