MisterChangRay / magic-byte

a java tool for faster convertor byte2object
BSD 3-Clause "New" or "Revised" License
49 stars 20 forks source link

有没有什么序列化的同时分片的设计思路? #65

Open FULaBUla opened 2 months ago

FULaBUla commented 2 months ago

目前序列化的时候要分片成多个小包发送,避免 tcp 发大包的情况,目前都是直接一整个或者需要我自己先把数据体序列化,然后分片拼数据头然后再序列化一下发送,有没有更好的方法一次性的在框架中做完。

MisterChangRay commented 2 months ago

你数据包很大吗? 我理解的分片的意义一般是指业务上用于区分数据边界的。如果单个业务本来数据量就大而且这些数据已是最小的了,那这个也没必要去拆了啊。

FULaBUla commented 2 months ago

你数据包很大吗? 我理解的分片的意义一般是指业务上用于区分数据边界的。如果单个业务本来数据量就大而且这些数据已是最小的了,那这个也没必要去拆了啊。

是的我们一次数据可能有10M,要1K一分片,因为互联的是一些嵌入式设备,那边有要求,这么大的数据没法一下子都过去,所以要分片

MisterChangRay commented 2 months ago

明白了,你这个属于流量控制和流量整形。 这个一般通信框架有支持的, 我们这个属于序列化框架,暂时没计划支持

FULaBUla commented 2 months ago

明白了,你这个属于流量控制和流量整形。 这个一般通信框架有支持的, 我们这个属于序列化框架,暂时没计划支持

通信框架做这部分吗?因为我数据序列化,然后还要拼东西分片再序列化,这种序列化框架没法一次性出来数据吗?

MisterChangRay commented 2 months ago

是的啊,大部分通讯框架会做这块的。我理解直接控制发送速率就行了(比如限速收发速度为10kb/s)。

MisterChangRay commented 2 months ago

不过下个版本也可以加一个

FULaBUla commented 2 months ago

是的啊,大部分通讯框架会做这块的。我理解直接控制发送速率就行了(比如限速收发速度为10kb/s)。

哦哦哦,那我这个场景不太一样,我这个分开的片要给分片加头告诉接收方这个偏移了多少,他们自己组分片,然后我发的时候还对分片数据做了签名和加密,确保每一片的安全和防重放

MisterChangRay commented 2 months ago

这部分业务不是tcp层已经做了吗,用的udp?

FULaBUla commented 2 months ago

这部分业务不是tcp层已经做了吗,用的udp?

是的,我们场景比较特殊,反正是自己实现的分片,不完全依赖于网络层

MisterChangRay commented 1 week ago

可以考虑加入一个注册分片逻辑的配置,数据序列化完成后按配置长度截断后调用, 然后再形成数据整体返回