我想用 Java 开发一堆 SaaS 应用程序,但我不确定 wat 是不是最好的方法。
每个应用程序都有一个包含 Web 服务的 WAR,并且至少有一个 Worker-WAR,这是一个等待数据库中的新任务出现然后处理该任务的线程。这个worker包含了应用程序的智能并且使用了大量的cpu。Web 服务使用户可以添加新任务和其他内容......
资源限制
基础设施必须确保以下几点: Web 服务必须始终获得一定量的 cpu 时间才能响应用户。因此,饥饿的 Worker 不能获得所有的 cpu 时间来工作。
每个租户都有自己的工作人员,他们不得相互干扰,因为不可能通过单个任务阻塞整个系统(和所有租户)。
资源共享
能够共享资源会很好,但始终确保在极端情况下每个工作人员和 Web 服务都能获得所需的最小值。
版本控制
随着应用程序的新版本发布,每个租户必须有可能在适应 API 更改时自行启动更新。此外,租户必须能够保留多个应用程序端点(我们称之为渠道)才能拥有生产渠道和测试渠道。在 Beta 频道中,租户可以测试新版本,当他对新版本感到满意时,他可以更新他的生产频道。
用户管理
租户的所有应用程序必须共享一个用户数据库,并且具有相同的身份验证方式。
环境
我想使用 Java EE 7。我会喜欢使用 Wildfly。
问题
实现这些目标的最佳基础设施是什么?我想在我自己的服务器上托管它。
我已经找到的
我了解您不能限制 jvm 中的 CPU 使用率。所以工人必须有自己的jvm。
我查看了诸如 OpenShift Origin 之类的 PaaS 提供程序,但它们似乎鼓励您为每个租户、每个应用程序运行一个应用程序服务器,这在我看来是资源消耗者。
有没有办法让一个 Wildfly 运行并限制每个租户和应用程序的 cpu 使用量?
谢谢你卢卡斯