Xuất bản vào

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày

Tác giả

"Ngày xửa ngày xưa, có một sinh viên tên Kenji sống ở Okinawa, Nhật Bản.

Anh ấy sẽ chuyển đến Úc để học cao hơn.

Nhưng một ngày nọ, bạn gái anh chia tay anh.

Thế nên anh buồn.

Anh ấy nghe nói về một nền tảng kết nối mọi người tên là Tinder.

Dù là người hướng nội nhưng anh vẫn quyết định thử sức.

Đây là phiên bản đơn giản hóa của kiến ​​trúc Tinder:

Chương 1: Vượt qua cuộc chia tayCách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Kenji tạo hồ sơ Tinder và bổ sung thêm thông tin.

Họ lưu trữ thông tin người dùng trong cơ sở dữ liệu khóa-giá trị như Amazon DynamoDB. Và sử dụng Dynamo Streams để tự động đẩy các thay đổi trên bảng đến các vị trí khác nhau.

Ngoài ra, thông tin người dùng sẽ được thêm vào hàng đợi tin nhắn để cập nhật chỉ mục vị trí. Họ sử dụng chỉ mục vị trí để tìm người dùng ở gần một cách hiệu quả.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày

Họ cung cấp API công khai thông qua Cổng API. Điều đó có nghĩa là nó hoạt động như một điểm truy cập trung tâm cho các yêu cầu của người dùng đối với cơ sở hạ tầng. Và xử lý các quy tắc bảo mật và ủy quyền của người dùng.

Họ chạy khoảng 500 microservices. Và sử dụng lưới dịch vụ để liên lạc giữa các dịch vụ. Hãy tưởng tượng lưới dịch vụ như một cơ sở hạ tầng mạng để quản lý giao tiếp giữa các dịch vụ vi mô một cách hiệu quả.

Chương 2: Cô gái đến từ Okinawa Kenji được xem hồ sơ Tinder của những người sống gần đó.

Thật khó để tìm thấy những người ở gần chỉ dựa trên giá trị kinh độ và vĩ độ của một người.

Ngoài ra, họ không chia bản đồ thế giới thành các lưới cách đều nhau để tránh vấn đề phân mảnh nóng. Bởi vì lưới điện trong đại dương sẽ trống rỗng. Trong khi lưới điện ở các thành phố lớn sẽ có nhiều người dùng. Phân đoạn nóng là tải quá mức trên một phân vùng.

Thay vào đó họ sử dụng thư viện S2. S2 là một hệ thống lập chỉ mục không gian địa lý phân cấp hình vuông do Google tạo ra.

Đó là một thư viện ổn định hỗ trợ nhiều ngôn ngữ lập trình. Nói cách khác, họ sử dụng S2 để giới thiệu mọi người trong thời gian thực và phân chia cơ sở dữ liệu vị trí.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày

S2 chia bề mặt Trái đất thành các ô trên một lưới phẳng, tạo cho mỗi ô một mã định danh duy nhất bằng số nguyên 64 bit. Nói cách khác, một ô nhỏ đại diện cho một khu vực nhỏ của trái đất.

Họ lưu trữ những người dùng gần nhau hơn về mặt vật lý trong cùng một phân đoạn cơ sở dữ liệu. Do đó giảm nhu cầu truy vấn nhiều phân đoạn để tìm người dùng gần đó.

Và S2 có tính phân cấp. Điều đó có nghĩa là kích thước ô thay đổi từ cm vuông đến km vuông.

Ngoài ra, nó còn hỗ trợ tìm một ô cụ thể bằng cách sử dụng vĩ độ và kinh độ. Và cung cấp chức năng tìm các ô xung quanh của một ô cụ thể.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày

S2 dựa trên đường cong Hilbert. Hãy tưởng tượng đường cong Hilbert như một đường bao phủ mọi điểm trong hình vuông bằng cách gấp và lặp theo một cách đặc biệt. Trong khi hai điểm gần nhau trên đường cong Hilbert cũng gần nhau trong không gian vật lý. Điều đó có nghĩa là nó bảo tồn vị trí không gian.

