Một thử thách rất lớn dành cho các kỹ sư tại Facebook là phải giữ cho website hoạt động ổn định, nhẹ nhàng, và nhanh chóng cho nửa tỷ active users. Bài này sẽ điểm qua một số phần mềm, kỹ thuật được sử dụng để đạt được mục tiêu đó.
Các thách thức của Facebook
Các dữ liệu dưới đây cho bạn cái nhìn tổng quan về mức độ ổn định và hoạt động của website
* Facebook phục vụ 570 tỷ page views mỗi tháng (Google Ad Planner)
* Số lượng ảnh có trên Facebook lớn hơn tổng số lượng ảnh của tất cả các trang chia sẻ/hosting ảnh khác (bao gồm cả những site như Flickr)
* Hơn 3 tỷ ảnh được tải lên hàng tháng.
* Facebook xử lý 1.2 triệu ảnh mỗi giây.
* Hơn 25 tỷ mẩu tin/status/links/comments được chia sẻ hàng tháng.
* Facebook có hơn 30,000 servers (năm 2009).
Phần mềm sử dụng
Ở khía cạnh nào đó, ta vẫn có thể coi Facebook là LAMP, nhưng nó đã phải thay đổi, nâng cấp những chức năng, dịch vụ sẵn có ở nhiều mức độ.
Ví dụ:
* Facebook vẫn sử dụng PHP, nhưng nó đã xây dựng một compiler để có thể chuyển đổi mã nguồn thành native code chạy trên webserver -> tăng hiệu năng.
* Facebook sử dụng Linux, nhưng đã tối ưu hệ thống cho mục địch sử dụng cụ thể của site (đặc biệt là giao tiếp mạng).
* Facebook sử dụng MySQL, nhưng phần lớn lưu giữ kiểu key-value, đưa các logic trong câu lệnh join lên web servers sao cho việc tối ưu có thể được thực hiện hiệu quả nhất ở đây.
Tiếp theo đó là một loạt các hệ thống được viết và tích hợp thêm như Haystack, Scribe.
Và bây giờ ta sẽ lượt qua một số phần mềm được sử dụng bởi trang mạng xã hội lớn nhất thế giới hiện nay
Memcached
Memcached là một hệ thống bộ nhớ phân tán mà Facebook đã sử dụng như một caching layer giữa web servers và MySQL server. Facebook đã tối ưu hóa Memcached và các phần liên quan và xây dựng một hệ thống bao gồm hàng ngàn servers với hàng chục terabytes dữ liệu được cached tại mỗi thời điểm. Có thể coi đây là hệ thống Memcached lớn nhất thế giới tại thời điểm này.
HipHop
PHP bản chất là scripting language, như vậy sẽ chậm hơn so với code chạy native trên servers. Một số kỹ sư của Facebook đã dành 18 tháng để xây dựng HipHop nhằm mục đích chuyển đổi PHP sang mã nguồn của C++ , có thể biên dịch để chạy nhằm tăng hiệu năng.
Haystack
Là hệ thống lưu giữ và xử lý ảnh với hiệu năng cao của Facebook.
BigPipe
Cũng là một hệ thống do Facebook phát triển, nhằm phục vụ những trang web động, pagelet như cửa sổ chat, notification. Những pagelets này có thể được lấy & xử lý song song để đảm báo hiệu năng, giảm thiểu những rủi ro hay làm ngắt quãng hoạt động của users.
Cassandra
Là một hệ thống lưu giữ phân tán hoàn hảo, sử dụng những lý thuyết truy xuất của NoSQL.
Scribe
Là hệ thống logging linh hoạt được Facebook sử dụng cho nhiều mục đích khác nhau.
Hadoop and Hive
Mã nguồn mở và có vai trò tiên quyết trong việc xử lý các phép tính với lượng dữ liệu khổng lồ. Facebook sử dụng cho việc phân tích dữ liệu. Ngoài ra, Yahoo & Twitter cũng sử dụng hệ thống này.
Thrift
Facebook sử dụng những ngôn ngữ khác nhau cho từng services của họ. PHP cho front-end, Erlang cho Chat, Java và C++ cũng được sử dụng ở nhiều nơi. Như vậy, Thrift là cross-language platform được phát triển để kết hợp chặt chẽ các ngôn ngữ lập trình lại với nhau, làm cho chúng có thể giao tiếp được.
Varnish
Là hệ thống tăng tốc trong giao thức HTTP, hoạt động giống như load-balancer và cũng có khả năng cache nội dung để giảm tải truy xuất. Varnish được sử dụng rộng rãi trong việc quản lý ảnh, profile và xử lý hàng tỷ requests mỗi ngày.
Những thứ cũng quan trọng khác
Phần trên thì chúng ta đã điểm qua một số software đã giúp Facebook đạt được sử ổn định và hiệu năng cao. Tuy nhiên, quản lý một hệ thống lớn và phức tạp cần nhiều hơn thế. Dưới đây là một số yếu tố khác
Thường xuyên release, nhưng vẫn có độ trễ
Facebook vẫn hàng ngày cập nhật, nâng cấp những tính năng của mình, họ sử dụng hệ thống gọi là Gatekeeper cho phép chạy những phiên bản mã nguồn khác nhau cho những nhóm users khác nhau. Như vậy, những chức năng sẽ được active từ từ trước khi được sử dụng phổ biến.
Quản lý hệ thống rất tốt
Facebook theo dõi, chăm chút hệ thống của họ vô cùng cẩn trọng, đến từng PHP function. Họ sử dụng XHProf cho việc này.
Tạm thời vô hiệu hóa một số chức năng để tăng hiệu năng
Nếu có vấn đề với hiệu năng, Facebook sẽ có những mức độ xử lý khác nhau bao gồm vô hiệu hóa các chức năng ít quan trọng để tăng hiệu năng trong những core features.
Những thông tin khác
Đây có thể coi là thông tin ít được public từ Facebook. Tất nhiên là họ có sử dụng CDN để xử lý static content, hay một trung tâm dữ liệu lớn với nhiều servers.
Ngoài ra, hàng chục phần mềm khác đang được sử dụng mà chúng ta chưa đề cập đến trong bài này.
Facebook ứng dụng mã nguồn mỡ mạnh mẽ
Hầu hết các software đều là mã nguồn mở, từ những software đã tồn tại cho đến những hệ thống do Facebook viết ra. Danh sách các software mã nguồn mở của Facebook có thể tìm ở Facebook’s Open Source page
Những thử thách lớn hơn
Facebook vẫn đang phát triển rất nhanh với hơn 100 triệu users mỗi 6 tháng, đội ngũ Facebook cũng ngày càng mở rộng để có thể xử lý những vấn đề đó.
Sự phát triển nhanh cũng đồng nghĩa với việc Facebook phải đối mặt với hàng loạt vấn đề về hiệu năng, bảo mật. Các kỹ sư ở đó hẳn có rất nhiều việc để làm.
Tham khảo
Bài viết gốc bằng tiếng Anh http://royal.pingdom.com/2010/06/18/...ehind-facebook
Trang web liệt kê các phần mềm mã mở của Facebook http://facebook.comopensource
Blog của các kỹ sư Facebook http://facebook.com/eblog
Các bài presentation của các kỹ sư Facebook http://www.infoq.com/presentations/Scale-at-Facebook
Nguồn http://i-php.net
Các thách thức của Facebook
Các dữ liệu dưới đây cho bạn cái nhìn tổng quan về mức độ ổn định và hoạt động của website
* Facebook phục vụ 570 tỷ page views mỗi tháng (Google Ad Planner)
* Số lượng ảnh có trên Facebook lớn hơn tổng số lượng ảnh của tất cả các trang chia sẻ/hosting ảnh khác (bao gồm cả những site như Flickr)
* Hơn 3 tỷ ảnh được tải lên hàng tháng.
* Facebook xử lý 1.2 triệu ảnh mỗi giây.
* Hơn 25 tỷ mẩu tin/status/links/comments được chia sẻ hàng tháng.
* Facebook có hơn 30,000 servers (năm 2009).
Phần mềm sử dụng
Ở khía cạnh nào đó, ta vẫn có thể coi Facebook là LAMP, nhưng nó đã phải thay đổi, nâng cấp những chức năng, dịch vụ sẵn có ở nhiều mức độ.
Ví dụ:
* Facebook vẫn sử dụng PHP, nhưng nó đã xây dựng một compiler để có thể chuyển đổi mã nguồn thành native code chạy trên webserver -> tăng hiệu năng.
* Facebook sử dụng Linux, nhưng đã tối ưu hệ thống cho mục địch sử dụng cụ thể của site (đặc biệt là giao tiếp mạng).
* Facebook sử dụng MySQL, nhưng phần lớn lưu giữ kiểu key-value, đưa các logic trong câu lệnh join lên web servers sao cho việc tối ưu có thể được thực hiện hiệu quả nhất ở đây.
Tiếp theo đó là một loạt các hệ thống được viết và tích hợp thêm như Haystack, Scribe.
Và bây giờ ta sẽ lượt qua một số phần mềm được sử dụng bởi trang mạng xã hội lớn nhất thế giới hiện nay
Memcached
Memcached là một hệ thống bộ nhớ phân tán mà Facebook đã sử dụng như một caching layer giữa web servers và MySQL server. Facebook đã tối ưu hóa Memcached và các phần liên quan và xây dựng một hệ thống bao gồm hàng ngàn servers với hàng chục terabytes dữ liệu được cached tại mỗi thời điểm. Có thể coi đây là hệ thống Memcached lớn nhất thế giới tại thời điểm này.
HipHop
PHP bản chất là scripting language, như vậy sẽ chậm hơn so với code chạy native trên servers. Một số kỹ sư của Facebook đã dành 18 tháng để xây dựng HipHop nhằm mục đích chuyển đổi PHP sang mã nguồn của C++ , có thể biên dịch để chạy nhằm tăng hiệu năng.
Haystack
Là hệ thống lưu giữ và xử lý ảnh với hiệu năng cao của Facebook.
BigPipe
Cũng là một hệ thống do Facebook phát triển, nhằm phục vụ những trang web động, pagelet như cửa sổ chat, notification. Những pagelets này có thể được lấy & xử lý song song để đảm báo hiệu năng, giảm thiểu những rủi ro hay làm ngắt quãng hoạt động của users.
Cassandra
Là một hệ thống lưu giữ phân tán hoàn hảo, sử dụng những lý thuyết truy xuất của NoSQL.
Scribe
Là hệ thống logging linh hoạt được Facebook sử dụng cho nhiều mục đích khác nhau.
Hadoop and Hive
Mã nguồn mở và có vai trò tiên quyết trong việc xử lý các phép tính với lượng dữ liệu khổng lồ. Facebook sử dụng cho việc phân tích dữ liệu. Ngoài ra, Yahoo & Twitter cũng sử dụng hệ thống này.
Thrift
Facebook sử dụng những ngôn ngữ khác nhau cho từng services của họ. PHP cho front-end, Erlang cho Chat, Java và C++ cũng được sử dụng ở nhiều nơi. Như vậy, Thrift là cross-language platform được phát triển để kết hợp chặt chẽ các ngôn ngữ lập trình lại với nhau, làm cho chúng có thể giao tiếp được.
Varnish
Là hệ thống tăng tốc trong giao thức HTTP, hoạt động giống như load-balancer và cũng có khả năng cache nội dung để giảm tải truy xuất. Varnish được sử dụng rộng rãi trong việc quản lý ảnh, profile và xử lý hàng tỷ requests mỗi ngày.
Những thứ cũng quan trọng khác
Phần trên thì chúng ta đã điểm qua một số software đã giúp Facebook đạt được sử ổn định và hiệu năng cao. Tuy nhiên, quản lý một hệ thống lớn và phức tạp cần nhiều hơn thế. Dưới đây là một số yếu tố khác
Thường xuyên release, nhưng vẫn có độ trễ
Facebook vẫn hàng ngày cập nhật, nâng cấp những tính năng của mình, họ sử dụng hệ thống gọi là Gatekeeper cho phép chạy những phiên bản mã nguồn khác nhau cho những nhóm users khác nhau. Như vậy, những chức năng sẽ được active từ từ trước khi được sử dụng phổ biến.
Quản lý hệ thống rất tốt
Facebook theo dõi, chăm chút hệ thống của họ vô cùng cẩn trọng, đến từng PHP function. Họ sử dụng XHProf cho việc này.
Tạm thời vô hiệu hóa một số chức năng để tăng hiệu năng
Nếu có vấn đề với hiệu năng, Facebook sẽ có những mức độ xử lý khác nhau bao gồm vô hiệu hóa các chức năng ít quan trọng để tăng hiệu năng trong những core features.
Những thông tin khác
Đây có thể coi là thông tin ít được public từ Facebook. Tất nhiên là họ có sử dụng CDN để xử lý static content, hay một trung tâm dữ liệu lớn với nhiều servers.
Ngoài ra, hàng chục phần mềm khác đang được sử dụng mà chúng ta chưa đề cập đến trong bài này.
Facebook ứng dụng mã nguồn mỡ mạnh mẽ
Hầu hết các software đều là mã nguồn mở, từ những software đã tồn tại cho đến những hệ thống do Facebook viết ra. Danh sách các software mã nguồn mở của Facebook có thể tìm ở Facebook’s Open Source page
Những thử thách lớn hơn
Facebook vẫn đang phát triển rất nhanh với hơn 100 triệu users mỗi 6 tháng, đội ngũ Facebook cũng ngày càng mở rộng để có thể xử lý những vấn đề đó.
Sự phát triển nhanh cũng đồng nghĩa với việc Facebook phải đối mặt với hàng loạt vấn đề về hiệu năng, bảo mật. Các kỹ sư ở đó hẳn có rất nhiều việc để làm.
Tham khảo
Bài viết gốc bằng tiếng Anh http://royal.pingdom.com/2010/06/18/...ehind-facebook
Trang web liệt kê các phần mềm mã mở của Facebook http://facebook.comopensource
Blog của các kỹ sư Facebook http://facebook.com/eblog
Các bài presentation của các kỹ sư Facebook http://www.infoq.com/presentations/Scale-at-Facebook
Nguồn http://i-php.net