分布式系统之通信技术学习(导师leaderus)
1,几种常见的通信技术
1,RPC
RPC是建立在socket通信基础之上的,采用ascii编码代替普通的字节流,从图中可以看出RPC的过程
2,远程数据共享
常见的有FTP,到进来流行的zookeeper
3,消息队列
结构模型简单,可以轻松实现客户端多语言支持,在现在系统中运用很广,基本上每个分布式系统都存在消息队列。一般可以配合RPC使用
2,RPC通信技术原理
1,服务端设置监听端口,监听客户端发起的链接和调用
2,监听端口监听到请求,放到call队列
3,handler定时到call队列去处理请求
如果不能一次性发送完所有的数据,会将未发送完的响应发送给responder
客户端:
1, 客户端调用线程发起链接和call调用
2,同步等待响应
3 RPC架构图
1,服务提供这在远程调用管理组建注册信息
2,管理组建定时像服务提供者发送心检测和注册通知
3,服务调度者像管理组建发送请求,管理组建像服务调度者提供可供服务的远程服务
4,实现远程调度
这是一个RPC通信框架的核心,这是一个衡量RPC通信通信框架完整与否的重要考量
4 几种常用的RPC技术和框架
1,j2ee 采用RMI通信协议,不够通用
2,zeroc ice和阿里的duboo都采用custom socket通信(二进制传输性能较高)
备注:thrift支持多语言的一个高性能RPC通信框架,
dubbo,阿里开源的RPC平台,具有相对完善的生产环境组建,服务注册,负载均和,管理和监控工具,
但是只支持java于sping捆绑密切
zeroc ice,rpc平台,多语言跨平台,具有相对完善的生产环境组建,服务注册,负载均衡,管理和监控工具
5 几种RPC通信的技术实现
1 corba
corba用idl定义了客户端和服务的对象接口
2 webservice/soa
3 Rest
采用了http通信,传输的采用json,xml,atom,rss定义一个接口,不用像corba,webservice定义一个静态类生成大量的中间类,可以轻松实现多语言的调用
但是想比于传统的socket通信,效率不高,而且也不安全
3 zeroc ice rpc
跨平台/夸语言,性能较高,安全
6 zeroc ice
1,提供客户端和服务端的多语言注册
2,zeroc icegrid介绍
1,将部署和服务注册放到一起
2,zeroc ice的服务路由和负载均衡
每个node是一个独立进程组建,负责启动本机上的多个ice server
不同node上的相同的server服务实例组成一个Replication Group,并可以定义负载均衡策略,比较常用的是轮训方式以及基于机器负载的策略。
可以不同的服务定义不同定义不同的策略。
平台很具负载均衡策略返回一可用的地址列表,客户端缓存这个地址,供后继的服务访问中使用,当缓存超时或者地址不可用重新获取服务地址。
7,zeroc ice 运用到基于服务总线系统的常规框架
下图是服务总线的架构图
从上图可以看出有三个关键组建,负载均衡,服务目录组成,服务提供提供者。