Memcache (d) so với Varnish để tăng tốc kiến ​​trúc web 3 cấp


111

Tôi đang cố gắng tăng tốc điểm chuẩn của mình (kiến trúc web 3 tầng) và tôi có một số câu hỏi chung liên quan đến Memcache (d) và Varnish.

  • Sự khác biệt là gì?
    Đối với tôi, dường như Varnish đứng sau máy chủ web, lưu trữ các trang web và không yêu cầu thay đổi mã, chỉ cần cấu hình.
    Mặt khác, Memcached là hệ thống bộ nhớ đệm mục đích chung và chủ yếu được sử dụng để lưu trữ kết quả từ cơ sở dữ liệu và yêu cầu thay đổi getphương pháp (tra cứu bộ nhớ cache đầu tiên).

  • Tôi có thể sử dụng cả hai không? Varnish trong máy chủ web phía trước và Memcached cho bộ nhớ đệm cơ sở dữ liệu?

  • Một lựa chọn tốt hơn là gì?

    (kịch bản 1 - chủ yếu là viết,
    kịch bản 2 - chủ yếu là đọc,
    kịch bản 3 - đọc và ghi là tương tự)

Câu trả lời:


269
  • Vecni ở phía trước máy chủ web; nó hoạt động như một proxy http ngược lưu vào bộ nhớ đệm.
  • Bạn có thể sử dụng cả hai.
  • Chủ yếu là viết - Vecni sẽ cần phải tẩy các trang bị ảnh hưởng. Điều này sẽ dẫn đến chi phí cao và ít lợi ích cho các trang đã sửa đổi.
  • Chủ yếu là đọc - Vecni có thể sẽ bao gồm hầu hết nó.
  • Đọc và ghi tương tự - Varnish sẽ phục vụ rất nhiều trang cho bạn, Memcache sẽ cung cấp thông tin cho các trang có hỗn hợp dữ liệu đã biết và mới cho phép bạn tạo trang nhanh hơn.

Một ví dụ có thể áp dụng cho stackoverflow.com: thêm nhận xét này đã làm mất hiệu lực bộ nhớ cache của trang, vì vậy trang này sẽ phải bị xóa khỏi Varnish (và cả trang hồ sơ của tôi, trang này có lẽ không đáng để bắt đầu vào bộ nhớ đệm. Hãy nhớ để làm mất hiệu lực tất cả các trang bị ảnh hưởng có thể là một chút vấn đề). Tuy nhiên, tất cả các nhận xét vẫn nằm trong Memcache, do đó, cơ sở dữ liệu chỉ phải viết nhận xét này. Cơ sở dữ liệu không cần thực hiện gì khác để tạo trang. Tất cả các bình luận đều được Memcache kéo và trang được lấy lại cho đến khi ai đó tác động lại nó (có thể bằng cách bỏ phiếu cho câu trả lời của tôi). Một lần nữa, cơ sở dữ liệu ghi phiếu bầu, tất cả dữ liệu khác được lấy từ Memcache và cuộc sống diễn ra nhanh chóng.

Memcache giúp DB của bạn không phải thực hiện nhiều công việc đọc, Varnish tiết kiệm máy chủ web động của bạn khỏi tải CPU bằng cách làm cho bạn tạo các trang ít thường xuyên hơn (và giảm nhẹ tải db một chút nếu không dành cho Memcache).


3
này: "(có lẽ bằng cách bỏ phiếu trả lời của tôi lên)" khiến tôi bỏ phiếu lên câu trả lời của bạn
Cesc

vì vậy chúng tôi không khuyến khích các trang web như stackoverflow (hoặc trang như facebook có trang nguồn cấp dữ liệu hoạt động) sử dụng véc ni. Là nó?
Mohammad Reza Esmaeilzadeh

@jbferland Câu hỏi của tôi trong ví dụ của bạn là đầu trang này có một bức ảnh của tôi với số điểm mà tôi đã nhận được, làm thế nào chúng ta có thể lưu vào bộ nhớ cache bằng Varnish nhưng lại hiển thị vùng động?
Hossj

@Hossj bằng cách sử dụng thẻ ESI.
Johny Pie

Varnish có thể ở phía trước máy chủ web nhưng cũng có thể ở phía sau máy chủ web. Nó cũng có thể ở cùng lúc phía trước và phía sau cùng một máy chủ web ;-) Ví dụ: Varnish không hỗ trợ SSL nên không có gì lạ khi có một máy chủ web phía trước Varnish để xử lý HTTPS. Lưu lượng truy cập sau đó được ủy quyền cho Varnish, sau đó giao tiếp với máy chủ web ứng dụng - máy chủ này có thể là cùng một máy chủ với máy chủ xử lý lưu lượng HTTPS.
matt

32

Kinh nghiệm của tôi đến từ việc sử dụng Varnish với Drupal. Nói một cách đơn giản nhất có thể, đây là cách tôi trả lời:

Nói chung, Varnish hoạt động đối với lưu lượng truy cập chưa được xác thực (qua cookie) và memcached sẽ lưu vào bộ nhớ cache lưu lượng đã xác thực.

Vì vậy, hãy sử dụng cả hai.


5
Bạn đóng đinh nó, bằng cách này tôi nghĩ Varnish hoạt động tốt hơn trên bộ nhớ đệm thành viên giấu tên ...
Allan Jikamu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.