原文:从零开始实现简单 RPC 框架 8:网络通信之 Request-Response 模型

Netty 在服务端与客户端的网络通信中,使用的是异步双向通信 双工 的方式,即客户端和服务端可以相互主动发请求给对方,发消息后不会同步等响应。这样就会有一下问题: 如何识别消息是请求还是响应 请求如何正确对应到响应 . 如何识别消息是请求还是响应 为了识别消息类型是请求或者响应,我们在消息中加入了 messageType 的属性,在上文我们也提到,这个消息类型在自定义协议的头部,他有几种类型:请 ...

2021-09-06 08:00 0 290 推荐指数:

查看详情

从零开始实现简单 RPC 框架 6:网络通信之 Netty

网络通信的开发,就涉及到一些开发框架:Java NIO、Netty、Mina 等等。 理论上来说,类似于序列化器,可以为其定义一套统一的接口,让不同类型的框架实现,事实上,Dubbo 就是这么干的。 但是,作为一个简单RPC 框架,ccx-rpc 就先不统一了,因为基本上网络框架是不会换 ...

Fri Sep 03 16:47:00 CST 2021 0 378
从零开始实现简单 RPC 框架 9:网络通信之心跳与重连机制

一、心跳 什么是心跳 在 TPC 中,客户端和服务端建立连接之后,需要定期发送数据包,来通知对方自己还在线,以确保 TPC 连接的有效性。如果一个连接长时间没有心跳,需要及时断开,否则服务端会维护 ...

Tue Sep 07 16:57:00 CST 2021 4 492
从零开始实现简单 RPC 框架 5:网络通信之序列化

我们在接下来会开始讲网络通信相关的内容了。既然是网络通信,那必然会涉及到序列化的相关技术。 下面是 ccx-rpc 序列化器的接口定义。 接口只包含序列化、反序列化两个最基础的方法。不同的序列化器只需要实现这个接口即可,再配合 SPI 就可以使用了。 下面是 ccx-rpc 的一小 ...

Fri Aug 27 17:19:00 CST 2021 4 432
从零开始实现简单 RPC 框架 7:网络通信之自定义协议(粘包拆包、编解码)

RPC 框架使用 Netty 通信时,实际上是将数据转化成 ByteBuf 的方式进行传输。 那如何转化呢?可不可以把 请求参数 或者 响应结果 直接无脑序列化成 byte 数组发出去? 答:直接序列化传输是不行的,会出现粘包拆包的问题。 粘包拆包 什么是粘包拆包 RPC 通信 ...

Sun Sep 05 17:36:00 CST 2021 0 451
从零开始实现简单 RPC 框架 4:注册中心

RPC 中服务消费端(Consumer) 需要请求服务提供方(Provider)的接口,必须要知道 Provider 的地址才能请求到。 那么,Consumer 要从哪里获取 Provider 的地址呢? 能不能 Consumer 自己配置 Provider 的地址? 这种方式理论上是可行 ...

Wed Aug 25 05:58:00 CST 2021 0 423
从零开始实现简单 RPC 框架 1:RPC 框架的结构和设计

前言 RPC 框架是后端攻城狮永远都绕不开的知识点,目前业界比较知名有 Dubbo、Spring Cloud 等。很多人都停留在了只会用的阶段,作为程序猿,拥有好奇心深入学习,才能有效提高自己的竞争力。再进一层的同学,会去翻源码,看功能是如何实现的,这是很好的开始。看源码过一段时间容易忘记 ...

Mon Aug 09 05:31:00 CST 2021 0 882
手动搭建I/O网络通信框架2:BIO编程模型实现群聊

第一章:手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊 第三章:手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室 第四章:手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造   在第一章中运用Socket和ServerSocket ...

Sun Apr 12 03:40:00 CST 2020 0 1572
Java性能之优化RPC网络通信

的性能需求是技术选型的主要影响因素 很多微服务框架中的服务通信是基于RPC通信实现的 ...

Wed Sep 25 03:12:00 CST 2019 0 616
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM