本文将带你快速了解 Dubbo3 的设计背景、总体架构与核心特性、与典型用户如阿里巴巴 HSF2 的关系等。也可以通过如下部分了解更多:
Dubbo3 的设计与开发有两个大的背景。
首先,如何更好的满足企业实践诉求。 Dubbo 自 2011 由阿里巴巴捐献开源以来,一直是众多大型企业微服务实践的首选开源服务框架。在此期间,企业架构经历了从 SOA 架构到微服务架构变迁,Dubbo 社区自身也在不断的更新迭代以更好的满足企业诉求。然而 Dubbo2 架构上的局限逐渐在实践中凸显:
其次,适配云原生技术栈的发展。 微服务让业务开发演进更灵活、快捷的同时,也带来了一些它独有的特征和需求:如微服务之后组件数量越来越多,如何解决各个组件的稳定性,如何快速的水平扩容等,以 Docker、Kubernetes、Service Mesh 为代表的云原生基础设施为解决这些问题带来了一些新的选择。随着更多的微服务组件及能力正下沉到以 Kubernetes 为代表的基础设施层,传统微服务开发框架应剔除一些冗余机制,积极的适配到基础设施层以做到能力复用,微服务框架生命周期、服务治理等能力应更好地与 Kubernetes 服务编排机制融合; 以 Service Mesh 为代表微服务架构给微服务开发带来的新的选择,Sidecar 给多语言、透明升级、流量管控等带来的优势,但同时也带来运维复杂性、性能损耗等弊端,因此基于服务框架的传统微服务体系还将是主流,长期仍将占据半壁江山,在长时间内将会维持混合部署状态。
Dubbo3 依旧保持了 2.x 的经典架构,以解决微服务进程间通信为主要职责,通过丰富的服务治理(如地址发现、流量管理等)能力来更好的管控微服务集群;Dubbo3 对原有框架的升级是全面的,体现在核心 Dubbo 特性的几乎每个环节,通过升级实现了稳定性、性能、伸缩性、易用性的全面提升。

Dubbo2 仍旧是国内首选开源服务框架,被广泛应用在互联网、金融保险、软件企业、传统企业等几乎所有数字化转型企业中,久经规模化生产环境检验。以 Dubbo2 的贡献者和典型用户阿里巴巴为例,阿里巴巴基于 Dubbo2 在内部维护的 HSF2 框架经历了历次双十一峰值考验,每天数十亿次的 RPC 调用,治理着超过千万的服务实例。在长期的优化和实践积累中,阿里巴巴有了对下一代服务框架的设想与方案,在内部开始了快速演进,并快速的被贡献到 Apache 社区,如同阿里巴巴一样,其他用户的实践诉求与痛点也在开源社区快速的积累,形成了一致的方向和技术方案,可以说 Dubbo3 的诞生就来自于超大基数的企业用户积累,为了更好的满足他们的实践诉求。

Dubbo3 融合了阿里巴巴 HSF2 及其他社区企业的大量服务治理经验,当前 Dubbo3 已经被全面应用到生产实践环境,用户包括阿里巴巴电商、饿了么、钉钉、考拉、阿里云、小米、工商银行、风火递、平安健康等。社区与用户的合作形成的良性循环极大的促进了 Dubbo3 的发展,阿里巴巴已经以社区版 Dubbo3 完全取代了内部维护的 HSF2 框架,他们的实践经验一方面推动 Dubbo3 的稳定性,另一方面正够源源不断的将服务治理实践经验输出到开源社区。
随着微服务实践经验的积累,微服务被拆分成更细粒度,部署到越来越多的机器实例,以支撑不断增长的业务规模。在众多的 Dubbo2 企业用户中,尤其是以金融保险、互联网为代表的规模化企业开始遇到集群容量瓶颈问题(典型的请参照 工商银行实践案例 ):
Dubbo3 在设计上很好的解决了这些问题,通过全新设计实现的服务治理(服务发现)模型,可以实现服务发现链路上的数据传输、数据存储量平均下降 90% 左右;同时 Dubbo3 自身在业务进程中变得更轻量、更稳定,实现提升资源利用率 50%。
Dubbo3 一个更大的优势在于其对整体架构稳定性的提升,新的服务发现架构使得对于整个集群容量、可伸缩性评估变得更容易、更准确。

