什么是rpc框架
- rpc(remote procedure call protocol)远程过程调用协议rpc,其目的:将网络通信方面封装好,使得我们能像调用本地服务一样调用远程服务.
- 这里说一下整个通信流程:
1. client调用本地调用方式调用服务
2. client stub接收调用将数据组装准备进行网络传输
3. client stub找到服务地址,将信息发送到服务端
4. server stub接受消息进行解码,根据信息调用本地服务
5. server执行将结果返回给server stub
6. server stub 将信息打包发送导client stub
7. client stub接受消息进行解码
8. client得到最终结果
这里rpc的目的就是将中间2-7过程分装好,使得我们就像调用本地服务一样调用远程机器上的服务
什么是dubbo
- 一种分布式rpc架构,阿里开发的一种rpc框架
- github:https://github.com/dubbo
- 中文文档:https://dubbo.gitbooks.io/dubbo-user-book/content/preface/background.html
- 文档中很多地方提到分布式和集群这里引用知乎回答:
- 分布式:一个业务拆成多个子业务部署到不同的服务器
- 集群:同一个业务,部署到多个服务器上
- 一张很经典的图来看dubbo(来自文档)
整个流程如下:
0. 服务放到运行容器当中,由运行容器运行现在大致有三种方法调用服务
(1)使用dubbo自带到container进行调用
(2)打包成webapp使用tomcat容器进行部署
(3)自己创建main方法运行
1. 服务在注册中心注册,由注册中心统一管理(常用的注册中心:zookeeper)
2. 用户在注册中心订阅服务
3. 注册中心将服务地址列表给用户
4. 用户通过代理类invoke调用远程服务,这里代理invoke方法封装远程通信的细节
5. 监控中心统计相当于log数据统计
什么是序列化
- 序列化:将要传输的数据编码成二进制编码方便进行传输
- 反序列化: 将二进制串解码成数据对象
- 注意在rpc当中数据传输阶段一定要进行序列化
什么是soa
- soa(Service Oriented Architecture)面向服务架构,将应用程序不同功能单元通过服务间良好接口联系起来.
- 也就是服务层 应用层 前端的三层架构