On WordPress Scaling and Performance, The Zillow Way
Bài tóm tắt Zillow 2012 2. Tăng trưởng Độ khó: Dễ
Zillow · 2012 · 2. Tăng trưởng · Độ khó: Dễ — bài gốc
Bối cảnh
- Sản phẩm Premier Agent Websites (website cho môi giới) dựng trên lõi WordPress, tự host, chỉ dùng tối thiểu plugin ngoài vì lý do bảo mật; mục tiêu chạy hàng chục tới hàng trăm nghìn site trên một nền tảng chung (2012).
- Toàn bộ hạ tầng trên AWS.
Thay đổi chính
- DNS: domain của khách và domain CDN host trên Route 53, quản lý qua API và UI riêng.
- Hai tầng cache: một nhóm server Varnish tự autoscale đứng trước; mỗi site được gán cho một server Varnish, và khi site đổi gì thì xoá cả domain khỏi server đó. Varnish bỏ hết cookie để tăng tỉ lệ hit; hai tính năng cần cookie (bài viết có mật khẩu, tự điền bình luận) được làm lại bằng query string hoặc bỏ. Tầng sau là Memcached cho các request lọt qua Varnish, và code riêng cũng gọi
wp_cache_*. - App server PHP autoscale theo tải.
- Chia DB theo khách: plugin HyperDB + thư viện Flexihash, consistent hashing (MD5) chọn DB server cho từng khách, để thêm server mới chỉ phải dời một phần nhỏ khách.
- mod_pagespeed tự minify, gộp request và viết lại URL tài nguyên tĩnh sang CloudFront với cache 1 năm, nên app server chỉ còn phục vụ PHP.
- File người dùng lưu thẳng lên S3, URL viết lại sang nhiều hostname CloudFront; tên file chứa hash nội dung và header cache 10 năm, nên sửa ảnh thì URL đổi và trình duyệt thấy ngay.
Vì sao
- Nền tảng nhiều site nhỏ: mỗi site ít traffic nên cache theo domain và xoá cả domain khi đổi là đủ đơn giản mà vẫn đúng (Cache và invalidation).
- Chia khách theo hash nhất quán là cách sharding rẻ nhất khi đơn vị là tenant độc lập (Sharding và tách database, Multi-tenancy và cô lập tenant).
Bài học cho SWE
- Invalidation thô (xoá cả domain) chấp nhận được khi đơn vị cache nhỏ và lần ghi hiếm.
- Tên file theo hash nội dung biến bài toán invalidation CDN thành bài toán đặt tên: cache vĩnh viễn, đổi nội dung thì đổi URL.
- Gỡ tính năng phụ thuộc cookie khỏi đường cache thay vì để cookie phá tỉ lệ hit.
Liên quan
#WordPress#Premier Agent Websites#Route 53#Varnish#Memcached#HyperDB#consistent hashing#mod_pagespeed#CloudFront#S3#content-hash filename
Được nhắc tới trong
Công ty (1)
Bài tóm tắt (1)