2009-05-25 26 views

Trả lời

36

Trong năm qua tôi đã phải tăng tốc về câu hỏi này cho một dự án mà công ty của tôi đang nghiên cứu và tôi đã tìm thấy những tài nguyên này cực kỳ hữu ích: highscalability.com của Todd Hoff; Scalable Internet Architectures, theo Theo Schlossnagle; và Building Scalable Web Sites, của Cal Henderson. Đặc biệt, Highscalability.com sẽ chỉ cho bạn nhiều bản báo cáo, hướng dẫn, sách và giấy tờ tốt, và là một nơi tuyệt vời để bắt đầu. Tất cả lời khuyên là thực tế và dựa trên kinh nghiệm tại các trang web như Flickr, Twitter và Google.

BTW, khả năng mở rộng không hoạt động. Một hệ thống hoàn toàn có khả năng mở rộng là một hệ thống có chi phí cận biên cố định để bổ sung thêm người dùng hoặc dung lượng.

+0

Tài nguyên hay mà bạn đã chỉ ra ở đó! – mmcdole

+0

oh tư vấn khả năng mở rộng từ twitter, phải là tốt ..;) – Jonatan

+0

Hah, tôi có thể đã chọn một ví dụ tốt hơn, tôi đoán! ;-) Nhưng Twitter đã phải chiến đấu khó khăn để vượt qua nỗi đau ngày càng tăng của họ. Xem http://highscalability.com/scaling-twitter-making-twitter-10000-percent-faster. –

0

tôi sẽ đề nghị cuốn sách này cho rằng:

http://www.amazon.com/Scalable-Internet-Architectures-Developers-Library/dp/067232699X/ref=sr_1_1?ie=UTF8&s=books&qid=1243267630&sr=8-1

Mặc dù đây chủ yếu là một cuốn sách PHP, ý tưởng là như nhau cho bất kỳ stack web.

+0

Tôi đồng ý, mặc dù tôi sẽ không mô tả điều này như là một cuốn sách PHP. Nó có các ví dụ quan trọng trong Perl, Oracle PL/SQL và các ngôn ngữ khác, và cũng có rất nhiều tài liệu cấp cao, như Chương 5 về cân bằng tải (không có mẫu mã) và Chương 6 về phân phối nội dung tĩnh (một đoạn mã PHP nhỏ). Một lời chỉ trích mà tôi đã thấy là anh ấy tập trung quá nhiều vào thư viện lan truyền Johns Hopkins, nhưng tất cả mọi người trong cộng đồng có khả năng mở rộng cao đều thích nó. –

1

Trước khi bắt đầu với kỹ thuật, bạn nên biết phạm vi ứng dụng chết lạnh. Khách hàng/đơn vị kinh doanh mong đợi điều gì về hiệu suất và các khu vực quan trọng của sự thất bại là gì? Scott Hanselman có số lượng lớn podcast về chủ đề này.

Một số mẩu tin được cung cấp: không sử dụng bộ nhớ đệm trừ khi bạn phải; phân phối tệp nhanh hơn so với việc lắp ráp các phân đoạn từ cơ sở dữ liệu; biết cách xử lý thời gian của máy chủ peek; biết những gì đỉnh của bạn sẽ được.

Một lần nữa, hãy biết phạm vi sử dụng đầu tiên để biết liệu bạn có nên quy mô không.

0

This chính xác là những gì bạn cần! Hướng dẫn Kiến trúc Ứng dụng được tạo bởi nhóm Mô hình và Thực tiễn của Microsoft để giúp kiến ​​trúc sư ...

0

Đây là phần giới thiệu tốt cho chủ đề: IBM developerWorks có một vài hướng dẫn thú vị về cách sử dụng các mẫu kiến ​​trúc cho các ứng dụng có quy mô: herehere.

2
  • Tôi có xu hướng nghĩ rằng khả năng mở rộng có liên quan chặt chẽ đến khả năng bảo trì. Và dường như thường bị bỏ qua rằng mọi người chỉ dành một thời gian ngắn phát triển các ứng dụng và phần còn lại của thời gian duy trì nó.

  • Ngoài ra, tỉ lệ có gần như chắc chắn phải làm gì với dữ liệu (đó là nhanh nhẹn hơn mã - vì vậy bạn muốn có ngày càng nhiều của nó), đó là lý do tại sao chi phí truy cập lưu trữ của bạn nên ở giữa O(1)O(n). Ứng dụng hoàn toàn có thể mở rộng cho tôi là một ứng dụng mà tôi có thể sao chép từ môi trường sang môi trường khác (tương tự), định cấu hình một vài giá trị và chạy nó để mở rộng phạm vi thực thi của toàn bộ ứng dụng.

3

Đã có một số câu trả lời tuyệt vời được đăng tại đây. Trong một số sách và liên kết, bạn sẽ tìm thấy một vài mẫu suy nghĩ phổ biến.

  • Viết ít mã càng tốt đang Tái sử dụng

  • càng nhiều càng tốt

  • Đừng kết thúc, hoặc theo trừu tượng thiết kế của bạn

  • phá vỡ mọi thứ sang các lĩnh vực mô-đun mà có thể chạy trên các hệ thống riêng biệt hoặc nhiều hệ thống. Xử lý nặng nên được để lại cho một hệ thống riêng biệt.

4

Đây là một bài đọc hay trên livejournal và cách họ chia tỷ lệ ứng dụng theo thời gian.

danga.com/words/2004_mysqlcon/mysql-slides.pdf [PDF]

Nó có thể không phải là loại mà bạn đang tìm kiếm, nhưng nó là một trong những tốt hơn "Đây là những gì chúng tôi đã làm và tại sao" tổng quan về mở rộng quy mô.

+0

+1 Điều này đi qua toàn bộ quá trình bắt đầu bằng một máy tính thông qua việc chuyển một trang web lớn thành các cụm người dùng. Ấn bản năm 2007 của họ ở đây: http://www.scribd.com/doc/39892/Website-Scalability-LiveJournal-Behind-The-Scenes-2007 –

+0

Phiên bản dài hơn của bản trình bày năm 2007: http: //www.danga. com/words/2007_04_linuxfest_nw/linuxfest.pdf ver –

1

Dù bạn làm gì, bạn không thể thiết kế hệ thống ngay từ đầu để có thể mở rộng cho mọi nhu cầu của bạn. Thường thì một khi bạn có hệ thống của bạn chạy, bạn sẽ tìm thấy tắc nghẽn, nơi bạn ít mong đợi họ (tức là: băng thông mạng cục bộ). Dù sao, lời khuyên của tôi chắc chắn là highscalability.com cũng vậy :)

Các vấn đề liên quan