Mỗi đường cong Hilbert nhỏ biểu thị một ô S2. Trong khi bốn ô liền kề tạo thành một ô lớn hơn và một phần tư biểu thị đường cong Hilbert 2D. Cây tứ giác là cấu trúc dữ liệu cây trong đó mỗi nút có chính xác bốn nút con.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày

Họ truy vấn chỉ mục vị trí (S2) để tìm người dùng ở gần. Nó trả về tất cả các phân đoạn cơ sở dữ liệu gần một vị trí cụ thể. Sau đó, họ truy vấn song song tất cả các phân đoạn cơ sở dữ liệu có liên quan để lấy danh sách người dùng trong các phân đoạn đó.

Trung bình họ truy vấn 3 phân đoạn cơ sở dữ liệu để tìm người dùng ở gần trong bán kính 160 km. Ngoài ra, họ lọc kết quả dựa trên sở thích của người dùng trước khi giới thiệu mọi người.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày

Kenji gặp một cô gái đến từ Okinawa.

Nhưng mọi chuyện không thành vì cô không hứng thú với một mối quan hệ yêu xa.

Chương 3: Okinawa đến Sydney Kenji nghĩ rằng việc kết hợp trên Tinder với ai đó ở Sydney, Úc sẽ hợp lý hơn.

Vì vậy, anh ấy sử dụng tính năng của Tinder có tên Passport để thay đổi vị trí của mình.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày

Thay đổi vị trí người dùng

Họ cập nhật chỉ mục về những thay đổi vị trí của người dùng. Vì vậy, mọi người từ vị trí mới có thể nhìn thấy người dùng. Nói cách khác, họ thêm người dùng vào chỉ mục vị trí mới và xóa người dùng khỏi chỉ mục cũ.

Tuy nhiên, những hoạt động này không mang tính nguyên tử nên có nguy cơ thất bại.

Cho đến một ngày Kenji cập nhật hồ sơ sang vị trí mới. Và ngay lập tức thay đổi trở lại vị trí ban đầu. Nhưng dữ liệu người dùng của anh ấy vẫn trỏ đến vị trí mới vì các thao tác không được thực hiện theo cùng một thứ tự.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Vấn đề không có đơn đặt hàng được đảm bảo

Vì vậy họ sử dụng Apache Kafka để giải quyết vấn đề này. Hãy coi Kafka như một nền tảng phát trực tuyến phân tán để xử lý dữ liệu quy mô lớn.

Họ đã gửi cùng một dữ liệu người dùng đến cùng một phân vùng Kafka. Trong khi người tiêu dùng Kafka lấy khóa trên các phân vùng để tránh tranh chấp. Do đó, cung cấp việc triển khai hàng đợi FIFO với sự đảm bảo về thứ tự và thông lượng rất cao.

Ngoài ra, họ còn kiểm tra điểm Kafka để quá trình xử lý có thể tiếp tục sau khi xảy ra sự cố quy trình.

Chương 4: Zoe và Kenji Kenji liên tục lướt trên Tinder.

Và ngày tháng trôi qua.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Phù hợp với người dùng

Họ gửi các thao tác vuốt tới luồng dữ liệu như Amazon Kinesis. Và chạy nhân viên so khớp để đọc luồng dữ liệu và kiểm tra xem có kết quả trùng khớp từ bộ nhớ đệm Lượt thích hay không.

Trong khi bộ đệm Thích lưu trữ thông tin về những người mà người dùng đã thích.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Thông báo cho người dùng về trận đấu

Họ sử dụng WebSockets để thông báo cho người dùng nếu có sự trùng khớp. Do đó mang lại trải nghiệm thời gian thực. WebSockets là một giao thức truyền thông hai chiều, thời gian thực.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Lưu trữ hồ sơ mà người dùng không thích

