QSocket设计的一些构想讨论

讨论时间:2014年12月29日

讨论范围:QDAC官方QQ群

讨论内容:

(1)、QSocket将包含单连接多会话并发的支持。一个客户端与服务器端只有一个连接,但这个连接采用某些技术手段,可以并行的发送多个会话。会话之间通过优先级控制,高优先级的会话会得到更高的发送机率,而低优先级的会话发送机率只是更小。同时,采用帧插入及合并技术,保证一个长时间会话不会造成其它会话的需要等待长时间会话完成才能发送,这样可以提高低优先级会话的发送速度。这里可以举个例子:比如你正在传送一个大文件,而此时,传统的方式下,如果你要传送一个其它数据,你要么创建一个新的连接,要么将传送文件的会话中断,然后开始传送要传送的数据,然后再恢复文件的传送。而QSocket不需要建立新连接,而是将新的数据和原来文件传送的数据打包一起传送到远程,远程再解析处理,这样就既不会影响文件传送会话的数据传送,又能及时传送新的会话数据。

(2)、QSocket中会话可以分组,组内的会话共享同一优先级,发送顺序可以是串行,也可以是并行,在所有的组内的会话发送完成后,会触发一个事件给上层通知。

(3)、QSocket中的会话可以没有回应。没有回应的会话是不需要等待远程的处理结果的,也永远等不到结果。

(4)、QSocket默认实现中参数的编解码使用MessagePack协议+ZLib+AES,但用户可以实现自己的编码和解码器,如HTTP。

(5)、QSocket在连接级别收发的是原生数据流,编码和解码都是在会话级别上处理的。一般情况下,两种模式只能选择一种,否则,可能造成数据混乱,接收端无法正常解析数据。

(6)、QSocket支持组播和广播会话,组播和广播的会话不支持接收端回应(也没必要)。组播时,目标可以加入或离开组播的分组。

(7)、QSocket支持网络信号的触发和响应。一个应用程序可以在一个终端上触发一个网络信号,而对该信号感兴趣的终端可以及时接收到该信号并进行响应处理。一般来说,信号的触发者并不关心有没有人去响应信号,它只负责触发。而信号的接收者对信号进行处理后,也不会返回结果给触发者。如果两者之间需要信息传递,原来的接收者可以触发额外的信号给原来的发送者,从而产生关联。

(8)、QSocket计划支持网络资源锁。网络资源锁用于某个应用终端锁定某些处理资源,然后在本地处理后,再将处理结果返回到资源的管理终端,最终实现分布式处理。

分享到: