1 设计要点解析
SOFA Bolt作为基础通信层,其功能在设计和实现的过程中,主要从以下几个方面考虑:
1. 网络IO;
2. 线程模型;
3. 通信模型;
4. 连接管理;
5. 批量解包和批量提交;
6. 事件触发和监听机制;
7. 全双工通信;
以下分别从服务端和客户端两个角度,分别看一下SOFA Bolt类图:
1. SOFA Bolt服务端类图:
2. SOFA Bolt客户端类图:
下面从基础通信模型设计过程中的关键点,分别说明上述类图的各个部分。
1.1 网络IO
在进行基础通信功能设计时,需要了解一下网络IO,以便我们能更好地选择IO模型,并根据所选的IO模块,优化操作系统,提高IO效率。
此处以使用范围比较广的Linux内核为例,简单介绍一下IO模型,以便大家更好地进行基础通信功能的实现。
此部分内容来源于网上的一篇关于网络IO的介绍:
文章名称为:java nio及操作系统底层原理;
链接地址为:http://blog.csdn.net/u014507083/article/details/73784898;
这篇文章以通俗易懂、简练的语言,简单的介绍了网络IO的概念,以及Java对于各种IO模型的支持,本人认为作为网络IO知识的普及文章,写的非常好,所以稍作修改,然后直接采用了其部分内容,在此对于作者表示感谢。
1.1.1 LinuxIO
Linux内核将所有外部设备都可以看做一个文件来操作。
我们对外部设备的操作都可以看做对文件进行操作。
通过调用内核提供的系统调用函数(如:read&