原文:从零开始实现简单 RPC 框架 5:网络通信之序列化

我们在接下来会开始讲网络通信相关的内容了。既然是网络通信,那必然会涉及到序列化的相关技术。 下面是 ccx rpc 序列化器的接口定义。 接口只包含序列化 反序列化两个最基础的方法。不同的序列化器只需要实现这个接口即可,再配合 SPI 就可以使用了。 下面是 ccx rpc 的一小段反序列化代码: 序列化算法有多种多样,各有千秋,我们需要结合自己的业务,选择合适的序列化算法。 序列化算法的选择通常 ...

2021-08-27 09:19 4 432 推荐指数:

查看详情

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

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

Fri Sep 03 16:47:00 CST 2021 0 378
从零开始实现简单 RPC 框架 8:网络通信之 Request-Response 模型

Netty 在服务端与客户端的网络通信中,使用的是异步双向通信(双工)的方式,即客户端和服务端可以相互主动发请求给对方,发消息后不会同步等响应。这样就会有一下问题: 如何识别消息是请求还是响应? 请求如何正确对应到响应? 1. 如何识别消息是请求还是响应 为了识别消息类型是请求 ...

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

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

Tue Sep 07 16:57:00 CST 2021 4 492
从零开始实现简单 RPC 框架 7:网络通信之自定义协议(粘包拆包、编解码)

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

Sun Sep 05 17:36:00 CST 2021 0 451
Java网络通信 —— 序列化问题

Java序列化的目的主要有两个: 1.网络传输 2.对象持久 当选行远程跨迸程服务调用时,需要把被传输的Java对象编码为字节数组或者ByteBuffer对象。而当远程服务读取到ByteBuffer对象或者字节数组时,需要将其解码为发送时的Java 对象。这被称为Java对象编解码技术 ...

Wed Jul 17 11:18:00 CST 2019 0 602
avro实现序列化以及RPC简单示例

看到很多在提到hadoop的同时,都会提到avro和thrift两个数据持久(序列化)的项目。特别是avro,Doug Cutting 又是creator. apache官方的序列化的示例有提供java版本和python版本的,都是非常简单的示例,结合maven非常容易上手,但是关于RPC ...

Mon Sep 09 08:02:00 CST 2013 0 5074
java 从零开始手写 RPC (04) -序列化

序列化 java 从零开始手写 RPC (01) 基于 socket 实现 java 从零开始手写 RPC (02)-netty4 实现客户端和服务端 java 从零开始手写 RPC (03) 如何实现客户端调用服务端? 前面几节我们实现了最基础的客户端调用服务端,这一节来学习一下通讯中 ...

Sun Oct 10 19:35:00 CST 2021 0 191
RPC序列化

序列化:将对象状态转换为可保持或传输的二进制。 反序列化:将二进制数据转换为对象的过程。 常见的序列化方式: 后续代码示例会加上。 1.JDK原生序列化: 安全性较差。 2.JSON: JSON 是典型的 Key-Value 方式,没有数据类型,是一种文本型序列化框架 ...

Mon Mar 02 08:38:00 CST 2020 3 930
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM