什么是RPC
借用维基百科的一个解释,远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议网络传输协议")。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用[面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用,例:Java RMI
远程方法调用讲的是两个不同进程方法之间的调用,如果要实现远程方法调用,就需要借用网络,通过数据传输来进行调用,对于RPC的协议,双方可以灵活定义,大体可分为下面三部分
1.服务端的地址,类或者接口
2.调用的方法
3.入参
例如可通过http协议、servelet手写自己公司的RPC框架,而dubbo支持两种协议,http、dubbo(基于netty实现)
dubbo主要组件
在dubbo中,主要包括了服务提供者、消费者、注册中心、监控中心这四大组件,下面是dubbo官网的架构图
1.服务提供者:服务提供者通常就是我们的接口和具体实现类,如用户中心user-center的Userservice,启动时将接口注册到注册中心去,这里的接口和接口实现类会有一个对应关系
2.注册中心:因为是RPC框架,是两个不同进程之间的调用,所以需要将服务接口的接口信息(地址、方法)这些存储到分布式环境中,以供消费者调用,比如redis、zk,通常dubbo和zk结合使用,是因为zk的节点有很多种适合这个场景,如zk的watch机制,节点变化通知其他节点特性
3.消费者:消费者也就是接口的调用者,消费者引入服务提供者的client接口包,然后通过注册中心拿服务提供者的网络地址,进行远程方法调用
4.监控中心:监控中心通常就是统计服务的调用次数,在实际生产环境我们用的还不是很多