Dubbo 入门
背景
Dubbo是由阿里开源的一款分布式服务框架(RPC
),那么问题来了,RPC
是啥?
先来个场景,在日常开发过程中,每个程序猿都有自己的分工,但往往某个程序猿负责的接口需要其他猿提供接口,而且这个接口与自己待开发的接口分别属于不同系统,那这个时候怎么办呢?这个就是RPC
框架诞生的场景。
说了那么多,那什么是RPC
呢?下面是参考网上资料写的一个大概概念,了解一下即可。
RPC(Remote Procedure Call Protocol):即远程过程调用,两台服务器A、B,分别部署不同的应用a,b。当A服务器想要调用B服务器上应用b提供的方法的时候,由于不在一个内存空间,不能直接调用,因此需要通过网络来表达调用的语义传达调用的数据。 说白了,就是你在你的机器上写了一个程序,我这边是无法直接调用的,这个时候就出现了一个远程服务调用的概念。
上面就是RPC
的大致语义,目前市面上开源的RPC
框架有Dubbo
、Thrift
、Spring Cloud
等。
Dubbo简介
Dubbo
是国内最早开源的 RPC 框架,由阿里于 2011 年末对外开源。该框架每天为阿里内部2000+个服务提供大于30亿次访问量支持,由此可见该框架的稳定性。
Dubbo架构
上面这张图应该很熟悉吧,常见于各种Dubbo
的介绍文章中,图都快糊了。Dubbo 的架构主要包含四个角色:
Consumer
是服务消费者Provider
是服务提供者Registry
是注册中心Monitor
是监控系统
具体的交互流程大致如下:
Provider
端启动服务,向注册中心注册自己的服务;Consumer
端通过注册中心获取到Provider
节点后,通过Dubbo
的客户端SDK
与Provider
建立连接,并发起调用;Provider
一端通过Dubbo
的服务端SDK
接收到Consumer
的请求,处理后再把结果返回给Consumer
;Consumer
拿到结果后,结束调用;
QuickStart
网上有关SpringBoot
整合Dubbo
的文章很多,我就不废话了,这里贴一下github的链接,有兴趣可以看一下。
需要注意的是,为了后期方便研究Dubbo
源码,这里不使用SpringBoot
自带的Logback
,而是使用SLF4J
日志框架,同时将日志的级别更改为DEBUg
级别,如下所示: