This commit is contained in:
by931
2022-09-06 22:30:37 +08:00
parent 66970f3e38
commit 3d6528675a
796 changed files with 3382 additions and 3382 deletions

View File

@@ -286,7 +286,7 @@ function hide_canvas() {
<p>建立通信之后,节点之间数据传输采用什么协议,也就是选择什么样的二进制数据格式组织;传输的数据如何序列化和反序列化,比如在 Dubbo 中,传输协议默认使用 Dubbo 协议,序列化支持选择 Hessian、Kryo、Protobuf 等不同方式。</p>
<h4>如何进行服务注册和发现</h4>
<p>服务注册和发现,也就是服务寻址,以 Dubbo 为例,下图分布式服务典型的寻址和调用过程:</p>
<p><img src="assets/CgqCHl6-XeSAaqlXAAE2pEPLeB0026.png" alt="image.png" /></p>
<p><img src="assets/CgqCHl6-XeSAaqlXAAE2pEPLeB0026.png" alt="png" /></p>
<p>服务注册,需要服务提供者启动后主动把服务注册到注册中心,注册中心存储了该服务的 IP、端口、调用方式协议、序列化方式等信息。</p>
<p>服务发现,当服务消费者第一次调用服务时,会通过注册中心找到相应的服务提供方地址列表,并缓存到本地,以供后续使用。当消费者再次调用服务时,不会再去请求注册中心,而是直接通过负载均衡算法从 IP 列表中取一个服务提供者调用服务。</p>
<p>上面列举了一些分布式服务框架的实现要点除了这些还有很多技术细节比如如何实现服务调用RPC 框架如何和服务层交互Java 中通过代理实现服务调用,那么代理对象如何解析请求参数、如何处理返回值等。</p>