Backend của Meta Threads được xây dựng bằng Python 3.10
(twitter.com/llanga)"Bạn có biết backend của #MetaThreads được xây dựng bằng #Python 3.10 không?
Nó đang chạy trên bản fork #Cinder của Instagram, trong đó có nhiều tính năng thú vị khác với Python 3.10 thông thường, như trình biên dịch JIT, module tải lười, module tĩnh được biên dịch sẵn, v.v."
1 bình luận
Ý kiến trên Hacker News
Khá mỉa mai đối với phe cho rằng “Python không đủ nhanh cho backend production”. Vì chính công ty đó đã vận hành mạng xã hội quy mô lớn nhất được xây bằng PHP + MySQL
Máy ảo thực hiện JIT cũng hoàn toàn viết bằng C++, và bản phân phối MySQL của họ cũng là một fork nội bộ được chỉnh sửa mạnh để mở rộng quy mô. Trong đó có tách lưu trữ/tính toán, sharding, engine lưu trữ dựa trên RocksDB thay cho InnoDB, Raft cho sao chép đồng bộ, v.v.
Đã có rất nhiều kỹ thuật xuất sắc được đầu tư để làm cho hạ tầng backend có khả năng mở rộng
Tài liệu đáng tham khảo:
[1] https://engineering.fb.com/2016/08/31/core-data/myrocks-a-sp...
[2] https://research.facebook.com/file/529018501538081/hhvm-jit-...
[3] https://research.facebook.com/file/700800348487709/HHVM_ICPE...
Có thể hình dung như các helper kiểu functional, thực thi bất đồng bộ trên hàng nghìn core, spanning tree xuyên qua các datacenter bằng SSH. Nói thêm, khá nhiều thứ hay ho tôi từng dùng là do Evan Priestley tạo ra; anh ấy cũng tạo ra Phabricator và nhiều hệ thống mạnh mẽ khác
“Nó chạy trên fork Cinder của Instagram, bao gồm JIT, module lazy-loading, module tĩnh được biên dịch trước và nhiều thay đổi thú vị so với Python 3.10 nguyên bản”
Đó là nội dung trong tweet
Cá nhân tôi không quan tâm mọi người dùng ngôn ngữ nào. Ai cũng biết nếu có tiền thì cứ thêm server là được. Chỉ là cho đến khi CFO và CTO, lấy lý do suy thoái, chọn “cắt giảm chi phí” làm ưu tiên lớn tiếp theo
Thật ngạc nhiên là đến năm 2023 người ta vẫn tranh luận về “mức độ sẵn sàng cho production” của các ngôn ngữ lập trình chủ đạo. Cứ như một cuộc thi xem ai là “đứa ngầu” vậy
Những phần thực sự cần nhiều hiệu năng nằm ở nhiều dịch vụ tổng hợp và gợi ý dựa trên C++. Nhưng webserver thì đúng là Django
Vì sao lại dùng Django? Tôi từng dùng trong dự án nhỏ, nhưng nó không nhanh lắm và tôi nghĩ không hợp với một ứng dụng lớn như thế này. Muốn biết ưu và nhược điểm
Vì sao không làm bằng C++ hoặc Rust? Dù các phần nặng được viết bằng ngôn ngữ biên dịch, Python không giới hạn tốc độ phản hồi sao? Có thể là câu hỏi ngây thơ của người nghiệp dư
“Nó đang chạy trên fork Cinder của Instagram, bao gồm JIT, module lazy-loading, module tĩnh được biên dịch trước và nhiều thay đổi thú vị so với Python 3.10 nguyên bản”
Vậy nên không hoàn toàn chỉ là Python 3.10 đơn thuần
Tôi không biết Facebook có muốn tiếp tục duy trì fork hay không, nhưng phía CPython sẵn sàng merge các tính năng như vậy nếu chúng hợp lý
Thật mỉa mai khi bài viết về backend của Threads lại được đăng trên Twitter
Hiểu chứ? Threads, threading…? Được rồi, tôi tự đi ra
Ngay cả nếu đó là bài đăng Threads thì cũng không thể submit lên HN được
Hiện vẫn chưa mở cho web. Nghe nói rồi sẽ mở vào một ngày nào đó
Rõ ràng backend có chồng lấn ở một mức độ nào đó. https://www.threads.net/t/C là bài đăng Instagram đầu tiên, nhưng cũng hiện trên Threads và có đúng cùng số lượt thích như trên Instagram
Tuy nhiên https://www.threads.net/@kevin lại hiển thị là không có thread nào
Python chỉ là web server thôi. Các thành phần thực sự nhạy cảm về hiệu năng như edge proxy, load balancer, dịch vụ backend, cơ sở dữ liệu, cache và dịch vụ lưu trữ phần lớn đều là C++
Tôi đã làm việc với Cinder và web server. Nếu có câu hỏi kỹ thuật thì tôi có thể trả lời :)
Nhưng ở đây độ trễ là vấn đề lớn, và như thường lệ, để đạt MVP thì ưu tiên tối ưu hóa bị hạ xuống
Vì vậy tôi muốn biết liệu Cinder có thể dùng để tối ưu streaming dữ liệu thời gian thực không, hay bản thân câu hỏi này đã cho thấy tôi không hiểu đúng use case
Nhân tiện, chúng tôi cũng dùng Django, và giờ nhìn lại tôi cũng tự hỏi lẽ ra có nên chuyển sang FastAPI không. Đó là một câu hỏi riêng
Tôi muốn biết chi tiết hơn về rollout. Mỗi giờ đang có hơn rất nhiều 1 triệu người dùng mới được thêm vào, khá là khủng
Dù vậy chắc chắn vẫn có nhiều chi tiết thú vị đáng nghe
Vài triệu người dùng mới thậm chí còn chưa tới 0,1% tổng số. Vẫn nằm trong biên độ dao động hoàn toàn có thể dự đoán
https://github.com/twitter/the-algorithm/pull/447 là thứ tuyệt đối không nên quên
Threads tái sử dụng backend/API của Instagram. Instagram ngay từ đầu đã dựa trên Python, nên Threads cũng dùng Python
Điều đó không có nghĩa là khi xây một ứng dụng mới như thế này, bạn nên chọn Python trong bối cảnh đã có các lựa chọn thay thế không cần fork nội bộ. Đọc toàn bài thì khá dễ hiểu, nhưng có lẽ UI “chỉ xem tiêu đề” của Hacker News đang làm méo mó vấn đề