Ghi chú về kiến trúc của Github Page
Architecture
10
github
19
White

Bùi Hồng Hà viết ngày 03/06/2015

alt text

Github vừa công khai kiến trúc của github pages. Một điểm mà cá nhân mình thấy thú vị là sự đơn giản trong kiến trúc của họ. Mình luôn nghĩ github page nói riêng và github nói chung phải phức tạp hơn và có số lượng máy chủ nhiều hơn nhiều.

Về cơ bản github cũng phục vụ page bằng nginx đặt sau HAProxy. Mình chưa dùng HAProxy bao giờ nên không hiểu lắm mặt hiệu năng của middleware này, tuy nhiên về mặt vận hành, đặt nginx sau Haproxy sẽ giúp rolling-update nginx dễ dàng hơn. Cụ thể mỗi nginx server khi cần update sẽ được cắt khỏi dịch vụ từ layer của haproxy để cập nhật và khởi động. Ngoài ra cá nhân mình phỏng đoán, haproxy còn làm nhiệm vụ L7 balancer đến các dịch vụ khác của github.

Một điểm thú vị thứ 2 mà lần đầu tiên mình biết đấy là dùng lua để truy vấn MySQL cho page động. Việc này biến nginx thành một load balancer level 2 (level 1 là haproxy). Có vẻ nắm được lua và tương tác giữa lua và nginx là một bước không thể thiếu trong tìm hiểu nginx.

Điều thú vị cuối cùng là Fileservers của github pages chỉ có 2 máy chạy ở Active-standby mode và đồng bộ file sử dụng DRBD. DRBD có vẻ là một middleware đứng giữa buffer cache của đĩa cứng và filesystem. Điều này giúp DRBD có thể chạy tốt với LVM! Mỗi cú flush dữ liệu sẽ đi đến 2 chỗ: buffer đĩa cứng và DRBD (rồi theo đó đến NIC và máy còn lại). DRBD có vẻ có điểm tương đồng với RAID-1. Tuy vậy một nhược điểm của DRBD theo mình nhận thấy là nó chỉ cho phép chia sẻ dữ liệu giữa 2 máy. Khi bạn cần chia dữ liệu cho nhiều máy hơn và không đòi hỏi hiệu năng quá cao: GlusterFS có vẻ là lựa chọn hợp lý hơn. Việc GithubPage sử dụng 2 máy chủ và DRBD chứng tỏ phần lớn dữ liệu đều được trả về từ cache (nginx, CDN) và rất hiếm khi page trả về từ FileServer.

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Bùi Hồng Hà

59 bài viết.
333 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
94 8
Bài viết tổng hợp cơ chế hoạt động của https Chút ít về chữ ký điện tử Chữ ký điện tử là cơ chế bao gồm 3 thuật toán: Thuật toán chọn một khóa...
Bùi Hồng Hà viết 7 năm trước
94 8
White
51 7
Giới thiệu Gần đây thấy bản thân chém gió rất nhiều về MapReduce, Hadoop v.v nhưng chưa thấy có bài viết nào tổng hợp + giải thích cụ thể về MapRe...
Bùi Hồng Hà viết hơn 6 năm trước
51 7
White
40 0
Giới thiệu Google là một công ty dẫn đầu về phần mềm xử lý Big Data. Hầu hết các phần mềm xử lý dữ liệu như Hadoop đều có nguồn gốc ý tưởng từ Goo...
Bùi Hồng Hà viết hơn 6 năm trước
40 0
Bài viết liên quan
White
19 2
Trờ lại trong một bài viết mới, tạm gác lại những series để viết về những câu chuyện bên lề xoay quanh cuộc đời coding, hôm nay tôi sẽ chia sẻ với ...
Hoàng Nguyễn viết hơn 5 năm trước
19 2
White
8 0
Khi có một pull request trên Github mà tôi muốn lấy về thử xem sao thì Github có hướng dẫn là: bash $ git fetch origin pull/ID/head:BRANCHNAME $...
Neo viết gần 7 năm trước
8 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
59 bài viết.
333 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!