如果将应用开发粗略划分为业务开发、运维部署两个层次,其中变化比较频繁的因素包括服务(接口)、应用、机器实例。在 2.x 时代,所有这三个因素的增长都会影响微服务集群的总体容量,尤其是接口增减带来的波动,对整体容量评估是非常不透明的。而在 3.0 中集群容量变化仅与应用名、机器实例两个因素相关,而容量评估的对象往往都是应用与实例,因此整个集群变的更稳定透明。
在云原生时代,底层基础设施的变革正深刻影响应用的部署、运维甚至开发过程,往上也影响了 Dubbo3 微服务技术方案的选型与部署模式。
新一代的 Triple 协议基于 HTTP/2 作为传输层,具备更好的网关、代理穿透性,原生支持 Stream 通信语义,兼容 gRPC 协议。
Dubbo3 从服务定义、RPC 协议、序列化、服务治理等多个方面都已经将多语言友好性作为重点考量因素,目前提供了 Java、Golang 稳定的多语言版本,更多语言版本的 3.0 实现如 Rust、Javascript、C/C++、C# 等在开发建设中。
Dubbo3 开发的应用可以原生部署到 Kubernetes 平台,Dubbo3 在地址、生命周期等已设计可与 Kubernetes 等容器调度平台对齐;对于要进一步复用 Kubernetes 底层基础设施能力的用户来说,Dubbo3 也已对接到了原生的 Kubernetes Service 体系。
Service Mesh 强调控制面在微服务治理中的作用,在一定程度上推动了控制面通信协议、职责范围的扩展与标准化;传统 Mesh 架构下的 Sidecar 模型强调旁路代理对于流量的统一管控,以实现透明升级、多语言无感、无业务侵入等特性。
Dubbo3 提供了基于自身思考的 Dubbo Mesh 解决方案,强调了控制面对微服务集群的统一管控,而在部署架构上,同时支持 sicecar 与无 sidecar 的 proxyless 部署架构,使用 Dubbo Mesh 的用户基于自身的业务特点将有更多的部署架构选择。
我们正看到越来越多的异构微服务体系互通的诉求,典型如 Dubbo、Spring Cloud、gRPC 等。有些是因为技术栈迁移,有些是组织合并后需要实现业务互调,Dubbo3 借助于新的服务发现模型以及可灵活扩展的 RPC 协议,可以成为 Dubbo3 未来的发展目标。
原文首于 Dubbo 官网:https://cn.dubbo.apache.org/zh/overview/what/dubbo3/
欢迎在 https://github.com/apache/dubbo 给 Dubbo Star。
搜索关注官方微信公众号:Apache Dubbo,了解更多业界最新动态,掌握大厂面试必备 Dubbo 技能
一文解决关于VLAN所有的疑惑VLAN基本概念为什么需要VLAN?怎么在交换机上划分VLAN,VLAN的工作原理有了子网,已经隔离了广播,还需要VLAN干啥?只进行子网划分,不进行VLAN划分VLAN划分与子网划分附加VLAN信息的方法VLAN划分交换机的端口类型(Access和Trunk)一、访问链接二、汇聚链接汇聚链接VLAN间通信为什么要进行VLAN间通信?路由器实现VLAN间通信路由器和交换机的连接方式通信细节三层交换机实现VLAN间通信加速VLAN间通信三层交换机与路由器三层交换机路由器路由器和交换机配合构建LAN的实例使用VLAN设计局域网的特点VLAN增加网络的灵活性不使用VLA
✅作者简介:大家好,我是小杨📃个人主页:「小杨」的csdn博客🔥系列专栏:小杨带你玩转C语言【初阶】🐳希望大家多多支持🥰一起进步呀!大家好呀!我是小杨。小杨花几天的时间将C语言中的操作符这部分知识做了一个大总结,在方便自己复习的同时也能够帮助到大家。通篇字数在一万字左右,可以算作是非常详细了,一文就可以带领大家彻底掌握操作符这部分内容,文章很长建议先收藏再看,防止下次想看就找不到啦。文章目录✍1,算术操作符✍2,移位操作符 🔍2.1,左移操作符 🔍2.2,右移操作符 ✨2.2.1,算术移位 ✨2.2.2,逻辑移位✍3,位操作符 🔍3.1,按位与&
每个企业都希望在完成项目后获得盈利,但不少企业到了年终后才发现项目做了不少,公司却并没能达到预期,甚至还出现了亏损。那么钱究竟去了哪里?很多公司都搞不清楚原因,出现糊涂账较多的状况,这将会造成严重的后果,尤其在疫情影响下,大环境很恶劣,如果是大公司的事业部门出现亏损,就可能会导致事业部门解散;如果是小公司出现亏损,就很容易导致公司倒闭;怎样做才能确保我们所完成的项目都能获利?从财务角度看,要确保盈利必须做到合理估算成本,只有这样才能在对外签订合约时做出合理报价,在对内在开始项目前做出充分评估投入代价,同时在实施过程中还要控制成本得当,最后项目结束时才会有可能获得盈利。那么我们怎样才能准确的判断
1.Zookeeper Zookeeper是 ApacheHadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高。 Zookeeper的功能主要是它的树形节点来实现的。当有数据变化的时候或者节点过期的时候,会通过事件触发通知对应的客户端数据变化了,然后客户端再请求zookeeper获取最新数据,采用push-pull来做数据更新。服务注册和消费信息直接存储在zk树形节点上,集群下采用过半机制保证服务节点间一致性。 2.Nacos Nacos是 Alibaba 公司推出的开源工具,用于实现分布式系统的服务发现与配置管理。Nacos是Dub
COINDAO旨在重建社区信任和安全。基于皖北基因的强烈共识,COINDAO自发产生了一个共创、共建、共治、共享的协作组织。它专注于DAO投资管理协议,为新的优质项目创造增长技术和资金。COINDAO的使命就是为真正的优质项目打造一个去中心化、公开透明的平台,让各个赛道上的优质项目能够以更低的成本快速募集资金并向公众开放.打破头部垄断。让真正的爱好者直接获得早期参与优质项目的资格,不再遥不可及,构建生态应用的可信体系,打造人人参与共建、人人共享的去中心化DAO好处。生态系统,我们称之为COINDAO生态系统。COINDAO国内各大财经网站宣发如下:COINDAO国外各大财经网站宣发: COIN
今天来说说前端低代码有多幸福?低代码是啥?顾名思义少写代码……这种情况下带来的幸福有:代码写得少,bug也就越少(所谓“少做少错”),因此开发环节的两大支柱性工作“赶需求”和“修bug”就都少了;要测的代码少了,那么测试用例也可以少写了。所以,总结低代码带来的幸福感有这三大点:开发效率提高开发成本减少维护性更高针对上述三点,我们展开说说。01、开发效率提高对于低代码的理解,个人认为可以通过配置化的低成本交互方式(主流是拖拽)加上少量的胶水代码,去满足一类应用的需求。这就说明,基于低代码,开发人员无需代码或说只需少量代码就可以开发出各类应用管理系统,如:OA协同办公、KM知识管理、CRM客户关系
目录🍊前言🍊:🍈一、宏与函数🍈: 1.宏与函数对比: 2.宏与函数的命名约定:🍓二、预处理操作符🍓: 1.预处理操作符"#": 2.预处理操作符"##":🥝三、条件编译🥝: 1.简述条件编译指令: 2.常见条件编译指令:🍒总结🍒:🛰️博客主页:✈️銮同学的干货分享基地🛰️欢迎关注:👍点赞🙌收藏✍️留言🛰️系列专栏:💐【进阶】C语言学习 🧧 C语言学习🛰️代码仓库:🎉VS2022_C语言仓库 家人们更新不易,你们的👍点赞👍和⭐关注⭐真的对我真重要,各位路过的友友麻烦多多点赞关注,欢迎你们的私信提问,感谢你们的转发!
作者:翟天保Steven版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处一、设计模式是什么? 设计模式是为了解决在软件开发过程中遇到的某些问题而形成的思想。同一场景有多种设计模式可以应用,不同的模式有各自的优缺点,开发者可以基于自身需求选择合适的设计模式,去解决相应的工程难题。 良好的软件设计和架构,可以让代码具备良好的可读性、可维护性、可扩展性、可复用性,让整个系统具备较强的鲁棒性和性能,减少屎山代码出现的概率。 想要熟练运用设计模式,提高自己的编程能力和架构能力,只有在自己工作中,结合自身工作内容,多思考多实践。本文只能通过举一些通俗的例子,来
自今年4月以来,在经历了UST脱锚,所引发的头部投资机构、独角兽CeFi平台的相继“破产”,加密行业迎来了前所未有的发展危机,一方面在于市场信心不足甚至恐慌,导致的资金加速出逃,另一方面市场整体增速缓慢导致各个板块收益疲软,导致投资者们难以获得可观的收益回报,市场进一步陷入新一轮的恶性循环。当然,即便是市场整体处于下行周期,但加密市场仍旧存在诸多的获利机会,新型LaaS协议ElephantSwap正在通过其独特的LaaS方案,来为DeFi市场恢复流动性注入信心,同时为投资者带来十分可观的套利空间。目前,PlatoFarm是首个使用ElephantSwap流动性服务的项目,投资可以通过将手中的P
一、简介1.1Flyway是什么?Flyway是一款开源的数据库版本管理工具,可以实现管理并跟踪数据库变更,支持数据库版本自动升级,而且不需要复杂的配置,能够帮助团队更加方便、合理的管理数据库变更。例:创建两个sql变更文件,项目启动后会将两个文件中的sql语句全部执行。1.2为什么使用Flyway?简单举个例子:开发时,如果A开发和B开发都对同一数据库进行了修改,那么如何进行数据同步呢?假如多个开发人员都修改了sql脚本,怎么同步到测试环境和生产环境?类似于以上的情况在日常开发中不胜枚举,在最开始的单体架构中,我们公司采用了通过校验数据库版本号来实现sql的变更,这虽然能够解决大部分问题,但