Tôi luôn luôn có được đối số này chống lại RoR rằng nó không quy mô nhưng tôi không bao giờ nhận được bất kỳ câu trả lời thích hợp wtf nó thực sự có nghĩa là? Vì vậy, đây là một người mới hỏi, địa ngục này là gì "nhân rộng" và cách bạn đo lường?Điều chỉnh tỷ lệ là gì?
Trả lời
Địa ngục này là "mở rộng quy mô" ...
Là một thuật ngữ chung, scalability có nghĩa là đáp ứng của một dự án với các loại khác nhau của nhu cầu. Một dự án có quy mô tốt là một dự án không có bất kỳ vấn đề gì với việc yêu cầu nhiều dịch vụ hơn - hoặc, ít nhất, không phải bắt đầu từ chối các yêu cầu vì nó không thể xử lý chúng.
Thường thì trường hợp đó chỉ đơn giản là tăng kích thước của một vấn đề theo thứ tự độ lớn hoặc hai cho thấy những điểm yếu trong các chiến lược đã được sử dụng để giải quyết nó. Khi những điểm yếu như vậy được phơi bày, có thể nói rằng giải pháp cho vấn đề không "mở rộng tốt". Ví dụ: dễ thực hiện, nhưng ngay sau khi bạn sắp xếp nhiều hơn một số thứ, nó sẽ bắt đầu mất một thời gian rất dài để nhận được câu trả lời mà bạn muốn. Quay lại đầu trang Nó sẽ là công bằng để nói rằng loại bogo không quy mô tốt.
... và cách bạn đo?
Đó là câu hỏi khó trả lời hơn. Nói chung, không có đơn vị nào liên quan đến khả năng mở rộng; các câu lệnh như "hệ thống đó là N lần có khả năng mở rộng vì hệ thống này" tốt nhất sẽ là so sánh giữa táo và cam.
Khả năng mở rộng thường được đo bằng cách xem hệ thống có thể đáp ứng các loại nhu cầu khác nhau trong các điều kiện thử nghiệm như thế nào. Mọi người có thể nói rằng một hệ thống có quy mô tốt nếu, trên một loạt các nhu cầu của các loại khác nhau, nó có thể theo kịp. Điều này đặc biệt đúng nếu nó đứng lên để yêu cầu rằng nó hiện không có kinh nghiệm, nhưng có thể được dự kiến sẽ nếu có một sự đột biến đột biến phổ biến. (Hãy suy nghĩ về số Slashdot/Digg/Reddit effects.)
Khả năng mở rộng đề cập đến khả năng cho hệ thống chứa số lượng người dùng thay đổi. Đây có thể là số lượng người dùng ngày càng tăng hoặc giảm vì chúng tôi hiện đang cố gắng lên kế hoạch cho các hệ thống của mình trên điện toán đám mây và thời gian tính toán đã thuê.
Hãy suy nghĩ về những gì liên quan đến việc tạo hệ thống mục nhập đơn hàng được thiết kế cho quy mô 1000 đại diện để chứa 100.000 đại diện. Phần cứng nào cần được thêm vào? Điều gì về cơ sở dữ liệu? Tóm lại, đây là khả năng mở rộng.
Nó không nhất thiết phải đề cập đến một số người dùng. Ví dụ: hãy tưởng tượng một hệ thống một người dùng theo dõi xe hơi trên đường. Nó có thể đã được thử nghiệm ở thị trấn dân số 10.000, nhưng nó sẽ quy mô đến một thị trấn với dân số trong hàng triệu người? –
Đúng nhưng tôi đã đưa ra một ví dụ mà tôi nghĩ rằng bất cứ ai trên SO có thể liên quan đến – DenaliHardtail
Scaling hoặc khả năng mở rộng đề cập đến làm thế nào một dự án có thể phát triển hoặc mở rộng để đáp ứng các nhu cầu:
Khả năng mở rộng của một ứng dụng đề cập đến nó như thế nào có thể thực hiện như tải về những thay đổi ứng dụng . Điều này thường bị ảnh hưởng bởi số lượng người dùng kết nối, số lượng dữ liệu trong một cơ sở dữ liệu, vv
Khả năng mở rộng có một loạt các công dụng như đã nêu bởi Wikipedia:
Khả năng mở rộng có thể được đo bằng kích thước khác nhau, chẳng hạn như :
- tải khả năng mở rộng: khả năng cho một hệ thống phân phối để dễ dàng mở rộng và co lại hồ bơi tài nguyên của nó để phù hợp nặng hơn hoặc nhẹ hơn tải. Ngoài ra, sự dễ dàng với mà một hệ thống hoặc thành phần có thể được sửa đổi, thêm hoặc xóa, để phù hợp với việc thay đổi tải.
- Khả năng mở rộng địa lý: Khả năng duy trì hiệu suất, tính hữu dụng hoặc khả năng sử dụng bất kể mở rộng từ tập trung trong một khu vực địa phương được phân phối thêm .
- Khả năng mở rộng hành chính: Khả năng tăng số lượng tổ chức dễ dàng chia sẻ một hệ thống phân phối .
- Khả năng mở rộng chức năng: Khả năng tăng cường hệ thống bằng cách thêm chức năng mới ở mức tối thiểu nỗ lực.
Trong một lĩnh vực mà tôi làm việc, chúng tôi quan tâm đến hiệu suất thông lượng cao và tính toán song song khi số lượng bộ vi xử lý tăng lên.
Tổng quát hơn nó thường được tìm thấy rằng việc tăng các vấn đề bằng cách (nói) một hoặc hai bậc độ lớn ném lên một tập hoàn toàn mới của những thách thức mà không phải là dễ dàng dự đoán được từ hệ thống nhỏ hơn
Vì vậy, chúng ta có thể nói đó là tất cả về bao nhiêu người nhận được thông qua các đường hầm trong một giây? – itsaboutcode
Đó là nhiều hơn về nói rằng nếu có nhiều hơn 10 lần người trả lời có thể không được để xây dựng chín đường hầm nhiều hơn nhưng để tìm một cách khác nhau trên khắp các ngọn núi. –
Đó là khả năng cho một hệ thống để chấp nhận khối lượng công việc tăng lên, nhiều chức năng hơn, thay đổi cơ sở dữ liệu, ... mà không ảnh hưởng đến thiết kế hoặc hệ thống ban đầu.
Đây là thuật ngữ để thể hiện khả năng của hệ thống để duy trì hiệu suất của nó khi nó phát triển theo thời gian.
Lý tưởng nhất là những gì bạn muốn, là một hệ thống để đạt được khả năng mở rộng tuyến tính. Điều đó có nghĩa là bằng cách thêm các đơn vị tài nguyên mới, hệ thống sẽ phát triển như nhau trong khả năng thực hiện của nó.
Ví dụ: Nó có nghĩa là, khi ba máy chủ ứng dụng web có thể xử lý một ngàn người dùng đồng thời, điều đó bằng cách thêm ba hơn máy chủ, nó có thể xử lý gấp đôi số tiền, hai ngàn người dùng đồng thời trong trường hợp này và không ít hơn.
Nếu hệ thống không có thuộc tính khả năng mở rộng tuyến tính, có một điểm để thêm nhiều tài nguyên hơn, ví dụ: phần cứng, sẽ không mang lại bất kỳ lợi ích bổ sung, hiệu suất, ví dụ, hội tụ với số không: Khi ngày càng nhiều máy chủ được đưa vào nhiệm vụ. Trong ví dụ trên, lợi ích bổ sung của mỗi máy chủ mới trở nên nhỏ hơn và nhỏ hơn cho đến khi nó đạt đến 0.
Do đó, khả năng mở rộng là yếu tố cho bạn biết những gì bạn nhận được dưới dạng đầu ra từ một đầu vào nhất định. Đó là phạm vi giá trị nằm giữa 0 và vô cùng dương, theo lý thuyết. Trong thực tế, bất cứ điều gì bằng 1 là mong muốn nhất ...
Tôi nghĩ rằng Scaling là những gì bạn đang làm khi lập trình ở Scala. :-) –
Bạn có thể cung cấp một số ngữ cảnh không? Bạn có hỏi về việc mở rộng quy mô trang web và/hoặc ứng dụng để xử lý nhiều người dùng/dữ liệu hơn không? – ChrisF
@ChrisF Cụ thể hơn là tôi đang nói về các trang web và cũng nói chung thuật ngữ này thực sự có ý nghĩa gì. – itsaboutcode