应用程序可扩展性 - 设计
Application scalability - design
我在 php 中开发了一个 Web 应用程序,可用于自动化诊所中的手动流程。该应用程序运行良好,3 个并发用户可以使用该应用程序而不会出现任何性能问题。
标准事务是查询、创建新记录、修改现有记录和安排约会。截至目前,该应用程序已部署在标准网络托管服务器上。
如果这个应用程序被 20 个并发用户使用,我相信性能会很糟糕。
在某个场景中,如果诊所决定实施自己的 Web 服务器并托管此应用程序,
1) 就 'system' architecture/design 而言,要将我的应用程序整体扩展为多个 (20-30) 并发用户需要什么?
2) 我是否需要更改我的代码才能扩大规模?
3) 我如何决定我的网络服务器在处理和内存方面的资源容量?
I am sure the performance would be miserable
你怎么知道的?你测试过吗?从来没有pre-optimize。 运行一个测试,看看掉下来的是什么。你可能会感到惊讶。
在构建测试套件 (lots of open source tools available) 之后,看看有什么问题。你的数据库失败了吗?你真的被 CPU 束缚了吗?你 运行 是不是记错了?看看获得更强大的机器。或者将其托管在云中,您可以根据需要扩展到更强大的服务器。
20-30个并发用户负载不大。请记住,用户大多是空闲的。如果对您网站的请求需要 1 秒,而用户会花 10 秒(这真的很快)查看响应。那么您的服务器实际上只处理 2-3 个并发 请求 。考虑到大多数现代处理器都有 4 个内核,您可能甚至没有使单个 CPU.
饱和
此外,将您的小时费率乘以构建新系统所需的小时数。现在将其与您的托管成本进行比较。您很可能根本不应该花任何时间在这上面。在重建之前,使用专用服务器寻找更好的托管计划。
既然我们已经介绍过了,如果您真的想学习如何开发可扩展的系统,请学习基本的架构模式,如 MVC 或面向服务的架构 (SOA) 等。其中大部分将倾向于帮助您构建不会让您陷入太多麻烦的系统。
考虑到这似乎是一个非常 database-centric 的应用程序,您更有可能使数据库的磁盘 IO 饱和(这是 2-3 个并发请求的巧妙技巧)。如果您确实有一个磁盘太忙,您可以查看缓存解决方案。当您优化性能,尤其是数据库性能时,它们通常是第一个解决方案 space。查看可以缓存哪些数据,更多静态信息,如公司地址和名称等。如果能在客户端缓存,那就更好了。
所以... tldr;你可能会很好,如果不是,在你构建一个新系统之前找出你为什么不好。即使你身体不好。看看你能不能花钱让自己变好。
我在 php 中开发了一个 Web 应用程序,可用于自动化诊所中的手动流程。该应用程序运行良好,3 个并发用户可以使用该应用程序而不会出现任何性能问题。
标准事务是查询、创建新记录、修改现有记录和安排约会。截至目前,该应用程序已部署在标准网络托管服务器上。
如果这个应用程序被 20 个并发用户使用,我相信性能会很糟糕。
在某个场景中,如果诊所决定实施自己的 Web 服务器并托管此应用程序,
1) 就 'system' architecture/design 而言,要将我的应用程序整体扩展为多个 (20-30) 并发用户需要什么?
2) 我是否需要更改我的代码才能扩大规模?
3) 我如何决定我的网络服务器在处理和内存方面的资源容量?
I am sure the performance would be miserable
你怎么知道的?你测试过吗?从来没有pre-optimize。 运行一个测试,看看掉下来的是什么。你可能会感到惊讶。
在构建测试套件 (lots of open source tools available) 之后,看看有什么问题。你的数据库失败了吗?你真的被 CPU 束缚了吗?你 运行 是不是记错了?看看获得更强大的机器。或者将其托管在云中,您可以根据需要扩展到更强大的服务器。
20-30个并发用户负载不大。请记住,用户大多是空闲的。如果对您网站的请求需要 1 秒,而用户会花 10 秒(这真的很快)查看响应。那么您的服务器实际上只处理 2-3 个并发 请求 。考虑到大多数现代处理器都有 4 个内核,您可能甚至没有使单个 CPU.
饱和此外,将您的小时费率乘以构建新系统所需的小时数。现在将其与您的托管成本进行比较。您很可能根本不应该花任何时间在这上面。在重建之前,使用专用服务器寻找更好的托管计划。
既然我们已经介绍过了,如果您真的想学习如何开发可扩展的系统,请学习基本的架构模式,如 MVC 或面向服务的架构 (SOA) 等。其中大部分将倾向于帮助您构建不会让您陷入太多麻烦的系统。
考虑到这似乎是一个非常 database-centric 的应用程序,您更有可能使数据库的磁盘 IO 饱和(这是 2-3 个并发请求的巧妙技巧)。如果您确实有一个磁盘太忙,您可以查看缓存解决方案。当您优化性能,尤其是数据库性能时,它们通常是第一个解决方案 space。查看可以缓存哪些数据,更多静态信息,如公司地址和名称等。如果能在客户端缓存,那就更好了。
所以... tldr;你可能会很好,如果不是,在你构建一个新系统之前找出你为什么不好。即使你身体不好。看看你能不能花钱让自己变好。