Dubbo简介
Apache Dubbo 是一款微服务开发框架,它提供了 RPC通信,以及微服务治理 两大关键能力,致力于高性能透明化的远程服务调用方案。
这意味着,使用 Dubbo 开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用 Dubbo 提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时 Dubbo 是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。
Dubbo功能
Dubbo核心功能,主要提供了:远程方法调用、智能容错和负载均衡、提供服务自动注册、自动发现等高效服务治理功能。
Dubbo组件
1)服务提供者(Server)
对外提供后台服务,将自己的服务信息,注册到注册中心
2)注册中心(Registry)
用于服务端注册远程服务以及客户端发现服务。
目前主要的注册中心可以借由 zookeeper,eureka,consul,etcd 等开源框架实现。
比如:阿里的Dubbo就是采用zookeeper实现注册中心。
3)服务消费者(Client)
从注册中心获取远程服务的注册信息,然后进行远程过程调用。
4)监控(Monitor)
为了更好的调试,发现问题,需要监控,因此Dubbo引入了监控中心,可以对消费者和提供者进行管理。
Dubbo调用流程
Dubbo调用流程,大致分为如下11步:
Dubbo发展历程
dubbo的发展历程,经历过如下阶段:
大致总结为3段:
1.诞生阿里
dubbo前生2008年在阿里内部诞生,2011年开源,2012年发布2.5.3版本后停止更新。
2.进入apache顶级项目
2017年阿里重启dubbo项目,并于2018年进入apache孵化,2019年成为apache顶级项目。
3.dubbo3.o
2020年发布3.0,往云原生项目发展的战略计划。
Dubbo3 新特性
Dubbo3 依旧保持了 2.x 的经典架构,以解决微服务进程间通信为主要职责,通过丰富的服务治理能力来更好的管控微服务集群。
Dubbo3 对原有框架的升级是全面的,体现在核心 Dubbo 特性的几乎每个环节,通过升级实现了稳定性、性能、伸缩性、易用性的全面提升。
1.全面的性能提升
对比 2.x 版本,Dubbo3 版本服务发现资源利用率显著提升,对比接口级服务发现,单机常驻内存下降 50%。
对比应用级服务发现,单机常驻内存下降 75%,GC 次数趋零。
2.下一代 RPC 通信协议
新一代的 Triple 协议基于 HTTP/2 作为传输层,具备更好的网关、代理穿透性,原生支持 Stream 通信语义,兼容 gRPC 协议。
Triple是Dubbo3 提出的基于 HTTP2 的开放协议,基于 HTTP/2 上构建的 RPC 协议,完全兼容 gRPC,并在此基础上扩展出了更丰富的语义。
相比于原有 Dubbo2 协议Triple 有以下优势:
1)原生和 gRPC 协议互通
打通 gRPC 生态,降低从 gRPC 至 Dubbo 的迁移成本。
2)增强多语言生态
避免因 CPP/C#/RUST 等语言的 Dubbo SDK 能力不足,导致业务难以选型适配的问题。
3)网关友好
更容易到适配网关、Mesh架构,Triple 协议让 Dubbo 更方便的与各种网关、Sidecar 组件配合工作。
4)流式通信支持
Triple 协议支持 Request Stream、Response Stream、Bi-direction Stream。
3.Kubernetes
Dubbo3 开发的应用可以原生部署到 Kubernetes 平台,Dubbo3 也已对接到了原生的 Kubernetes Service 体系。
4.Service Mesh
Service Mesh,是一个形象化的词语表达:Service(服务)和Mesh(网格),它描述了服务间的依赖形态,就像下面这张网一样。
其中深色的是我们平时工作中接触最多的业务微服务,旁边蓝色的被称为边车Sidecar服务。
Sidecar作为业务微服务的“代理”,处理与其他业务微服务sidecar之间的非功能需求,如网络通信、安全、监控、流量控制等。
多个Sidecar之间的连接和交互组成了网格mesh。
Dubbo3 提供了基于自身思考的 Dubbo Mesh 解决方案,Dubbo3 规划了两种形态的 Service Mesh 方案:
- 经典的基于 Sidecar 的 Service Mesh;
- 无 Sidecar 的 Proxyless Mesh;
5.异构体系互通
典型如 Dubbo、Spring Cloud、gRPC 等,有着异构微服务体系互通的诉求,Dubbo3 借助于新的服务发现模型以及可灵活扩展的 RPC 协议,可以成为 Dubbo3 未来的发展目标。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》