《高性能服务器程序框架》学习心得体会

c/s模型

优点:资源相对集中,实现简单
缺点:服务器是通信的中心,当访问量过大时,可能所有的客户都将得到的很慢的响应。

p2p模型

核心思想:摒弃了以服务器为中心的格局,每个主机既是客户端,也是服务端,这样能够充分的自由的共享资源。云计算机群可以看作p2p模型的一个典范。
缺点:当用户之间传输的请求过多时,网络的负载将加重。
p2p模型还存在的缺点是主机之间很难互相发现。所以实际用的p2p模型通常带有一个专门发现服务器。

服务器的编程框架

模块 单个服务器程序 服务器集群
I/o处理单元 处理客户端的连接,读写网络数据 作为接入服务器,实现负载均衡 (nginx)
逻辑单元 业务进程或线程 业务服务器
网络存储单元 本地数据库、文件或缓冲( redis)(mysql)(oracle) 数据库服务器
请求队列 各单元之间的通信方式 各服务器之间的永久TCP连接

多个逻辑单元访问存储单元时,也需要采用某种机制来协调处理竞态条件。请求队列通常被实现为池的一部分。对于服务器集群而言,请求队列是各台服务器之间预先建立的、静态的、永久的TCP连接。这种TCP连接能提高服务器之间的数据的交换。因为它避免了动态的建立TCP连接导致的额外的系统开销。

服务器程序通常处理的三类事件:I/O事件、信号及定时事件

两种高效的事件处理模式

Reactor模式

Reactor模式它要求主线程只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程。除此之外,主线程不做任何其他实质性的工作。读写数据,接受新的连接,处理请求都在工作线程中完成。

Proactor模式

Proactor模式将所有的I/O操作都交给内核来处理。工作线程仅负责业务逻辑。

领导者/追随者模式

逻辑单元内部的两种有效编程方法:

1、状态独立的有限状态机
2、状态转移的有限状态机

提高服务器性能的其他建议

1首要因素是系统的硬件资源如cpu的个数、速度、内存的大小等
2从服务器的软环境提高服务器的性能,从编程的角度确保服务器的性能

1池

核心思想:
“浪费”服务器的硬件资源,以换取其运行的效率。

2数据复制

核心思想:
当数据复制发生在用户代码和内核之间的时候应该尽量的避免

3上下为切换和锁

进程的切换或者线程的切换会导致系统的开销,所以必须考虑上下文切换的问题

你可能感兴趣的:(Linux)