大纲
目标
数据表示基础
巴别塔代表了交流的隔阂, 其实计算机世界中也存在这样一座巴别塔。因为计算机经过多年发展,无论从软硬件还是各个角度来说,都非常复杂。
比如说有非常多的编程语言, 典型如编译式的C、C++、,解释器形式的如、PHP、Ruby,字节编码的如Java这种跑在虚拟机上的。 编程语言无论是从编码结构还是对数据的描述都是不一样的。比如使用去操作一个二进制数据这就非常困难,因为它根本就不是为这个设计的。另外使用C去操作一个字符串也会很危险。编程语言之间要进行数据交换,其实也是很痛苦的,他们之间是存在这么一个隔阂的。
除了编程语言之外,还有很多不同的硬件。最直接的不同是字节顺序,它肯定是不一样的,有大端有小端。同样一个字节,在Intel的机器上是这么表示,到Arm上又是那么表示的。当彼此直接交换数据的时候也会出现问题。
还有更头疼的编码,例如在web中对编码的设置。这个其实也是计算机里面一个通信的隔阂所在。另外,还有很多复杂的数据类型,同样的一个数据,在内存中可能是一种结构,当需要持久化保存到硬盘上的时候,它又是另外一种结构。这两种结构都是无法直接读的。需要读取的时候,又需要 一种可视化的结构来输出。这就是所谓的“计算机世界中的巴别塔”。
计算机世界的巴别塔
例如:一台Intel CPU的机器上使用C++开发的程序,需要发给跑在Sparc上使用Java编写的程序。直接一个二进制的结构体打包,将一个hello字符串丢过去。对方肯定是不行的,会存在各种各样的问题。
image.png
如何才能更加边界有效地在异构系统间进行通信呢?引入DR工具!
All in can be by level of . -- David
我们所有的计算机问题,其实都是可以通过加一层中间层来解决的。DR工具简单来说也就是加一个中间层来解决两端之间的通信问题。
DR是异构系统间通信的桥梁
什么是数据表示呢?
数据表示英文为Data 简称DR,在了解DR之前,首先思考下什么是数据?
Data are the facts or from which is .
简单来说,数据就是信息的载体。
数据是信息的载体
forms for same for
例如:看视频直播时简单回复的666,它其实是一种信息,但它会有很多种表示方式。
同样的信息可以有不同的数据形态来做表示,由此可以引出数据表示的含义。数据表示其实是一组操作,可以描述、显示以及对信息的操作 。的就是这样一种工具,首先需要描述这个信息,描述玩了之后才可以使用pb对信息进行显示和操作。
DR is a group of that can 、 and on 。
数据表示的要素
业界现状(开源)
业界现状
例如:使用定义的
in
CS是上行包,SC是下行包的结构。
自定义结构的通信语言(IDL):
# login.proto
message MXPKG_HEADER_SC
{
required int32 msg_id = 1;
required int32 timestamp = 2;
required fixed64 actor_id = 3;
}
message MXPKG_SC
{
required MXPKG_HREADER_SC header = 1;
required bytes body = 2;
}
message MXPKG_HREADER_CS
{
optional int32 len = 1;
required int32 msg_id = 2;
optional int32 bus_id = 3;
optional int32 timestamp = 4;
optional fixed64 actor_id = 5;
}
# 定义上行包的结构
message MXPKG_CS
{
required MXPKG_HREADER_CS header = 1;
required bytes body = 2;
}
数据表示在游戏开发中的应用
, and
协议有哪些,游戏协议有何特点呢?
游戏开发中的协议
游戏协议具有非常明显的特点,以天刀为例:
天涯明月刀
游戏开发中协议的管理
如何管理复杂的协议内容,一般通过IDL来描述协议,并使用CS贡献IDL源文件。
协议的管理
游戏开发中异构系统协议交互
针对多类型终端协议的交互,在是一般采用Linux/x86/C++,在上采用PC//设备采用C++/C#/Lua。
游戏开发中版本协议兼容
快速迭代下的版本兼容,通过DR提供的版本控制来进行协议兼容。以为例,经常会使用和选项。
协议的版本兼容1
协议的版本兼容2
游戏开发中协议流量优化
流量优化主要通过DR提供的数据压缩功能进行流量优化
流量优化
除了协议,游戏开发过程中,还有哪里会用到DR呢?
游戏开发中数据存储的特点
传统的范式设计
以上可以说是运维和开发人员的噩梦
游戏开发中数据存储设计
数据存储设计
有话要说...