【问题标题】:Application scalability - design应用程序可扩展性 - 设计
【发布时间】:2015-05-25 15:16:57
【问题描述】:

我用 php 开发了一个 Web 应用程序,可用于在诊所中自动执行手动流程。该应用程序运行良好,3 个并发用户可以使用该应用程序而不会出现任何性能问题。

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

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

在某个场景中,如果诊所决定实现自己的 Web 服务器并托管此应用程序,
1) 就“系统”架构/设计作为一个整体而言,为多个 (20-30) 并发用户扩展我的应用程序需要什么?
2) 我是否需要更改代码才能扩大规模?
3) 我如何决定我的网络服务器在处理和内存方面的资源容量?

【问题讨论】:

    标签: architecture


    【解决方案1】:

    我相信表演会很惨

    你怎么知道的?你测试过吗?从不pre-optimize。运行测试,看看有什么下降。你可能会感到惊讶。

    构建测试套件 (lots of open source tools available) 后,看看发生了什么问题。你的数据库失败了吗?你真的受过CPU限制吗?你内存用完了吗?看看获得更强大的机器。或者将其托管在云中,您可以在需要时扩展到更强大的服务器。

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

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

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

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

    所以... tldr;您可能会没事,如果不是,请在构建新系统之前弄清楚您为什么不好。即使你不好。看看你是否无法通过自己的方式过上好日子。

    【讨论】:

    • 谢谢罗伯!这是一个非常详细的答案,给了我一个清晰的想法。
    猜你喜欢
    • 2011-10-03
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2011-03-28
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多