服务器开发,特指软件开发领域中的后台服务器开发,也指C/S模式中server端的开发。
分层结构
- 业务层: 业务层指与上层应用相关的业务,也就是常说的任务task.
- 网络层: 负责数据包接收发送的问题
网络层的设计层面
网络层设计主要考虑三个方面,一是连接方式,是使用TCP还是UDP;二是多路利用,选择合适的网络IO机制,如select,epoll等。
三是协议解析,协议的消息传递其实与网络层无关,只是数据打包,解包的过程,但通常也归纳在这。这是为了突出业务的重要性。
质量属性
*服务器开发:可扩展性等。
*服务器运行:要满足更严格的质量属性要求,如可用性,鲁棒性,高性能,可配置性等。
常用技术
- 线程:线程封装,使用线程池
- 网络IO策略: 如select, epoll, pull, BSD下的kqueue, solaris下的/dev/null, windows下的完成端口等,合适的IO策略对性能有较大的影响。
- 消息队列:常使用消息队列来延迟数据处理,如数据包接收的存储,请求任务的存储。
*状态机:服务器的状态要经常监控。
- 内存池: 内存池的设计是为了循环使用内存资源,可根据不同场景设计不同的内存池模型。
- 其它: 如日志, XML处理,数据库操作等。
评论 (0)