Coinbase đã mở rộng dịch vụ Người dùng của chúng tôi để duy trì hơn 1,5 triệu lượt đọc danh tính/giây. Dưới đây là cách chúng tôi thực hiện: - Chúng tôi đã chia nhỏ đối tượng người dùng đơn khối thành các nhóm độc lập, hợp lý gọi là "Fragments." - Di chuyển từ một cụm MongoDB đơn lẻ sang một hệ thống liên bang sử dụng cả MongoDB và DynamoDB. - Đối với các ghi đồng thời, chúng tôi đã triển khai Kiểm soát Đối kháng Lạc quan (OCC), sử dụng một trường phiên bản tài nguyên để so sánh và hoán đổi khi ghi, tránh các khóa toàn cầu chậm. - Để đảm bảo đọc sau ghi mạnh mẽ trên các luồng quan trọng, chúng tôi sử dụng "Freshness Tokens." Những token này được truyền trong yêu cầu đọc để đảm bảo dữ liệu trả về ít nhất cũng mới như phiên bản liên quan đến token, bỏ qua bộ nhớ đệm nếu cần thiết. - Chúng tôi đã giới thiệu một cơ chế giảm tải mà tự động chuyển hướng một phần lưu lượng truy cập đến một nhóm mục tiêu giả khi dịch vụ phát hiện quá tải, ngăn chặn vòng lặp chết MongoDB và cho phép dịch vụ giảm thiểu một cách thanh lịch. Kiến trúc này mang lại cho chúng tôi khả năng mở rộng để xử lý những đỉnh điểm khổng lồ, không thể đoán trước của thị trường crypto và sự kiên cường để trở thành một dịch vụ mà Coinbase có thể xây dựng với sự tin tưởng.