Kiến trúc hệ thốngCác mẫu sẵn sàng (Availability Patterns)

Các mẫu sẵn sàng (Availability Patterns)

Nội dung bài

Các mẫu sẵn sàng (Availability Patterns)

Đánh đổi12 phút đọcThe System Design Primer - mục "Availability patterns"

Mục lục
  1. Nội dung gốc
  2. Ghi chú của người dịch

Các mẫu sẵn sàng (Availability Patterns)

Nội dung gốc

Có hai mẫu bổ trợ cho nhau để đạt tính sẵn sàng cao: chuyển đổi dự phòng (fail-over) và nhân bản (replication).

Chuyển đổi dự phòng (Fail-over)

Chủ động - bị động (Active-passive)

Với kiểu chủ động - bị động, các nhịp tim (heartbeat) được gửi qua lại giữa máy chủ đang hoạt động và máy chủ dự phòng đang chờ. Nếu nhịp tim bị gián đoạn, máy chủ bị động sẽ tiếp quản địa chỉ IP của máy chủ chủ động và tiếp tục phục vụ.

Độ dài thời gian ngừng hoạt động phụ thuộc vào việc máy chủ bị động đang chạy sẵn ở chế độ chờ "nóng" (hot standby) hay phải khởi động từ chế độ chờ "nguội" (cold standby). Chỉ máy chủ chủ động xử lý lưu lượng.

Chuyển đổi dự phòng chủ động - bị động còn được gọi là chuyển đổi dự phòng master-slave.

Chủ động - chủ động (Active-active)

Ở kiểu chủ động - chủ động, cả hai máy chủ cùng xử lý lưu lượng, chia tải cho nhau.

Nếu các máy chủ phục vụ công khai ra ngoài, DNS cần biết địa chỉ IP công khai của cả hai. Nếu chúng phục vụ nội bộ, logic ứng dụng cần biết cả hai máy chủ.

Chuyển đổi dự phòng chủ động - chủ động còn được gọi là chuyển đổi dự phòng master-master.

Chuyển đổi dự phòng chủ động-bị động so với chủ động-chủ động Chủ động - bị động Client Chủ động Bị động (chờ) nhịp tim Chủ động - chủ động Client Server A Server B cả hai cùng phục vụ
Active-passive: chỉ bên chủ động phục vụ, bên bị động chờ qua nhịp tim. Active-active: cả hai bên cùng phục vụ, chia tải thật sự.

Nhược điểm: chuyển đổi dự phòng

Nhân bản (Replication)

Master-slave và master-master

Chủ đề này được bàn kỹ hơn ở mục Cơ sở dữ liệu:

Tính sẵn sàng biểu diễn bằng số

Tính sẵn sàng thường được lượng hóa bằng thời gian hoạt động (uptime, hoặc downtime) tính theo phần trăm thời gian dịch vụ khả dụng. Người ta thường đo tính sẵn sàng bằng số chữ số 9: một dịch vụ có tính sẵn sàng 99,99% được mô tả là có "bốn số 9".

Sẵn sàng 99,9% - ba số 9

Khoảng thời gianThời gian chết chấp nhận được
Mỗi năm8h 45min 57s
Mỗi tháng43m 49,7s
Mỗi tuần10m 4,8s
Mỗi ngày1m 26,4s

Sẵn sàng 99,99% - bốn số 9

Khoảng thời gianThời gian chết chấp nhận được
Mỗi năm52min 35,7s
Mỗi tháng4m 23s
Mỗi tuần1m 5s
Mỗi ngày8,6s
Thêm một số 9 làm ngân sách thời gian chết mỗi năm co lại rất nhiều Thời gian chết chấp nhận được / năm 99,9% 8 giờ 45 phút 57 giây 99,99% 52 phút 36 giây Thêm một số 9: thời gian chết giảm đúng 10 lần
Từ 99,9% lên 99,99%, thời gian chết chấp nhận được mỗi năm co lại đúng 10 lần: từ 8 giờ 45 phút 57 giây xuống còn 52 phút 36 giây.

Sẵn sàng song song và nối tiếp

Nếu một dịch vụ gồm nhiều thành phần có thể hỏng, tính sẵn sàng tổng thể phụ thuộc vào việc các thành phần được mắc nối tiếp hay song song.

Nối tiếp

Tính sẵn sàng tổng thể giảm khi hai thành phần có độ sẵn sàng dưới 100% được mắc nối tiếp:

Sẵn sàng (Tổng) = Sẵn sàng (Foo) * Sẵn sàng (Bar)

Nếu Foo và Bar mỗi cái có độ sẵn sàng 99,9%, tổng sẵn sàng khi mắc nối tiếp là 99,8%.

Song song

Tính sẵn sàng tổng thể tăng khi hai thành phần có độ sẵn sàng dưới 100% được mắc song song:

Sẵn sàng (Tổng) = 1 - (1 - Sẵn sàng (Foo)) * (1 - Sẵn sàng (Bar))

Nếu Foo và Bar mỗi cái có độ sẵn sàng 99,9%, tổng sẵn sàng khi mắc song song là 99,9999%.

Mắc nối tiếp làm giảm độ sẵn sàng, mắc song song làm tăng độ sẵn sàng Nối tiếp: cả hai phải sống Foo Bar 99,9% × 99,9% ≈ 99,8% Song song: chỉ cần một bên sống Foo Bar → 99,9999%
Nối tiếp: cả Foo và Bar đều phải sống, 99,9% × 99,9% = 99,8%. Song song: chỉ cần một trong hai sống, độ sẵn sàng tăng lên 99,9999%.

Nguồn: The System Design Primer - mục "Availability patterns" — Donne Martin và cộng đồng đóng góp

Giấy phép: CC BY 4.0 (nguyên bản: Donne Martin, The System Design Primer)

Xem bản gốc

Bài tiếp theoHệ thống phân giải tên miền (Domain Name System)