这是一个开放式的问题,有很多可能的答案,具体取决于您要执行的操作。不过,由于注释不够大,我将添加一些内容作为答案。
该服务将充当数据库连接池(我认为数据库上的2000多个连接会引起问题);
是的,那是个好主意。您可以保持打开的连接数量较少,并在请求到达服务时重用它们。但是您需要知道如何快速处理请求以及每个请求使用数据库的速度,否则在等待释放数据库连接时,很容易耗尽一个小池,并且其他请求将被阻塞。
缓存可以帮助那里,返回已经获取的数据(就像我说的那样,取决于您要执行的操作-如果查询是唯一的,则不能缓存太多)。
还要注意,池的大小将乘以您放置的服务数量。一些服务,您可以使用大型数据库池;更多的服务,并且您需要减小池的大小,以便总体上来说,您打开数据库的连接数相同。
可能有一个将日志传送到其他只读数据库的数据库来服务某些查询;
数据库很容易成为您的瓶颈。太多的连接和/或太多的查询,您可以中断它。到那时,将服务水平扩展到任意数量都没有关系。所有请求最终将到达同一数据库。
有多种保护它的方法:缓存我已经提到过(取决于您的用例),在其他服务器上复制一些信息以服务您提到的某些查询,CQRS(取决于您的用例),使用关系型与非关系型(再次取决于您的用例),等等。
请注意,尽管如此分配数据时,CAP定理开始适用。请注意这一点,因为您可能需要在一致性和可用性之间进行折衷。
随着我们可以添加更多机器来运行REST服务,它将更好地扩展;
是的,REST服务可以扩展,但是如上所述,如果您不保护数据库,则很容易成为瓶颈。
出于安全性和带宽节省的原因,可以在压缩中使用HTTPS。
是的,还有其他事情……也许您以后想要验证/授权,等等。
无需重新部署2000多台计算机,就可以对业务实体进行一些集中式更改。
是的,但是在一定程度上并不是所有的变化。如果进行重大更改,则也需要更新客户端。因此,请考虑将客户端更新到最新版本的策略,或者是否允许较旧的客户端仍然可以使用该应用程序。
它与其他系统更好地集成(只需将其指向REST服务)。
是的,但这意味着您可能无法控制的客户服务。
如果您进行了重大更改,并且您有一个很好的策略来更新2000+ JavaFX客户端,那么就没问题了。但是,如果存在其他客户端,并且您无法控制它们,则可能需要在REST服务上实现版本控制,并支持多个版本,直到每个人都可以更新到最新版本为止。
就像我说的,这取决于您要做什么。总的来说,你是一个好主意。但是请注意,仅仅因为您将REST服务放在数据库的前面,这些东西就不会免费提供。
只是我的2美分!