2009-02-20 32 views
5

Chúng tôi có 22 máy chủ HTTP, mỗi máy chạy ASP.NET Caches riêng của họ. Họ đọc từ một DB chỉ đọc mà chỉ cập nhật giờ cao điểm.Bất cứ ai sử dụng Memcached với ASP.NET trên một trang trại phân tán?

Chúng tôi sử dụng tệp phụ thuộc để làm mất hiệu lực bộ nhớ cache, khiến máy chủ phải "mới" bộ nhớ cache của chúng ... Nếu điều này vô tình được thực hiện trong giờ cao điểm, nó có thể làm hỏng cụm DB của chúng tôi. kết nối.

Có ai đã sử dụng memcached với ASP.NET trong biểu mẫu được phân phối này không? Dường như với tôi rằng nó sẽ cung cấp một lợi thế rất lớn của việc phải chỉ xây dựng một bộ nhớ cache (và nhấn DB 21 lần ít hơn), trong khi memcached sẽ xử lý phân phối nó trên mỗi hộp.

Nếu bạn có, bạn đặt nó trên cùng một hộp với các hộp HTTP hay bạn chạy một tầng bộ nhớ cache riêng biệt? Làm thế nào nó cũng quy mô, chúng ta có thể mong đợi nó cần các máy chủ mạnh mẽ? Số liệu làm việc của chúng tôi là không lớn (Chúng tôi phù hợp với nó thành 4 hợp đồng biểu diễn của bộ nhớ trên mỗi hộp HTTP chỉ tốt).

Bạn xử lý việc vô hiệu như thế nào?

Tìm kiếm trải nghiệm và câu chuyện chiến tranh.

CHỈNH SỬA: Máy chủ Win2k3, IIS6, 64 bit ... 4 biểu diễn trên mỗi hộp (Tôi tin rằng, chúng tôi có thể đã nâng cấp lên 16 hợp đồng biểu diễn khi chúng tôi đổi sang máy chủ 64 bit).

Trả lời

5

"memcached sẽ xử lý phân phối nó trên mỗi hộp"

memcached không phân phối hoặc tái tạo một bộ nhớ cache cho mỗi hộp trong một trang trại memcached. Các khách hàng memcached về cơ bản băm phím và chọn một máy chủ bộ nhớ cache dựa trên băm đó. Khi một trong những máy chủ memcached thất bại, bạn sẽ mất bất kỳ mục nào được lưu trữ trên máy chủ đó, tuy nhiên, máy khách sẽ nhận ra lỗi và bắt đầu viết các giá trị cho một máy chủ khác. Trong trường hợp này, mã của bạn cần tính đến các mục bị thiếu trong bộ nhớ cache và đặt lại chúng nếu cần.

Bài viết này thảo luận về kiến ​​trúc được ghi nhớ chi tiết hơn: How memcached works.

+0

Cảm ơn, tôi đã dành một giờ để đọc mọi thứ trên trang web đó. – FlySwat

1

Chưa sử dụng chúng cùng nhau, nhưng tôi đã sử dụng cả hai trên các dự án riêng biệt.

Cuối cùng tôi thấy tài liệu được thông báo rõ ràng rằng việc chia sẻ với máy chủ web là ok.

Memcache thực sự chỉ cần RAM và nếu bạn lấy bộ nhớ cache asp.net của bạn ra khỏi phương trình bao nhiêu RAM là máy chủ web bạn thực sự sử dụng? Có lẽ không nhiều. Nó sẽ không cạnh tranh nhiều với máy chủ web của bạn cho CPU và nó không cần đĩa nào cả. Bạn có thể xem xét phân đoạn lưu lượng truy cập mạng (nếu bạn chưa có) từ các yêu cầu web đến.

Nó hoạt động tốt và nhanh chóng tôi không gặp bất kỳ vấn đề gì với nó.

Ồ, việc vô hiệu đã rõ ràng đối với dự án tôi đã sử dụng. Không chắc chắn các chế độ khác có cho điều đó.

2

Thực hành tốt nhất (theo trang memcached) là để chạy memcached trên cùng một hộp như ứng dụng máy chủ web của bạn hoặc người nào khác bạn đang thực hiện cuộc gọi http (mà không phải là tất cả những gì xấu, nhưng nó không phải là tối ưu). Nếu bạn đang chạy một máy chủ ứng dụng 64 bit (mà bạn có thể nên nếu bạn định chạy memcached), thì bạn có thể tải lên mỗi máy chủ với vô số bộ nhớ và nó sẽ có sẵn để ghi nhớ. Không có nhiều trong cách của các nguồn tài nguyên CPU được sử dụng bởi memcached, vì vậy nếu máy chủ ứng dụng hiện tại của bạn không phải là rất bị đánh thuế, nó sẽ vẫn như vậy.

0

Kiểm tra giá trị Velocity, là bộ nhớ cache được phân phối do Microsoft cung cấp. Tôi không thể cho bạn so sánh từng điểm một với memcached, nhưng Velocity được tích hợp với ASP.NET và sẽ tiếp tục phát triển và tích hợp nhiều hơn nữa.

1

Nếu bạn muốn sao chép qua các máy chủ được ghi nhớ của mình thì có thể đáng xem tại repcached. Đó là một bản vá cho memcached xử lý phần nhân rộng.

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