在同一个数据库上运行两个应用程序

时间:2011-04-22 03:21:15

标签: architecture lamp

我的网站越来越大,并且对不同的用户有着非常独立的需求。到目前为止,一个应用程序已足以满足所有用户需求。

现在我们正在成长,我想将代码库分开,所以我有一个应用程序来为每个主要用例服务。在这种情况下,当我说应用程序时,我特指网络应用程序。

我最初的想法是创建一个主API应用程序,它充当Web服务,以促进每个应用程序的所有功能。然而,当我进一步思考时,我认为使用HTTP本质上是一个数据层将真正扼杀性能,而我宁愿不在此问题上抛出硬件$来解决这个问题。

另一方面,我有非常强大的数据模型(使用ORM),我可以轻松地将其复制到每个应用程序。只要我确保每个应用程序的数据模型层保持不变,我想我应该能够期望每个应用程序的数据一致性。

我还应该关注什么?我对这种方法的思考越多,我看起来就越好--Amama通常会为每个客户端生成当前应用程序的一个实例,因此几个应用程序已经同时访问了数据库。这个架构应该是相同的,只是调用数据库查询的代码会有所不同。

我在这里找不到任何其他骗局吗?

为了记录,技术堆栈是标准的LAMP。

1 个答案:

答案 0 :(得分:2)

我认为你走在正确的轨道上。

考虑任何有用且复杂的网站,例如 Stack Overflow 。在搜索问题的答案时,它有一个界面(应用程序)。在阅读问题的答案时还有另一个问题,而另一个问题则是回答问题。它还有另一种适度的应用范例。它具有将问题迁移到其他网站的复杂功能。

然而他们都快乐地共存。数据模型是关键,但保留和保护规范化数据完整性的代码也是如此。

至于可扩展性,维基百科也有类似的模型。通过使用四个(可能是五个)数据库服务器来解决扩展,一个是主服务器,另一个是从服务器。任何d / b服务器都可以响应读取查询,但只有主服务器接受写入。当然,还有数百个运行“应用程序”的Web服务器,还有数百个Web缓存服务器来平衡性能。但数据库架构反映了99%以上的页面命中都是读取的事实。