Etsy chuyển đổi kiến trúc sharding MySQL khổng lồ 425 TB sang Vitess

11 tháng 4, 2026·4 phút đọc

Đội ngũ kỹ thuật của Etsy vừa chia sẻ hành trình chuyển đổi hạ tầng sharding MySQL lâu đời sang Vitess. Bằng cách chuyển logic định tuyến sang Vitess sử dụng vindexes, nền tảng này giờ đây có khả năng resharding dữ liệu và mở rộng quy mô các bảng dữ liệu hiệu quả hơn.

Etsy chuyển đổi kiến trúc sharding MySQL khổng lồ 425 TB sang Vitess

Etsy chuyển đổi kiến trúc sharding MySQL khổng lồ 425 TB sang Vitess

Đội ngũ kỹ thuật của Etsy gần đây đã công bố chi tiết về quá trình chuyển đổi hạ tầng sharding MySQL (chia nhỏ cơ sở dữ liệu) lâu đời của họ sang Vitess. Quá trình này đã chuyển logic định tuyến shard từ các hệ thống nội bộ sang Vitess thông qua việc sử dụng vindexes, từ đó kích hoạt các khả năng mạnh mẽ như resharding dữ liệu và sharding các bảng dữ liệu chưa được phân mảnh trước đây.

Thách thức với hạ tầng cũ

Vitess là một hệ thống cụm cơ sở dữ liệu mã nguồn mở được thiết kế để mở rộng quy mô MySQL theo chiều ngang (horizontal scaling). Ban đầu, nó được giới thiệu như một lớp nằm giữa ORM (Object-Relational Mapping) và cơ sở dữ liệu để định tuyến các truy vấn.

Tại Etsy, nền tảng thương mại điện tử này đã sử dụng kiến trúc MySQL sharding từ khoảng năm 2010 để lưu trữ phần lớn dữ liệu sản xuất. Hệ thống bao gồm khoảng 1000 shard, 425 TB dữ liệu và phục vụ 1,7 triệu yêu cầu mỗi giây. Các kỹ sư của Etsy truy cập MySQL thông qua một lớp ORM nội bộ, trong đó mỗi bảng cơ sở dữ liệu có một mô hình (model) tương ứng.

Đối với các bảng được sharding, một trường ID duy nhất gọi là shardifier ID được định nghĩa trong mô hình để xác định shard nào lưu trữ từng bản ghi. Mặc dù hầu hết các mô hình sử dụng shop_id hoặc user_id làm khóa sharding, tổng cộng có hơn 30 ID khác nhau được sử dụng. Ánh xạ từ bản ghi sang shard được lưu trữ trong một cơ sở dữ liệu "index" (chỉ mục) duy nhất (không được sharding).

Mặc dù cách tiếp cận này giúp cải thiện khả năng mở rộng và hạn chế tác động của sự cố đối với một phần nhỏ lưu lượng truy cập, nhưng các thao tác mở rộng quy mô lại diễn ra chậm chạp và thủ công. Cơ sở dữ liệu index trở thành điểm lỗi đơn (single point of failure), và các nhà phát triển phải tự quản lý việc sharding.

Giải pháp: Chuyển sang Vitess và Vindexes

Cách đây vài năm, Etsy quyết định chuyển sang Vitess để giải quyết các thách thức trên, đồng thời duy trì tính tương thích với MySQL, loại bỏ cơ sở dữ liệu index và ẩn đi sự phức tạp của sharding đối với các nhà phát triển.

Trong Vitess, vindexes định nghĩa cách dữ liệu ứng dụng ánh xạ tới các shard cơ sở dữ liệu và cách các truy vấn được định tuyến qua chúng. Ella Yarmo-Gray, kỹ sư phần mềm cấp cao tại Etsy, giải thích về thách thức mà họ đối mặt:

"Với hạ tầng mới này, chúng tôi đã sẵn sàng bắt đầu khám phá vindexes, vốn định nghĩa các chiến lược sharding trong Vitess. Vì ánh xạ shard của ORM là ngẫu nhiên và không theo thuật toán, việc sử dụng một trong các cấu hình có sẵn sẽ yêu cầu resharding toàn bộ dữ liệu của chúng tôi — một quá trình thủ công và có thể mất nhiều năm. Thay vào đó, chúng tôi chọn viết các vindexes tùy chỉnh để chuyển logic sharding hiện có vào Vitess, giúp chúng tôi kiểm tra cách vindexes hoạt động trong môi trường của mình mà không gặp phải sự phức tạp và rủi ro khi di chuyển dữ liệu."

Kết quả và Học hỏi

Quá trình chuyển đổi bao gồm việc thiết kế lại một phần mô hình dữ liệu để hỗ trợ sharding tốt hơn, chọn khóa shard và dần dần chuyển lưu lượng truy cập sản xuất sang môi trường mới trong khi xác minh tính nhất quán của dữ liệu.

Yarmo-Gray kết luận:

"Năm năm, với khoảng 2.500 pull request và 6.000 truy vấn sau đó, chúng tôi đã chuyển đổi thành công quản lý shard của Etsy sang Vitess vindexes! Mặc dù chúng tôi đã nỗ lực để hợp lý hóa quá trình chuyển đổi, việc thay thế hạ tầng cơ sở dữ liệu cho một cơ sở mã có quy mô và tuổi đời như Etsy vẫn là một thách thức lớn."

Trong những năm gần đây, đội ngũ kỹ thuật của Etsy đã xuất bản một loạt bài viết mang tên "Sharding Payments with Vitess", tài liệu hóa nỗ lực chuyển đổi của họ cho nền tảng thanh toán, mô tả các thách thức trong việc chuyển đổi mô hình dữ liệu và đánh giá rủi ro khi chuyển đổi hệ thống lưu lượng cao.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