Bí quyết của Facebook để quản lý hàng triệu dòng mã nguồn mỗi ngày
Không có điều gì là bí mật. Sau khi xử lý PHP để chạy nhanh hơn, Facebook hoạt động theo hệ thống kiểm soát mã nguồn Mercurial
Những gì bạn muốn về Facebook như là một mạng xã hội, nhưng nó là một trường hợp nghiên cứu hấp dẫn trong lĩnh vực thiết kế hệ thống và lập trình.
Trong khoảng thời gian này, vấn đề không phải là tốc độ của bộ máy PHP được sử dụng để xây dựng các trang Facebook. (Giải pháp của công ty cho vấn đề này - máy ảo HipHop PHP - đã đủ hấp dẫn đến ngay cả những người sáng tạo ra PHP cũng rất khen ngợi.) Thay vào đó, đội ngũ của Facebook đang xử lý một vấn đề thậm chí còn cơ bản hơn: làm thế nào để quản lý cơ sở mã nguồn khổng lồ để duy trì hệ thống, với ước tính khoảng 60 triệu dòng mã nguồn.
Giải pháp, được phác thảo một bài viết trên blog của Durham Goode và Siddharth Agarwal, là lựa chọn hệ thống kiểm soát mã nguồn Mercurial và cải tiến có chọn lọc. Năm ngoái, công ty đã nghiên cứu để thay đổi Git - sự lựa chọn cho việc kiểm soát mã nguồn vào thời điểm đó - nhưng sau đó tuyên bố rằng "sau nhiều lần cân nhắc, chúng tôi kết luận rằng Git sẽ rất khó làm việc với một dự án đầy tham vọng". Với họ, Mercurial là giải pháp "mở rộng vô cùng", và những thay đổi mà công ty đã tham gia xây dựng một số phần mở rộng đã được cung cấp như các sản phầm mã nguồn mở.
Những thay đổi đó như:
Cho phép Mercurial chỉ làm việc với các tập tin đã thay đổi. Dịch vụ giám sát tập tin Watchman riêng của Facebook (được công bố mã nguồn mở đầu năm nay ) được sử dụng để thực hiện việc này, với Mercurial trải nghiệm sự gia tăng tốc độ gấp năm lần khi xử lý những thay đổi trạng thái tập tin.
Viết lại một số phần mã nguồn gốc của Mercurial cho vấn đề tốc độ. Mercurial được viết bằng Python, nhưng nó có một số phần mã nguồn cấp thấp được viết bằng C cho vấn đề tốc độ. Các kỹ sư của Facebook đã thêm mã nguồn C để xử lý một số trường hợp lặp chặt chẽ, một trường hợp sử dụng phổ biến cho việc lập trình C trên Python khi có thể.
Thay đổi cách thức nhân bản và các hoạt động kéo thả. Thay vì tải tất cả các tập tin trên một bản sao hay hoạt động kéo thả, phiên bản sửa đổi của Facebook, qua chức năng mở rộng remotefilelog cho Mercurial, chỉ tải về metadata cho các tập tin trong câu hỏi, sau đó tải về các tập tin khi thực sự cần thiết. Điều này không chỉ làm giảm thiểu hoạt động ổ đĩa, mà còn giảm thiểu hoạt động mạng.
Điều đó nói rằng các vấn đề của Facebook với Git đã hầu như không làm giảm giá trị của Git với phần còn lại của cộng đồng phát triển. Trở lại đầu năm ngoái, Microsoft đã tăng gấp đôi Git và đưa thêm khả năng hỗ trợ nó vào Visual Studio và Team Foundation Server. GitHub tự nó đã tạo ra tiếng tăm với liên tiếp các tính năng mới, với khả năng thể hiện trực quan thống kê dự án là gần đây nhất.
Facebook cũng đã phát hành nhiều giải pháp cải tiến khác như các sản phẩm mã nguồn mở: RocksDB (có sẵn trên GitHub ); máy ảo HipHop PHP như đã nói ở trên; công cụ truy vấn SQL Presto (kể từ khi được chấp nhận bởi các đơn vị như AirBnB và Dropbox); công cụ sắp lịch Corona cho Hadoop; Flashcache , một hệ thống nhớ đệm được thiết kế đặc biệt để làm việc với ổ đĩa flash để kéo dài tuổi thọ ổ đĩa; và nhiều sản phẩm khác nữa. Nó cũng tạo ra khuynh hướng sử dụng mã nguồn mở, từ chính ngôn ngữ PHP đến hệ thống quản lý cấu hình Chef (mà cũng đã bổ sung thêm các tiện ích). Nhưng công ty vẫn còn khá bí mật về quy mô hệ thống máy chủ của họ.
Các tin khác
- Hiệp hội an ninh mạng Quốc gia: tấn công mạng bằng mã độc tống tiền nhắm vào các tổ chức kinh tế Việt Nam đang gia tăng
- Điều chỉnh vòng đời tên miền .VN
- Các tài khoản G Suite miễn phí Google ngừng cung cấp từ tháng 7.2022
- Thay đổi thời gian hiệu lực tối đa chứng chỉ SSL từ ngày 01/09/2020
- Chuẩn mã hóa video mới giúp giảm dung lượng còn ½ so với chuẩn nhỏ nhất hiện tại (H264)
Tin tức công nghệ
Hiệp hội an ninh mạng Quốc gia: tấn công mạng bằng...
04-04-2024Điều chỉnh vòng đời tên miền .VN
26-01-2022Các tài khoản G Suite miễn phí Google ngừng cung cấp...
22-01-2022Thay đổi thời gian hiệu lực tối đa chứng chỉ...
11-07-2020Chuẩn mã hóa video mới giúp giảm dung lượng còn...
03-05-201914 quy tắc giúp tăng cường an ninh cho Magento
29-05-2017
Bài viết được quan tâm
Tại sao chọn Hoster Việt Nam?
03-09-2013Hướng dẫn thanh toán
17-08-2013Danh sách dịch vụ
02-09-2013