2010-07-10 38 views
5

Tôi đã tự hỏi một lúc; làm thế nào để các trang web như mã facebook để có thể có nhiều máy chủ?Viết nhiều mã máy chủ

Làm cách nào để mã có thể tính đến một số máy chủ sẽ chạy cùng một mã và nhận được từ việc thêm nhiều hơn?

Hoặc máy chủ web có thể đối phó với điều này bất kể mã?

Trả lời

4

Bằng cách chia sẻ và kết nối mạng. Mã 'nên' giống nhau đối với một máy chủ hoặc một số.

Bạn có thể chia sẻ dữ liệu qua Cơ sở dữ liệu, bộ nhớ với những thứ như Memcache, tải với bộ cân bằng, v.v. Nếu bạn chuyên máy chủ như Google thực hiện (một số tìm nạp URL, một số dữ liệu giữ, một số làm crunching số, v.v ...) phần cứng để tay có thể được sử dụng tốt hơn.

Mã có thể sử dụng logic công văn (thường được trừu tượng hóa qua API) sao cho nó hoạt động giống nhau nếu có một máy chủ hoặc hàng triệu máy chủ.

IPC (Inter Process Communication) có thể được bật mạng và cho phép liên kết dịch vụ 'chặt chẽ hơn'. Google thậm chí còn có dự án protocol buffer để hỗ trợ điều này.

Máy chủ cơ bản phải chia sẻ để nhận được bất kỳ lợi ích thực sự nào (ngoài dự phòng/sao lưu), mã cần sử dụng mức trừu tượng để giúp chia sẻ. Chia sẻ thực tế thường sử dụng logic Round-Robin hoặc Map/Reduce.

3

Mẫu kiến ​​trúc cơ bản là "kiến trúc không chia sẻ". Ý tưởng là xây dựng những phần được sử dụng nhiều nhất của kiến ​​trúc theo cách nó có thể được phân phối và những người phân phối không cần phải biết gì về những người khác, vì vậy họ không cần giao tiếp với nhau. Bằng cách đó họ có thể được thu nhỏ bằng cách thêm các đồng nghiệp khác.

Thông thường yêu cầu một số loại lưu lượng truy cập (cân bằng tải) để cho ăn các thành phần được chia sẻ và một số đồng bộ và/hoặc đồng bộ hóa trạng thái.

Kiến trúc "cổ điển" cho việc này là một hoặc nhiều balamcers tải phân phối lưu lượng truy cập đến một số máy chủ ứng dụng "không chia sẻ" chạy trên cơ sở dữ liệu chung. Thông thường phần cứng máy chủ ứng dụng khá rẻ và phần cứng cơ sở dữ liệu là một hoặc hai bàn phím lớn tùy thuộc vào tải.

Những ngày này, ngày càng nhiều giải pháp cũng cắt cơ sở dữ liệu thành từng phần để mở rộng quy mô. Cuối cùng dẫn đến cơ sở dữ liệu phân tán, phân tán, trong đó một số nút db tồn tại và mỗi nút chỉ chứa một tập con của dữ liệu.

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