讨论:网络服务器设计相关

jskwood 2012-01-17 09:07:47
这一两年,陆续搞了一些服务器开发。
自己也看了诸如《windows网络编程》、《UNIX网络编程》、《TCPIP卷详解1,2,3》等等,感觉这些书确实是很经典。但是这些书基本上都是介绍基础理论以及api的用法,对编程确实很有帮助。但我的问题也出来了,我感觉自己在服务器设计方面好像还是浮于表面,并且一直找不到什么关于网络服务器设计方面的书籍,比如利用c++来设计面向对象的服务器处理架构,或者说介绍各种实际项目的处理设计方案等等,现在基本上只能通过分析一些开源服务器来进行学习,但是感觉效率低,因为e文的关系。
大家讨论讨论,有啥好的书籍可以参考参考,或者有啥好的学习方法来学习服务器方面的开发。
...全文
79 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
chenjiawei007 2012-01-19
呵呵 网络设计切记舍本逐末,

不知道LZ是否遇到过请求并发超过6000的网络设计,如果遇到过,那应该不会有太多的困惑了。

一般C++的设计都是在TSL这层或者这层之上,而这层复杂的是协议,在协议设计的时候就不是简单的通讯了,加密方法会频繁的使用。

个人觉得初级或者小型的网络设计会考量更多的效率,而高级的,大型的网络设计,更多的会考量安全。
回复
jskwood 2012-01-19
坛子冷清了,大家过个好年
回复
jskwood 2012-01-18

[Quote=引用 3 楼 dengsf 的回复:]

个人拙见,服务器是个很大的课题。
底层一点,就是如何管理连接、发送接收缓冲,保证数据完整,还有是数据在内部类型和二进制之间的序列化/反序列化、以及如何将socket和客户关联起来(如会话),供上层使用。一般通用的网络框架就在这层上实现,但要做到通用,往往要考虑很多情况,很复杂。如ace、libevent、boost::asio等就是在这层上发挥了,但用它们开发,还是要做很多工作的(开源……
[/Quote]
更上层的就要和考虑就应用了

这一段比较符合我的想法,其实我就是想以实际的应用来进行教学的书,比如内容有介绍:聊天服务器的设计,以及如何利用IO模型进行抽象设计、封装,另外还介绍其它一些服务器,如游戏阿什么的,这样的话学习起来更接近实际应用。貌似我想的是更接近于实际项目应用的设计模式或范式,想法有点类似《c++设计模式》
回复
jskwood 2012-01-18
[Quote=引用 1 楼 kaile 的回复:]

看apache, nginx源码

学习boost::asio
[/Quote]

早期项目用原生api加模型的方式写,后面的基本上用asio和libevent写了。不过这些是框架模型
回复
quwei197874 2012-01-18
<linxu下服务器构建>不错,楼主可以看看
回复
dengsf 2012-01-18
个人拙见,服务器是个很大的课题。
底层一点,就是如何管理连接、发送接收缓冲,保证数据完整,还有是数据在内部类型和二进制之间的序列化/反序列化、以及如何将socket和客户关联起来(如会话),供上层使用。一般通用的网络框架就在这层上实现,但要做到通用,往往要考虑很多情况,很复杂。如ace、libevent、boost::asio等就是在这层上发挥了,但用它们开发,还是要做很多工作的(开源的也有不少基于以上框架的产品,如memcache等)。有时为简化、追求性能(尽管我觉得效果不会很明显),也将需求反映在这层中(如nginx自己实现了网络io层)。
更上层的就要和考虑就应用了,例如上层和框架底层如何协作(单线程io+逻辑、单线程io+多线程逻辑、多线程但每个会话单线程+阻塞式io等),往往是上层需要影响到底层机制的选择。如果是多服务器时,还有如何协作、如何保证负载均衡等等。这些一般是根据具体问题而作,就算有指导原则,也是经验总结,不实际操作过也只会很空泛。
我觉得就一个具体的需求来切入研究比较好,不然会有了解但很空、使不上力的感觉。期待LZ有心得分享下。
回复
smwhotjay 2012-01-18
射鸡湿 多了就精通了.多写写socket多看别人代码.遇到问题多想.
回复
Kaile 2012-01-17
看apache, nginx源码

学习boost::asio
回复
相关推荐
发帖
非技术类
创建于2007-09-28

1624

社区成员

VC/MFC 非技术类
申请成为版主
帖子事件
创建了帖子
2012-01-17 09:07
社区公告
暂无公告