Dubbo入门(一)
1.介绍
Apache Dubbo是一款微服务开发框架,用于解决微服务架构下的服务治理与通信问题
2.历史
Apache Dubbo最初是为了解决阿里巴巴内部的微服务架构问题而设计并开发的,在十多年的时间里,它在阿里巴巴公司内部的很多业务系统得到了非常广泛的应用。最早在2008年,阿里巴巴就将Dubbo捐献到开源社区,它很快成为了国内开源服务框架选型的事实标准框架,得到了业界更广泛的应用。在2017年,Dubbo被正式捐献Apache软件基金会并成为Apache顶级项目,开始了一段新的征程
阿里巴巴将其内部HSF系统与开源社区Dubbo相融合,与社区一同推出了云原生时代的Dubbo3架构,截止2022年双十一结束,Dubbo3已经在阿里巴巴内部广泛落地,实现了老版本HSF2框架升级,包括电商核心、阿里云等核心系统已经全面运行在Dubbo3之上
依托于Dubbo3,阿里推出了自己的微服务解决方案DNS(Dubbo,Nacos,Sentinel)
3.官方网站
- 官方文章:cn.dubbo.apache.org/zh-cn/
- github:github.com/apache/dubb…
3.定位
- 初期:Dubbo被设计为一种RPC加服务治理的解决方案,旨在构建面向服务的架构(SOA)
- 后期:在2018年被捐赠给Apache之后,Dubbo的定位发生了重大变化。它不仅仅变成了一个易用、高性能的Web和RPC框架,更进一步地为构建企业级微服务提供了一整套的能力和工具(服务治理),包括服务发现、流量治理、可观测性、认证鉴权等,同时,还推出了相应的最佳实践
4.核心特性
5.Dubbo3核心升级内容
介绍
Dubbo3基于Dubbo2演进而来,在保持原有核心功能特性的同时,Dubbo3在易用性、超大规模微服务实践、云原生基础设施适配等几大方向上进行了全面升级
易用性
Dubbo3倡导的开箱即用理念,使得微服务的部署和管理变得更为简单。通过Dubbo官网提供的Initializer,你可以轻松地初始化项目,无需手工进行复杂的设置。基于原生库或简单的拓展,你就能实现大部分的微服务治理能力。此外,Dubbo3的多语言支持非常完善,已经覆盖了Java、Golang、Rust、Node.js、Python等多种主流编程语言,满足了开发者的多样化需求
大规模微服务实践
- 高性能的通信:Dubbo支持多种通信协议,包括新一代的Triple协议和gRPC协议,能够提供高效稳定的通信服务
- 高度可拓展:Dubbo提供了对SPI的支持,可以实现多种序列化方式和协议,进而可以根据不同的应用场景灵活地进行拓展
- 丰富的服务治理能力:Dubbo具备丰富的服务治理能力,可以帮助开发者方便地管理和维护微服务
- 大规模集群的水平扩展能力:Dubbo支持在大规模集群环境下进行水平扩展,保证了服务在高并发情况下的稳定性
云原生友好
- 容器调度平台友好:Dubbo兼容并能充分利用Kubernetes这种领先的容器调度平台的优势,以便更好地管理和调度服务
- 对Service Mesh友好:Dubbo能够顺利地与Service Mesh这种微服务架构的新趋势结合,使得服务间的通信更加便捷和安全
6.版本匹配
- JDK:8
- Dubbo:3.1.11
- SpringBoot:2.3.12
- 问题:
- JDK8与Dubbo3.1之前配合Zookeeper会出现一个不影响使用的异常(节点已存在),只有日志低级别才能看到
- JDK17与Dubbo3.1之前配合使用会出现JDK9之后的深反射问题,需要配置JVM参数来解决
- Dubbo3.2.0.beat4以前的版本使用的是Spring5.2.x,不能支持JDK17,会出现异常,需要将Dubbo版本升级到3.2.0.beat5以上版本
6.优势
微服务编程范式和工具
Dubbo支持基于IDL或语言特定方式的服务定义,提供多种形式的服务调用形式(如同步、异步、流式等)
高性能的RPC通信
Dubbo帮助解决微服务组件之间的通信问题,提供了基于HTTP、HTTP/2、TCP等的多种高性能通信协议实现,并支持序列化协议扩展,在实现上解决网络连接管理、数据传输等基础问题
微服务监控与治理
Dubbo官方提供的服务发现、动态配置、负载均衡、流量路由等基础组件可以很好的帮助解决微服务基础实践的问题。除此之外,您还可以用Admin控制台监控微服务状态,通过周边生态完成限流降级、数据一致性、链路追踪等能力
部署在多种环境
Dubbo服务可以直接部署在容器、Kubernetes、Service Mesh等多种架构下
活跃的社区
Dubbo项目托管在Apache社区,有来自国际、国内的活跃贡献者维护着超10个生态项目,贡献者包括来自海外、阿里巴巴、工商银行、携程、蚂蚁、腾讯等知名企业技术专家,确保Dubbo及时解决项目缺陷、需求及安全漏洞,跟进业界最新技术发展趋势
庞大的用户群体
Dubbo3已在阿里巴巴成功落地,实现了对老版本HSF2框架全面升级,成为阿里集团面向云原生时代的统一服务框架底座,庞大的用户群体是Dubbo保持稳定性、需求来源、先进性的基础
7.Dubbo不是什么
不仅仅只是一款RPC框架
Dubbo提供了内置RPC通信协议实现,但它不仅仅是一款RPC框架。首先,它不绑定某一个具体的RPC协议,开发者可以在基于Dubbo开发的微服务体系中使用多种通信协议。其次,除了RPC通信之外,Dubbo提供了丰富的服务治理能力与生态
不是gRPC协议的替代品
Dubbo支持基于gRPC作为底层通信协议,在Dubbo模式下使用gRPC可以带来更好的开发体验,享有统一的编程模型和更低的服务治理接入成本
不只有Java语言实现
自Dubbo3开始,Dubbo提供了Java、Golang、Rust、Node.js等多语言实现,未来会有更多的语言实现