服务器开发

服务器开发，特指软件开发领域中的后台服务器开发，也指C/S模式中server端的开发。

分层结构
 业务层： 业务层指与上层应用相关的业务，也就是常说的任务task.
 网络层: 负责数据包接收发送的问题

网络层的设计层面
网络层设计主要考虑三个方面，一是连接方式，是使用TCP还是UDP；二是多路利用，选择合适的网络IO机制，如select,epoll等。
三是协议解析，协议的消息传递其实与网络层无关，只是数据打包，解包的过程，但通常也归纳在这。这是为了突出业务的重要性。

质量属性
服务器开发：可扩展性等。
服务器运行：要满足更严格的质量属性要求，如可用性，鲁棒性，高性能，可配置性等。

常用技术
 线程：线程封装，使用线程池
 网络IO策略： 如select, epoll, pull, BSD下的kqueue, solaris下的/dev/null, windows下的完成端口等，合适的IO策略对性能有较大的影响。
 消息队列：常使用消息队列来延迟数据处理，如数据包接收的存储，请求任务的存储。
状态机：服务器的状态要经常监控。
 内存池: 内存池的设计是为了循环使用内存资源，可根据不同场景设计不同的内存池模型。
 其它： 如日志， XML处理，数据库操作等。

伺服器
软件开发