What really is scaling?

前端 未结 6 803
南笙
南笙 2021-01-30 18:35

I\'ve heard that people say that they\'ve made a scalable web application..

  1. What really is scaling?

  2. What can be done by developers to make their

6条回答
  •  青春惊慌失措
    2021-01-30 19:31

    My 2c definition of "scalable" is a system whose throughput grows linearly (or at least predictably) with resources. Add a machine and get 2x throughput. Add another machine and get 3x throughput. Or, move from a 2p machine to a 4p machine, and get 2x throughput.

    It rarely works linearly, but a well-designed system can approach linear scalability. Add $1 of HW and get 1 unit worth of additional performance.

    This is important in web apps because the potential user base is ~1b people.


    Contention for resources within the app, when it is subjected to many concurrent requests, is what causes scalability to suffer. The end result of such a system is that no matter how much hardware you use, you cannot get it to deliver more throughput. It "tops out". The HW-cost versus performance curve goes asymptotic.

    For example, if there's a single app-wide in-memory structure that needs to be updated for each web transaction or interaction, that structure will become a bottleneck, and will limit scalability of the app. Adding more CPUs or more memory or (maybe) more machines won't help increase throughput - you will still have requests lining up to lock that structure.

    Often in a transactional app, the bottleneck is the database, or a particular table in the database.

提交回复
热议问题