Để quản lý và vận hành một trang web
lớn như vậy chắc chắn không phải là một việc đơn giản. Trong bài viết
này, chúng tôi sẽ giúp các bạn có cái nhìn tổng quan về những công nghệ
đang được Facebook sử dụng.
Trước tiên, chúng ta sẽ tìm hiểu về tình hình thực tế hiện nay của Facebook.
- Mỗi tháng có khoảng 630 tỉ lượt page views. (Theo Google Ad Planner)
- Số ảnh có trên Facebook nhiều hơn tất cả các trang chia sẻ ảnh gộp lại. (Bao gồm cả những trang lớn như Flickr)
- Hơn 3 tỉ bức ảnh được tải lên Facebook hàng tháng, trung bình có 1,2 triệu bức ảnh mỗi giây (Không tính những bức ảnh thông qua hệ thống CDN của Facebook)
- Hơn 25 tỉ dữ liệu về thông tin (status, comment...v.v) được chia sẻ mỗi tháng.
- Facebook có hơn 30.000 máy chủ. (Đây là số liệu thông kê cách đây 1 năm)
Những phần mềm và công nghệ đang được Facebook sử dụng:
Về cơ bản, Facebook hoạt động dựa trên
nền tảng LAMP (Linux, Apache, MySQL và PHP) nhưng chúng đều được thay
đổi, chỉnh sửa rất nhiều để phù hợp với nhu cầu riêng của mạng xã hội,
với những công nghệ chủ yếu sau:
Memcached
Memcached là
một hệ thống cache mà hầu hết các trang web lớn trên thế giới như:
Youtube, Wikipedia, Flickr, Twitter... sử dụng. Không khó hiểu khi nó
được Facebook sử dụng cho hệ thống của mình.
Facebook chạy hàng nghìn máy chủ Memcached với dung lượng dữ liệu cache
là 10 terabytes tại bất kì thời điểm nào. Đây có thể coi là hệ thống
Memcache lớn nhất thế giới.
HipHop cho PHP
PHP là một dạng ngôn ngữ lập trình
kịch bản, do đó tốc độ của nó khá chậm so với các ngôn ngữ có thể chạy
trực tiếp trên máy chủ.
HipHop sẽ
chuyển mã PHP sang thành mã C++ nhờ đó có thể được biên dịch để đạt tốc
độ cao hơn. Điều này giúp Facebook tận dụng tốt hơn sức mạnh của máy
chủ do Facebook chủ yếu dùng PHP.
Nhóm kĩ sư của Facebook (gồm 3 người) đã mất 18 tháng để phát triển HipHop và giờ nó đã thành một sản phẩm hoàn thiện.
Haystack
Haystack là
hệ thống lưu trữ và quản lý ảnh tốc độ cao của Facebook (nói một cách
chính xác là hệ thống lưu trữ đối tượng, đối tượng không nhất thiết phải
là ảnh).
Facebook đang lưu trữ hơn 20 tỉ bức ảnh và mỗi tháng lại có thêm 3 tỉ
bức ảnh mới được tải lên. Mỗi bức ảnh được lưu dưới 4 độ phân giải khác
nhau. Như vậy tổng cộng Facebook có hơn 80 tỉ bức ảnh. Hơn nữa, có tới
1.2 triệu bức ảnh cần phải xử lý mỗi giây. Chính vì vậy, hệ thống quản
lý này không chỉ giúp xử lý đơn thuần mà còn giúp tăng tốc độ xử lý dữ
liệu cho Facebook.
BigPipe
BigPipe cũng
là một hệ thống do Facebook phát triển. Facebook dùng hệ thống này để
xử lý mỗi trang web theo từng phần nhỏ một (hay còn gọi là theo luồng)
nhằm mục đích tăng tốc độ cho người dùng.
Ví dụ, cửa sổ chat hoàn toán tách biệt với mục feed. Điều này không chỉ
giúp tăng tốc độ tải trang mà còn có tác dụng hạn chế sự cố xảy ra đồng
thời.
Cassandra
Cassandra là hệ thống lưu trữ dữ liệu được Facebook sử dụng cho tính năng tìm kiếm trong Inbox.
Đây là một phần mềm nguồn mở (hiện tại đang là một dự án của Apache) được rất nhiều trang web lớn sử dụng.
Varnish
Varnish là
trình tăng tốc HTTP hoạt động như một load balancer (bộ phân tải) và hệ
thống cache nội dung giúp tốc độ tải trang là nhanh nhất.
Facebook sử dụng Varnish để xử lý ảnh thông thường và các ảnh trong
profile người dùng. Nó có thể xử lý hàng tỉ requests (yêu cầu) trong một
ngày. Tương tự các phần mềm khác được Facebook sử dụng, Varnish cũng là
một phần mềm nguồn mở.
Kết luận
Với một mạng xã hội có quy mô khổng lồ
như Facebook, việc hệ thống chạy nhanh và ổn định không chỉ đơn giản là
việc sử dụng công nghệ tiên tiến mà còn phải phụ thuộc vào rất nhiều
yếu tố khác. Với việc sử dụng phần mềm nguồn mở, Facebook đã đóng góp
không ít cho sự phát triển của cộng đồng.