Dubbo简介
大家好,从现在开始给大家分享Dubbo专题。那么我们为什么要学习Dubbo呢?Dubbo是什么东西呢?对于刚接触或刚开始工作的小伙伴可能有很多疑问。首先Dubbo是我们微服务开发的基础能力框架,在国内可以说是首屈一指的RPC框架,它不仅有完整的服务治理能力、服务注册发现能力、容错能力、集群能力等等,而且还提供丰富的可插拔的拓展能力。那什么是RPC以及市面上有哪些RPC框架呢?他们的性能优势如何呢?那么通过我们这个Dubbo专题系列进行详细的讲解。
前言
首先解释一下什么是RPC,RPC其全称为RemoteProcedureCall即远程过程调用。RPC用于在远程计算机上调用函数过程(通常也可以在同一台机器上的进程之间使用它)。假设这个场景:服务A、B两个服务分别部署在两台服务器上,服务A需要调用服务B上的某个方法,此时因为这是在两台不同的服务器部署的服务,因此需要通过建立网络连接进行交互的这一过程就叫远程服务调用。下图展示常见的两种RPC调用方式:
RPC跨进程调用:即在相同操作系统中不同进程间的服务调用
PRC跨系统且跨进程调用:即在不同操作系统间且跨进程远程服务调用
从通讯协议层面上讲可以分为:
基于HTTP协议:
1.1SOAP(基于XML传输)1.2REST(基于JSON传输)1.3Hessian(基于二进制传输)基于TCP协议:2.1Mina2.2Netty从语言和平台层面可分为:
Java平台
1.2RMI.NET平台2.1Remoting从调用过程可分为:
同步调用
异步调用1.什么是Dubbo
ApacheDubbo是由阿里巴巴开源的高性能,基于Java的RPC框架。像在许多RPC系统中一样,Dubbo围绕定义服务的思想,可以通过指定其参数、方法和返回类型调用远程的方法。在服务器端,服务器实现此接口(说明:服务提供端提供服务所实现的接口规范)并运行Dubbo服务器以处理客户端调用。在客户端,客户端有一个服务端存根(说明:服务端提供的接口规范),通过这个存根就可以像调用本地方法一样调用远程服务端方法。
2.RPC生态对比
Tips:以下对目前比较流行的RPC框架功能特性做一个简单横向对比。
Dubbo:阿里巴巴开源
Montan:新浪微博开源rpcx:Golangnet/rpcgRPC:Google开源Thrift:Facebook开源3.Dubbo发展历史
2.5.x-2.6.x主要功能特性
1.1服务注册/发现1.2健康检查1.3多协议支持1.4序列化服务1.5服务集群1.6失败执行策略1.7负载均衡策略1.8服务治理1.9服务监控1.10服务运行容器1.11直连提供者1.12服务代理1.13版本/分组管理1.14泛化调用1.15延迟暴露1.16本地存根1.17服务降级1.18路由规则配置2.7.x主要功能特性2.1应用粒度服务注册2.2HTTP/2(gRPC)协议支持2.3Protobuf支持2.4性能优化,调用链路性能提升30%2.5支持TLS安全传输链路2.6优化的消费端线程模型2.7新增更适应多集群部署场景的负载均衡策略2.8全新的应用开发API(兼容老版本应用)2.9服务自省2.10异步编程模型–消费端/提供端异步Dubbo3.0规划3.1Dubbo内核之Filter链的异步化3.2Reactive(响应式)支持3.3云原生/ServiceMesh方向的探索3.4融合并支持阿里内部4.Dubbo生态
Tips:下面是目前Dubbo框架支持的相关开源生态产品,包括了阿里自身开源维护的产品和其他国内外公司开源的产品。包括了:服务治理、注册中心、链路追踪、服务监控、JVM服务诊断、日志管理、服务网关等等。这些生态产品基本都是开箱即用。
5.Dubbo国内发展前景
随着目前微服务架构的火热,基础架构技术选型基本如下几种形式:
**SpringCloudNetflix**微服务技术套件
**SpringCloudAlibaba**微服务技术套件
SpringBoot、Dubbo、开源服务治理框架整合
SpringCloudNetflix**是由**Netflix贡献的一套完整的微服务架构技术栈,目前很多组件Netflix官方已经不在官方支持同时在微服务架构中一个重要的问题:分布式事务未能提供解决方案。
SpringCloudAlibaba是由阿里巴巴开源的一套微服务解决方案最近两年发展势头非常猛,也提供了比较完善的生态组件支持并且对分布式事务提供了解决方案(Seata)。
基于SpringBoot、Dubbo技术体系是过度到SpringCloudAlibaba、SpringCloudNetflix或者下一代微服务架构的中间产物。目前国内有不少公司采用这套架构来做,需要由公司架构师对整个技术栈进行架构设计和框架整合,自由发挥程度较高。
对比前面几种架构方案,在微服务架构中服务与服务间通讯基本基于两种通讯方式(也可以是消息中间件):HTTP、RPC。我们在技术选型中对于内部服务基本采用RPC方式(高效、大数据传输等),而在国内Dubbo是首屈一指的RPC服务治理框架。
6.版本说明
本系列以Dubbo最新版本2.7.x(目前最新版本:2.7.8)进行讲解。
7.基本技能
初学者应该具备基本的Java编程能力、网络通讯编程能力、常见的设计模式和一定的项目编程实战能力。
8.小结
在本小节中我们主要学习了什么是RPC、了解什么是Dubbo、Dubbo的发展历史以及Dubbo国内生态环境等。
本节课程的重点如下:
理解RPC
知道Dubbo是什么了解Dubbo的发展历史了解Dubbo国内发展前景