我即将开始设计具有以下特征的个人项目架构:
我开发了一个类似的Web应用程序,其范围远小于此项目的上一次迭代。然而,在这种情况下,我选择使用SQLite作为我的数据库提供程序,因为我还有一个可再发行的桌面应用程序,可用于手动模拟匹配(事实上,它作为Web应用程序之外的独立模拟器运行)。我的约束现在已经转变为只是一个Web应用程序,所以我不必担心这种额外的复杂性。
我之前实现的主要问题是处理并发请求。我错误地使用了一个数据库(由磁盘上的单个文件表示)来驱动模拟方面(在服务器上的单独进程中运行)和Web应用程序。因此,当用户同时访问网站并进行实时模拟时,由于一个进程被锁定,因此存在各种数据库访问问题。我通过在数据库操作上实现跨进程互斥来解决这个问题,但这大大降低了网站的性能。
我将使用的工具是:
我的问题是,我如何设计这个,以便实现最佳效率和并发访问?显然从文件转移到实际的数据库服务器会有好处,但是我需要有两个冗余服务器 - 一个用于模拟过程,一个用于Web服务器过程?
任何建议都将不胜感激!
感谢。
答案 0 :(得分:1)
你应该在同一个数据库上做两件事。并发访问是现代数据库引擎的设计目标。并发读取通常都没有问题;并发写入锁定最小可能的数据量(一个表,甚至只是一些行),而不是整个数据库。
你应该记住一些事情: