
通用传输平台
romandion
创新缔造未来,专注铸就卓越
展开
-
通用传输平台开发实录
如果追本溯源的话,Berkeley的套接字可以算是最早的跨平台通用传输接口。不过呢,这些API在管理大量连接和IO的时候,没有比较好的方式,于是后来出现了select/poll/epoll/kqueue/iocp。当然,还应该算上微软对套接字API的扩展,如WSARecv等函数。 我在提到这个通用传输平台时,实际上应该处理3种情况: 1、操作系统的不同:win32/li原创 2009-06-02 15:36:00 · 1421 阅读 · 0 评论 -
通用传输平台开发实录【2】--接口定义
由于是通用传输平台,所以必须有个通用的接口定义。同时由于通用,所以我们需要摒弃各个平台、各种实现的差异。首先,我们归纳下各种传输平台的共性。一个传输行为的发生,会有几个动作发生: 1、固定监听点的存在,不论UDP或者TCP还是其他,总之,有个点来捕获传输数据。 2、传输通道的存在,显然,没有通道,传输不可能完成。 3、传输过程发生,发送、接收、异常事件的发生。原创 2009-06-22 16:25:00 · 1011 阅读 · 0 评论 -
通用传输平台开发实录【3】--IO驱动
网络IO模型目的是一样的,只不过不同操作系统不同技术导致了不少差异。我们知道基于berkerly socket来说,IO模型只会有3个动作比较重要,1、创建传输通道;2、发送数据;3、接收数据。对我们来说,也只是需要这些信息。在接口定义中,我们设计vtp/intf/link,这3种对象。vtp代表了一个总的管理系统,包含多个Intf,intf对应了一个真实的socket,包含多个link,而lin原创 2009-10-20 16:57:00 · 1286 阅读 · 0 评论 -
通用传输平台开发实录【4】语言选择
C还是C++,让我很纠结。我在通用平台中倾向于选择C,但一些问题的存在,导致进度进展很慢,特别是初始化、单实例用C复杂高,使得我不能不使用混合模式。C C++的争议没有必要,我感觉没有必要。原创 2010-06-11 15:17:00 · 991 阅读 · 0 评论 -
通用传输平台开发实录【5】哈希算法
哈希在查找算法中,可以算是最高效,不过它受哈希函数和冲突解决函数限制,对于普适性的场景具有很大的限制。在通用传输平台中,用来解决海量会话,句柄,线程的定位确有先天的优势。因为这些场景的值,具有很高的连续性。基本上不会出现上一个是1,而下一个却变成222222。而且,在增删的场景下,不象树以及其他结构,需要对管理器进行锁定,可以实现无锁操作。 哈希算法以及原理就不需要介绍了。这里关键的是要设计一种原创 2010-06-23 13:52:00 · 1347 阅读 · 1 评论 -
通用传输平台开发实录【6】事件模型
我们知道,在一个指令集合执行过程中,会因为等待一个临界资源,而导致这个指令集合被操作系统挂起。事件模型的提出,主要考虑尽可能发挥CPU的运行效率,避免执行过程被挂起,那么在高负荷的情况就可以充分使用CPU。 我们首先论证几个事情: 1、一个串行执行的指令集S是可以被分成多个串行执行的指令集A + B + C。 这个原理很重要,是事件模型的理论基础。 2、原创 2011-06-24 10:22:00 · 803 阅读 · 0 评论