什么是服务器设计模式/最佳实践的最佳来源?

4
我已经搜寻了一段时间,寻找一本好的服务器设计模式书籍。我正在寻找与《四人帮》类似的东西。该书将包括以下概念:
-- 基于线程、进程或组合的解决方案比较
-- 如何正确地分类请求。即,我只期望来自任何域的有限请求数量,因此我可能只为每个域分配一定数量的工作进程。
-- 工作进程超时
-- poll/select/epoll 的使用场景
-- 还有我不知道的东西!

如果您有任何建议,请告诉我!

谢谢!
2个回答

3

两本非常有用的书:

《企业集成模式》这本书提供了一致的词汇和视觉符号,以描述跨多个实现技术的大规模集成解决方案。它还详细探讨了异步消息架构的优缺点。您将学习如何设计连接应用程序与消息系统的代码,如何将消息路由到正确的目标,以及如何监视消息系统的健康状况。该书中的模式是面向技术的,并通过在不同的消息技术(如SOAP、JMS、MSMQ、.NET、TIBCO和其他EAI工具)中实现的示例生动形象。


强烈推荐这本书,值得一读。 - Preet Sangha
我喜欢《企业应用架构模式》这本书,比书名暗示的更加有趣 :) 但我认为它并不是学习如何编写好的Unix服务器的最佳选择。 - sarnold

1

Unix环境高级编程第二版是学习Unix系统编程细节的绝佳资源。它非常精美(是我最喜欢的英语书籍之一),深度很好,而且专注于四个常见环境(在出版时)有助于确保其全面。它并不太过时 - 新操作系统中的新功能可能对特定问题非常棒,但这本书确实很好地涵盖了基础知识。

当然,APUE2nd的缺点是错过了一些非常棒的第三方工具,例如libevent,它可以使基于套接字的服务器编程变得更加容易。(并自动选择平台上最好的select(2)poll(2)epoll(4)kpoll和Windows事件处理。)

关于选择线程和进程,它取决于:你需要多少任务之间的内存共享?如果每个进程可以相对隔离地运行,那么进程提供更好的内存保护和没有速度惩罚。如果进程需要与彼此的对象或单个线程拥有的对象进行交互,则线程提供更好的共享数据原语。(但许多人认为线程的共享内存是引发有趣和激动人心的错误的邀请。这取决于具体情况。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接