Dubbo 入门
Dubbo是什么
个人理解中,Dubbo其实就是是一个用于服务治理的RPC框架。再进一步理解,即需要明白何为服务治理?何为RPC框架?
何为服务治理?当一个服务为了应对访问压力等问题时,可以通过拆分的方式将服务划分成多个微服务,但随之而来的问题是:
- 如果多个服务之间需要相互依赖,服务 URL 配置管理变得非常困难。甚至分不清哪个应用要在哪个应用之前启动
- 哪个服务面临的访问压力比较大?是否需要加机器?或者哪个服务访问压力小,可以减机器?在这些问题上,需要我们额外借助其他工具或者编写额外代码来统计各个服务的负载情况。
而服务治理其实就是对这些个服务进行一个统一管理,如引入服务注册中心,通过动态地注册和发现服务,使服务的位置透明。
何为RPC框架?首先RPC指的是远程过程调用,简单的理解其实就是一个节点请求另一个节点提供的服务。而一个RPC框架主要包括两个协议的实现,即传输协议和序列化协议。如使用HTTP 2.0作为传输协议的gRPC,又如dubbo采用的自定义报文的tcp协议。
再说说序列化协议,它定了传输内容最终以一种什么样的方式进行呈现,如基于文本编码的 xml json,也有二进制编码的 protobuf hessian等。
Dubbo可以做什么
理解了Dubbo为何物,对Duboo可以干啥,心中自然有点B数。
- 减少服务之间调用时代码的编写量
- 提供服务注册和发现,无需写死服务提供方的URL
- 提供的软负载均衡及容错机制,可以一定程度上代替硬件的负载均衡器,降低成本
Duboo如何使用
代码已经上传到码云:链接
代码结构可以分为三个模块,其实就是外观(门面)模式的实现。注册中心zookeeper需要提前安装。
dubbo4j
│
├─client:客户端,包含测试代码
│
├─facade-api:对外暴露的接口
│
└─service-api:服务端