分布式系统rpc远程调用

参考:https://www.jianshu.com/p/5b90a4e70783

rpc远程调用

rpc框架是什么?

RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

rpc怎么做?

连接--------- 通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。
寻址-----------A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称名称是什么。
编码--------由于网络协议是基于二进制的,内存中的参数的值要序列化成二进制的形式,也就是序列化(Serialize),通过寻址和传输将序列化的二进制发送给B服务器。
解码----------B服务器收到请求后,需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达方式,然后找到对应的方法(寻址的一部分)进行本地调用,然后得到返回值。
处理返回值--------返回值还要发送回服务器A上的应用,也要经过序列化的方式发送,服务器A接到后,再反序列化,恢复为内存中的表达方式,交给A服务器上的应用

在这里插入图片描述

dubbo-远程调用(RPC)具体实现

dubbo是什么?
Apache Dubbo是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA( 面向服务的架构)服务治理方案。Dubbo就是资源调度和治理中心的管理工具。

dubbo功能分析
在这里插入图片描述
dubbo的调用过程是consumer和provider在启动的时候就和注册中心建立一个socket长连接。provider将自己的服务注册到注册中心上,注册中心将可用的提供者列表notify给consumer,consumer会将列表存储到本地缓存,consumer基于负载均衡算法选举出一个要调用的提供者,去远程调用。
Monitor这是一个监控,图中虚线表明Consumer 和Provider通过异步的方式发送消息至Monitor,Consumer和Provider会将信息存放在本地磁盘,平均1min会发送一次信息

Zookeeper-------服务注册与发现的注册中心

zookeeper是什么?
zookeeper是一种集中式服务,用于维护配置信息,命名,提供分布式同步和提供组服务。
zookeeper是一个分布式,开放源码的分布式应用程序协调服务。是集群的管理者,监视集群中的每个节点的状态,根据节点提交的反馈进行下一步合理的操作。
zookeeper在dubbo中的作用

1.当提供者出现断电等异常停机时,注册中心能自动删除提供者信息
2.当注册中心重启时,能自动恢复注册数据,以及订阅请求
3.当会话过期时,能自动恢复注册数据,以及订阅请求
4.当设置<dubbo:registry check=“false”/>,记录失败注册和订阅请求,后台定时重试
5.通过<dubbo:registry group=“dubbo”/>设置zookeeper的跟节点,不设置将使用无根树
在这里插入图片描述

发布了29 篇原创文章 · 获赞 0 · 访问量 1663

猜你喜欢

转载自blog.csdn.net/glamour2015/article/details/104093834