什么是RPC?
RPC全称remote procedure call 远程过程调用,假设有两台服务器,A服务器上已经部署了应用,B服务器上也部署了应用,A想要调用B上的方法,因为AB不在同一个内存空间中,所以无法相互调用,所以就需要网络远程调用,来表达调用语义和传达数据。
各种语言都有自己的RPC框架,Dubbo是其中之一。
Dubbo中各节点:
图中节点调用关系说明:
provider是服务提供者,container是服务运行所需容器。
0节点:服务容器负责 启动 加载 运行服务提供者。
Registry服务注册中心
1节点:服务提供者在启动时,向注册中心注册服务。
Consumer服务消费者
2节点:服务消费者在启动时,向注册中心订阅,自己所需要的服务。
3节点:注册中心返回服务提供者的地址列表给服务消费者。
4节点:服务消费者,从从服务提供者列表中,选择提供者进行调用。
Monitor:监控中心,统计服务调用次数,时间
5节点:服务提供者和消费者,累计调用次数,调用时间,每分钟发送一次数据统计到监控中心。
Zookeeper:
通过Dubbo图中可以看出,注册中心非常重要,Dubbo官方推荐使用Zookeeper作为注册中心,Zookeeper作为分布式协调组件,本质上是一个软件。
常用功能:
发布订阅功能
分布式、集群管理功能
使用Java编写
协议
在服务提供者中,可以指定协议名称和端口号
Dubbo支持的协议有dubbo,rmi,hessian、http、webservice、rest、redis
等。推荐使用dubbo协议。
dubbo协议使用单一长连接,NIO异步通讯
适合小数据量大并发的服务调用
不适合传输大数据量服务,例如文件,视频等。