1

我正在编写一个应用程序服务器(同样,与我已经在这里发布的问题无关)并且我想知道在创建在数据库上工作的工作线程时要使用什么策略。一些初步日期:服务器接收 xml 并发送回 xml,所有请求都查询数据库 - 每个请求可能需要几毫秒到几秒钟。

例如,假设您的服务器为少量到中等数量的客户端提供服务,而这些客户端又在每个连接中发送少量请求。每个连接有一个工作线程是否安全,还是应该每个请求都安全?还应该使用线程池来限制服务器使用的资源,还是应该在每次建立新的连接/请求时添加一个工作者?

服务器是否应该将它创建的线程数限制为上限?

希望我不是太含糊……我几乎睁不开眼睛。

4

3 回答 3

2

如果您没有丰富的经验,编写应用程序服务器是一项艰巨的任务。可以通过使用像ACE这样的框架来简化它,它允许您构建应用程序服务基础设施的不同配置,例如每个连接的线程、线程池领导者追随者,然后使用可扩展的服务框架加载适当的配置。

我建议在 ACE 上阅读这些书籍以获得

了解该框架可以为您做什么。

于 2009-04-29T22:29:59.620 回答
0

我编写这样的应用程序的方式是通过命令行和/或配置文件使线程数可配置。然后我使用不同数量的线程进行一些负载测试 - 总是有一个最佳数量,超过该数量性能开始下降。

于 2009-04-29T22:19:30.253 回答
0

如果您遵循 Java EE 应用程序服务器开发人员采用的模型,就会有一个用于传入请求的队列和一个工作线程池来为它们提供服务。每个请求一个线程。当工作线程完成请求时,它会返回到池中。如果传入请求的显示速度快于工作线程池可以为它们提供服务的速度,则队列允许它们堆叠,直到释放工作线程。队列大小和线程池都可以根据您的情况进行调整。

我想知道为什么有人会觉得有必要从头开始编写自己的服务器,尤其是当您描述的场景被其他人很好地解决时。如果你的愿望是教育,祝你好运。如果你认为你会改进过去所做的事情,我会重新审视这个假设。

于 2009-04-29T22:31:15.623 回答