高并发架构系列:如何从0到1设计一个类Dubbo的RPC框架

  • 时间:
  • 浏览:3

1)服务注册

首先须要把服务注册到服务中心。随便说说可是在注册中心进行有有有三个小登记,注册中心存储了该服务的IP、端口、调用最好的妙招(协议、序列化最好的妙招)等。在zookeeper中,进行服务注册,实际上可是在zookeeper中创建了有有有三个小znode节点,该节点存储了上方所说的服务信息。

2.业务规模变大

最新拼多多技术部面试题:幽灵 读+分段锁+死锁+Spring Cloud+秒杀

2.服务寻址

数据传输采用那此协议,数据该怎样才能序列化和反序列化。

3)注册服务

可靠的寻址最好的妙招(主可是提供服务的发现)是RPC的实现基石,比如还可不可以zookeeper来实现注册服务等等。

2)注册中心(Registry)

用于服务端注册远程服务以及客户端发现服务。

目前主要的注册中心还可不可以借由 zookeeper,eureka,consul,etcd 等开源框架实现。

比如:阿里的Dubbo可是采用zookeeper实现注册中心。

再按照业务为单位,把所有调用相关的接口以业务为单元进行拆分;- UIC(用户中心服务)、SIC(店铺中心服务)...等等以业务为单位集群部署,按照业务提供服务。

往期博文:

2)服务发现

服务消费者在第一次调用服务时,会通过注册中心找到相应的服务的IP地址列表,并缓存到本地,以供后续使用。当消费者调用服务时,我太满 再去请求注册中心,可是直接通过负载均衡算法从IP列表中取有有有三个小服务提供者的服务器调用服务。

1.RPC框架有有有三个小核心角色

总之,要实现有有有三个小RPC不算难,难的是实现有有有三个小高性能高可靠的RPC框架,后续将结合Dubbo的实现同時 再探讨。

前面mike提到了RPC的核心目标:主可是补救分布式系统中服务之间的调用什么的问题。

具体,mike来为亲戚亲戚你们详解。

阿里P8架构师谈:Zookeeper的原理和分发,以及应用场景

应用系统一旦涉及到拆分部署,什么的问题就来了,急需四种 高效的应用应用线程间的通讯手段来完成你你这些需求,这就会涉及到分布式远程调用。

比如:B机器进行本地调用(通过代理Proxy)并且得到了返回值,此时还须要再把返回值发送回A机器,同样也须要经过序列化操作,但会 再经过网络传输将二进制数据发送回A机器,而当A机器接收到那此返回值并且,则再次进行反序列化操作。

2.RPC远程调用过程

你对RPC框架的底层原理掌握程度。

考验你的整体RPC框架系统设计能力。

RPC框架的目标可是要2~10那此步骤都封装起来。

1.建立通信

首先,要补救通讯的什么的问题,主可是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据就有 你你这些连接里传输。

4.NIO通信

1)服务调用方(client)调用以本地调用最好的妙招调用服务;

2)client stub接收到调用后负责将最好的妙招、参数等组装成不能进行网络传输的消息体;在Java里可是序列化的过程

3)client stub找到服务地址,并将消息通过网络发送到服务端;

4)server stub收到消息后进行解码,在Java里可是反序列化的过程;

5)server stub根据解码结果调用本地的服务;

6)本地服务执行补救逻辑;

7)本地服务将结果返回给server stub;

8)server stub将返回结果打包成消息,Java里的序列化;

9)server stub将打包后的消息通过网络并发送至消费方

10)client stub接收到消息,并进行解码, Java里的反序列化;

11)服务调用方(client)得到最终结果。

比如早期有有有三个小应用Java War包,将所有功能都打包,部署在有有有三个小单机服务器,调用接口也比较方便,不涉及到任何分布式场景。

2.RPC框架

3)服务消费者(Client)

从注册中心获取远程服务的注册信息,但会 进行远程过程调用。

即远程过程调用, 主要补救远程通信间的什么的问题,不须要了解底层网络的通信机制。

3.网络传输

以上可是RPC的介绍,更多Redis、Spring Cloud、MySQL数据库分库分表等高并发分发,具体请参考高并发架构系列专题:

1.RPC(Remote Procedure Call)

5.服务调用

所以,RPC的框架来了,阿里结构使用HSF,以及开源的RPC框架:Dubbo。

1. 业务规模小

于是,淘宝就把denali按照业务为单位拆分成了之类曾经的系统:UM(UserManger)、SM(ShopManager)..等等几三个小工程代码。

在过去持续分享的几十期阿里Java面试题中,几乎每次就有问到Dubbo相关什么的问题,比如:“怎样才能从0到1设计有有有三个小Dubbo的RPC框架”,你你这些什么的问题主要考察以下几条方面:

---------------end---------------------

当前所以RPC框架都直接基于netty你你这些IO通信框架,比如阿里巴巴的HSF、dubbo,Hadoop Avro,推荐使用Netty 作为底层通信框架。

随便说说,走到你你这些步涉及的知识体系非常的多:要求对通信、远程调用、消息机制等有深入的理解和掌握,要求的就有 从理论、硬件级、操作系统级以及所采用的语言的实现就有 清楚的理解。

3.Dubbo和HSF的出显

1)服务提供者(Server)

对外提供后台服务,将有些人的服务信息,注册到注册中心

随着业务的快速发展,业务太满、子系统也太满时。比如:淘宝的交易系统、商品系统、用户系统、评价系统...上百个系统的出显。

系统变得那末错综复杂,业务代码依然耦合在同時 。比如最早期的淘宝denali工程,涵盖所有业务系统的代码,就仅打包部署都须要很长的时间。

但会 ,随着每个业务线的快速发展,业务代码耦合在同時 ,上线后出显什么的问题急须要回滚代码,拉分支、少许的代码merge工作,你你这些过程极其痛苦。

你你这些并且,我就发现技术可能性成了业务的瓶颈,急需把业务单独抽离出来,个人单独部署。

随便说说不错请点赞支持,欢迎留言或进我的有些人群179961551领取【架构资料专题目合集90期】、【BATJTMD大厂JAVA面试真题30000+】,本群专用于学习交流技术、分享面试可能性,拒绝广告,我也会在群内不定期答题、探讨。