应用程序可伸缩性 - 设计

时间:2015-03-22 16:04:33

标签: architecture

我在php中开发了一个Web应用程序,可用于诊所中的手动过程自动化。该应用程序运行良好,3个并发用户可以使用该应用程序,没有任何性能问题。

标准事务正在查询,创建新记录,修改现有记录和安排约会。截至目前,该应用程序已部署在标准的Web托管服务器上。

如果这个应用程序被20个并发用户使用,我确信性能会很糟糕。

在某种情况下,如果诊所决定实施自己的网络服务器并托管此应用程序, 1)在整个“系统”架构/设计方面,为多个(20-30个)并发用户扩展我的应用程序需要做些什么?
2)我是否需要更改我的代码才能扩展?
3)如何根据处理和内存决定我的Web服务器的资源容量?

1 个答案:

答案 0 :(得分:0)

  

我确信表现会很糟糕

你怎么知道这个?你测试过吗?永远不会pre-optimize。运行测试,看看发生了什么。你可能会感到惊讶。

在构建测试套件(lots of open source tools available)之后,看看发生了什么。你的数据库失败了吗?你真的变成了CPU限制吗?你的内存耗尽了吗?看看如何获​​得更强大的机器。或者将其托管在云中,您可以根据需要扩展到功能更强大的服务器。

20-30个并发用户负载不大。请记住,用户大多闲着。如果对您网站的请求需要1秒钟,并且用户花费10秒钟(这真的很快)查看响应。那么你的服务器实际上只处理2-3个并发请求。考虑到大多数现代处理器都有4个内核,你甚至可能不会使单个CPU饱和。

此外,按小时费率计算,将其乘以构建新系统所需的小时数。现在将其与您的托管成本进行比较。很可能你根本不应该花这些时间。在重建之前,使用专用服务器查找更好的托管计划。

现在我们已经涵盖了这一点,如果您真的想学习如何开发可扩展的系统,了解MVC或面向服务架构(SOA)等基本架构模式,其中大部分将会倾向于帮助您构建不会让您陷入太多麻烦的系统。

考虑到这似乎是一个非常以数据库为中心的应用程序,您更有可能使数据库的磁盘IO饱和(这是一种有2-3个并发请求的巧妙技巧)。如果您的磁盘太忙,可以查看缓存解决方案。当您优化性能(尤其是数据库性能)时,它们通常是第一个解决方案空间。查看可以缓存的数据,更多静态信息,如公司地址和名称等。如果你可以在客户端缓存它,那就更好了。

所以... tldr;你可能会没事的,如果没有,找出你为什么在建立一个新系统之前没有问题。即使你不好。看看你是否能够买得好。