Họ đưa những hồ sơ không thích của một người vào kho lưu trữ dữ liệu như Amazon S3. Và sử dụng thông tin đó để phân tích dữ liệu nhằm cải thiện đề xuất của người dùng.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Cho đến một ngày. Kenji sánh đôi với Zoe.

Một quý cô đến từ Sydney.

Chương 5: Vấn đề là kim chỉ nam Họ tính toán số lượng người dùng duy nhất để tìm tải trên một phân đoạn. Và người dùng trong phân đoạn thường ở cùng múi giờ.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Mô hình lưu lượng truy cập của hai mảnh khác nhau

Sự cố phân đoạn nóng có thể sẽ xảy ra do chênh lệch múi giờ. Điều đó có nghĩa là lưu lượng truy cập cao điểm sẽ khác nhau giữa các địa điểm do chênh lệch về thời gian. Và gây ra lưu lượng truy cập không cân bằng trên các phân đoạn.

Tuy nhiên, một phân đoạn duy nhất trong máy chủ vật lý sẽ khiến tình hình trở nên tồi tệ hơn. Vì vậy, họ chỉ định ngẫu nhiên nhiều phân đoạn cho cùng một máy chủ vật lý để ngăn chặn sự cố phân đoạn nóng.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Bộ nhớ đệm để tránh vấn đề phân đoạn nóng

Ngoài ra hầu hết các thao tác dữ liệu tại Tinder đều là thao tác đọc. Vì vậy, họ sử dụng bộ đệm Redis để mở rộng quy mô.

Họ sử dụng mô hình dành riêng cho bộ đệm. Nói cách khác, họ kiểm tra bộ đệm để tìm dữ liệu. Và nếu nó vắng mặt, chúng sẽ quay trở lại cơ sở dữ liệu. Ngoài ra bộ đệm được cập nhật với dữ liệu.

Vì vậy, lớp bộ đệm sẽ giải quyết được vấn đề phân đoạn nóng khi đọc. Trong khi họ thực hiện giới hạn tốc độ để xử lý vấn đề phân đoạn ghi nóng.

Ngoài ra, họ còn thực hiện phản hồi theo cấp số nhân với độ giật khi xảy ra lỗi. Và chạy công việc nền định kỳ để đồng bộ hóa kho dữ liệu.

Tinder vẫn là một trong những nền tảng hẹn hò lớn nhất. Và xử lý khoảng 26 triệu trận đấu mỗi ngày.

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày Trong khi Kenji và Zoe sống hạnh phúc mãi mãi.

"

Cách Tinder tăng quy mô lên 1,6 tỷ lượt vuốt mỗi ngày

TÁC GIẢ

Về ABN Asia: Ai Base Network (ABN), ABN Asia được thành lập từ năm 2012, là một công ty xuất phát từ học thuật, do những giảng viên, cựu du học sinh Hungary, Hà Lan, Nga, Đức, và Nhật Bản sáng lập. Chúng tôi chia sẻ đam mê chung và tầm nhìn vững chắc về công nghệ, mang đến sự đổi mới và chất lượng đỉnh cao cho khách hàng. Phương châm của chúng tôi là: Tốt hơn. Nhanh hơn. An toàn hơn. Trong nhiều trường hợp: Rẻ hơn.

Hãy liên hệ với chúng tôi khi Quý doanh nghiệp có các nhu cầu về dịch vụ công nghệ thông tin, tư vấn chuyển đổi số, tìm kiếm các giải pháp phần mềm phù hợp, hoặc nếu Quý doanh nghiệp có đấu thầu CNTT (RFP) để chúng tôi tham dự. Quý doanh nghiệp có thể liên hệ với chúng tôi qua địa chỉ email [email protected]. Chúng tôi sẵn lòng hỗ trợ với mọi nhu cầu công nghệ của Quý doanh nghiệp.

ABNAsia.org

© ABN ASIA