我们的应用程序开始变得非常庞大,看到了一些缩放的痛点。我们有一些长时间运行的页面加载会杀死应用程序其余部分的请求队列。几天来一直在思考这个问题并且一直在考虑抽象出一些微服务可以释放一些压力。
在微服务上做了很多阅读并且已经阅读过你可以让你所有的服务共享同一个数据库或为每个服务创建一个新的数据库 - 根据我读过的内容都可以接受。我们的数据非常大,因此共享相同的数据库将更容易抽象。
我今天早上坐下来决定启动一个新的Rails JSON API应用程序,将一些业务分析页面抽象为新服务,但很快意识到这个新应用程序将不会有任何模型文件等,以供ActiveRecord使用。当人们与所有服务共享数据库时,人们如何解决这个问题?
编辑:
我正在计划使用此服务来运行跟随者只读从属数据库,以帮助加载。
答案 0 :(得分:1)
如果您使用Sequel
之类的库而不是ActiveRecord
,那么您可以更少依赖模型层并使您的代码/查询更接近数据库,我认为它不会解决所有问题,因为您需要在每次迁移后随处更新代码。但是,您可以做的一件事是将模型层的一部分打包为Gems
以跨应用程序共享。
"我们有一些长时间运行的页面加载会杀死应用程序其余部分的请求队列。" =>可以通过使一些请求异步来解决吗? Web应用程序的后端不应该做任何繁重的工作,应该由crons / other来完成。