陈硕的Blog

新书预告:《Linux 多线程服务端编程——使用 muduo C++ 网络库》

看完了 W. Richard Stevens 的传世经典《UNIX 网络编程》, 能照着例子用 Sockets API 编写 echo 服务, 却仍然对稍微复杂一点的网络编程任务感到无从下手? 书中示例代码把业务逻辑和 Sockets 调用混在一起,似乎不利于将来扩展?
  • 程序在本机测试正常,放到网络运行上就经常出现数据收不全的情况?
  • TCP 协议真的有所谓的“粘包问题”吗?该如何设计打包拆包的协议?又该如何编码实现才不会掉到陷阱里?
  • 带外数据(OOB)、信号驱动IO这些高级特性到底有没有用?
  • 网络协议格式该怎么设计?发送 C struct 会有对齐方面的问题吗?对方不用 C/C++ 怎么通信? 将来服务端软件升级,需要在协议中增加一个字段,现有的客户端就必须强制升级?
  • 要处理几千上万的并发连接,似乎书上讲的传统 fork() 模型应付不过来,该用哪种并发模型呢? 试试 select、poll、epoll 这种 IO 复用模型吧,又感觉非阻塞IO陷阱重重,怎么程序的 CPU 使用率一直是100%?
  • 要不改用现成的 libevent 网络库吧,怎么查询一下数据库就把其他连接上的请求给耽误了? 再用个线程池吧。万一发回响应的时候对方已经断开连接了怎么办?会不会串话?
  • 读过《UNIX 环境高级编程》,想用多线程来发挥多核 CPU 的效率, 但对程序该用哪种多线程模型感到一头雾水? 有没有值得推荐的适用面广的多线程 IO 模型? 互斥器、条件变量、读写锁、信号量这些底层同步原语哪些该用哪些不该用? 有没有更高级的同步设施能简化开发? 《UNIX 网络编程(第二卷)》介绍的那些琳琅满目的IPC机制到底用哪个才能兼顾开发效率与可伸缩性?
网络编程和多线程编程的基础打得差不多,开始实际做项目了,更多问题扑面而来:
  • 网上听人说服务端开发要做到 7x24 运行,为了防止内存碎片连动态内存分配都不能用, 那岂不是连 C++ STL 也一并禁用了?硬件的可靠性高到值得去这么做吗?
  • 传闻服务端开发主要通过日志来查错,那么日志里该写些什么?日志是写给谁看的?怎样写日志才不会影响性能?
  • 分布式系统跟单机多进程到底有什么本质区别?心跳协议为什么是必须的,该如何实现?
  • C++ 的大型工程该如何管理?库的接口如何设计才能保证升级的时候不破坏二进制兼容性?

这本《Linux 多线程服务端编程》中,作者凭借多年的工程实践经验试图解答以上疑问。当然,内容还远不止这些……


本书配套页面: http://chenshuo.com/book ,将不定期更新。

posted on 2012-09-21 07:20 陈硕 阅读(3594) 评论(9)  编辑 收藏 引用 所属分类: muduo

评论

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名) 2012-09-21 08:45 pansunyou

就凭muduo,这本书买定了!   回复  更多评论   

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名)[未登录] 2012-09-21 09:13 alex

感觉是本好书,暂定下  回复  更多评论   

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名) 2012-09-21 09:25 zuhd

希望是根据自己的经验体会完成的,现在不是没有书,而是书太多了,但内容基本重复,期待一个  回复  更多评论   

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名) 2012-09-21 10:58 明月照大江

就冲着里面讲述了网络协议的设计,我买定了!  回复  更多评论   

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名) 2012-09-23 12:22 1shou

留一本啊,留一本..  回复  更多评论   

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名) 2012-09-24 10:50 雷雨

预定....  回复  更多评论   

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名) 2012-09-26 19:03 小鱼儿

你出售,我一定买。。
把你的内功全部吸过来来。
哈哈,然后我就是天下第一了。。。。。



开玩笑
  回复  更多评论   

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名) 2012-10-06 11:37 zhongliang

《UNIX 网络编程》《UNIX 环境高级编程》 epoll 等都躺着中枪了  回复  更多评论   

# re: 新书预告:《Linux C++ 多线程服务端编程》(暂定名) 2012-10-30 13:38 王月静

陈工您好 ,我是麦思博的小静,有关案例研究峰会的活动想邀请您分享关于银行行业软件研发的经验,如您有意向可以发邮件给我:yuejing.wang@msup.net 。活动介绍可参考:www.top100summit.com , 谢谢您!!  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

随笔分类

随笔档案

相册

搜索

最新评论

阅读排行榜

评论排行榜