Bí quyết của Facebook để quản lý hàng triệu dòng mã nguồn mỗi ngày

Bí quyết của Facebook để quản lý hàng triệu dòng mã nguồn mỗi ngày

15-01-2014
Tin tức công nghệ
4721

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ọ.

   
Hỗ trợ 24x7x365
0225-710-6-222 : Tel
0936-247-365 : Hotline

Giới thiệu về chúng tôi

  • Hoster Việt Nam
  • Văn Phòng: Tầng 4 tòa nhà Hatradimex, 22 Lý Tự Trọng, phường Minh Khai, quận Hồng Bàng, TP Hải Phòng
  • Trụ Sở: 162 Hai Bà Trưng, phường An Biên, quận Lê Chân, thành phố Hải Phòng
  • Điện Thoại: 0225.710.6.222 / 0936.247.365
  • Email: [email protected]