16 khái niệm thiết kế hệ thống mà tôi ước mình biết trước cuộc phỏng vấn

Tram Ho

1. Hệ thống tên miền (DNS)

1.1 DNS là gì?

DNS là một phần cơ bản của Internet giúp dịch các tên miền mà con người có thể đọc được (chẳng hạn như www.example.com ) thành các địa chỉ IP mà máy tính có thể đọc được (chẳng hạn như 192.0.2.1).

1.2 Cách thức hoạt động của DNS

  • Truy vấn DNS: Khi người dùng nhập URL, trình duyệt sẽ gửi truy vấn DNS đến trình phân giải DNS.
  • Máy chủ gốc: Chuyển tiếp truy vấn đến máy chủ gốc DNS và trỏ chúng đến máy chủ TLD thích hợp nếu trình phân giải không có thông tin.
  • Máy chủ TLD: Máy chủ TLD hướng các trình phân giải đến máy chủ có thẩm quyền kiểm soát miền của câu hỏi.
  • Máy chủ có thẩm quyền: Máy chủ có thẩm quyền cung cấp địa chỉ IP tương ứng với bộ phân giải.
  • Phản hồi: Trình phân giải trả về địa chỉ IP cho trình duyệt và trình duyệt kết nối với máy chủ mong muốn.

2. Cân bằng tải

2.1 Cân bằng tải là gì?

Bộ cân bằng tải là một phần của thiết bị hoặc phần mềm phân phối lưu lượng trên nhiều máy chủ. Điều này cải thiện hiệu suất, tính khả dụng và độ tin cậy của ứng dụng.

2.2 Các loại cân bằng tải

  • Round Robin: Các yêu cầu được phân bổ đồng đều giữa các máy chủ.
  • Ít kết nối nhất: Yêu cầu được gửi đến máy chủ có ít kết nối hoạt động nhất.
  • IP Hash: Các yêu cầu được chỉ định dựa trên hàm băm của địa chỉ IP của máy khách.

3. Cổng API

3.1 Cổng API là gì?

Cổng API là một máy chủ nằm giữa máy khách và dịch vụ siêu nhỏ. Cổng API định tuyến các yêu cầu API đến đúng vi dịch vụ, che giấu sự phức tạp của hệ thống.

3.2 Chức năng của API Gateway

  • Định tuyến yêu cầu: Chuyển tiếp các yêu cầu từ máy khách đến microservice thích hợp.
  • Xác thực: Xác thực quyền truy cập của khách hàng và tăng cường bảo mật.
  • Giới hạn tỷ lệ: Giới hạn số lượng yêu cầu đối với hệ thống để tránh quá tải.

4. Mạng phân phối nội dung (CDN)

4.1 CDN là gì?

CDN là một dịch vụ mạng giúp tăng tốc độ phân phối nội dung web bằng cách lưu nội dung vào bộ nhớ đệm trong các trung tâm dữ liệu trên toàn thế giới.

4.2 Cách thức hoạt động của CDN

  • Máy chủ biên: CDN cài đặt máy chủ biên tại các trung tâm dữ liệu trên khắp thế giới để lưu nội dung vào bộ nhớ cache gần người dùng hơn.
  • Định tuyến yêu cầu: Khi người dùng truy cập nội dung, CDN sẽ chọn máy chủ biên gần nhất để định tuyến yêu cầu.

5. Proxy chuyển tiếp và đảo ngược

5.1 Chuyển tiếp proxy

Proxy chuyển tiếp là một máy chủ giữa máy khách và Internet hướng các yêu cầu của máy khách đến máy chủ thích hợp. Chuyển tiếp proxy bỏ qua các hạn chế mạng, cải thiện bảo mật và sử dụng bộ nhớ đệm để tiết kiệm băng thông.

5.2 Proxy ngược

Proxy ngược là một máy chủ giữa internet và máy chủ phụ trợ chuyển tiếp các yêu cầu của máy khách đến máy chủ thích hợp. Proxy ngược có thể sử dụng bộ nhớ đệm để cân bằng tải, tăng cường bảo mật và phân phối nội dung nhanh hơn.

6. Bộ nhớ đệm

6.1 Bộ nhớ đệm là gì?

Bộ nhớ đệm là một kỹ thuật để lưu trữ và phục vụ hiệu quả dữ liệu được truy cập thường xuyên. Lưu trữ một bản sao dữ liệu gần người dùng hơn để cải thiện thời gian phản hồi yêu cầu.

6.2 Các loại bộ đệm

  • Bộ nhớ cache của trình duyệt: Nội dung được lưu trong bộ nhớ cache trong trình duyệt web phía máy khách.
  • Bộ đệm CDN: Nội dung được lưu trong bộ đệm trên các máy chủ biên.
  • In-memory cache: dữ liệu được lưu trữ trong bộ nhớ của máy chủ. Ví dụ: Redis, Memcached.

7. Phân vùng dữ liệu

7.1 Phân vùng dữ liệu là gì?

Phân vùng dữ liệu là kỹ thuật chia dữ liệu thành nhiều phần để cải thiện tốc độ xử lý và tính khả dụng.

7.2 Các kiểu phân vùng

  • Phân vùng ngang: chia dữ liệu theo hàng. Mỗi phân vùng chứa một phần của tập dữ liệu tổng thể.
  • Phân vùng dọc: Chia dữ liệu theo cột. Mỗi phân vùng chứa các cột cụ thể của tập dữ liệu.

8. Sao chép cơ sở dữ liệu

8.1 Sao chép cơ sở dữ liệu là gì?

Sao chép cơ sở dữ liệu là quá trình sao chép dữ liệu sang nhiều máy chủ cơ sở dữ liệu để cải thiện tính khả dụng của dữ liệu, khả năng chịu lỗi và hiệu suất.

8.2 Các kiểu sao chép

  • Sao chép Master-Slave: Máy chủ chính thực hiện thay đổi dữ liệu và máy chủ nô lệ sao chép những thay đổi đó.
  • Bản sao Master-Master: Tất cả các máy chủ thực hiện thay đổi dữ liệu và sao chép các thay đổi sang các máy chủ khác.

9. Hệ thống nhắn tin phân tán

9.1 Hệ thống nhắn tin phân tán là gì?

Hệ thống nhắn tin phân tán là một hệ thống trao đổi tin nhắn hiệu quả giữa các ứng dụng. Điều này dẫn đến kết nối lỏng lẻo hơn giữa các thành phần, giúp cải thiện khả năng mở rộng và khả năng chịu lỗi.

9.2 Hệ thống nhắn tin phân tán chung

  • Apache Kafka: Một nền tảng phát trực tuyến phân tán với thông lượng cao, khả năng chịu lỗi và khả năng mở rộng.
  • RabbitMQ: Trình chuyển tin nhắn đáng tin cậy và có khả năng mở rộng cao.

10. Dịch vụ vi mô

10.1 Microservices là gì?

Microservices là một kiểu kiến ​​trúc chia ứng dụng thành các dịch vụ nhỏ, có thể triển khai độc lập. Điều này làm cho việc phát triển, triển khai và nhân rộng dễ dàng hơn.

10.2 Ưu điểm của microservice

Tạo điều kiện phát triển: Các nhóm nhỏ có thể phát triển các tính năng một cách độc lập. Khả năng mở rộng: Mỗi dịch vụ có thể được mở rộng độc lập. Bản địa hóa lỗi: Chỉ các dịch vụ riêng lẻ bị ảnh hưởng, không phải toàn bộ hệ thống.

11. Cơ sở dữ liệu NoSQL

11.1 Cơ sở dữ liệu NoSQL là gì?

Cơ sở dữ liệu NoSQL có mô hình dữ liệu khác với cơ sở dữ liệu quan hệ truyền thống, mang lại khả năng mở rộng và tính linh hoạt cao hơn.

11.2 Các loại cơ sở dữ liệu NoSQL

  • Kho khóa-giá trị: Cơ sở dữ liệu lưu trữ các cặp khóa-giá trị đơn giản. Ví dụ: Redis, Amazon DynamoDB.
  • Kho lưu trữ tài liệu: Cơ sở dữ liệu lưu trữ dữ liệu ở các định dạng tài liệu như JSON và BSON. Ví dụ: MongoDB, Couchbase.
  • Column Family Store: Cơ sở dữ liệu lưu trữ dữ liệu theo họ cột. Ví dụ: Apache Cassandra, HBase.
  • Cơ sở dữ liệu đồ thị: Cơ sở dữ liệu lưu trữ dữ liệu trong cấu trúc đồ thị. Ví dụ: Neo4j, Amazon Neptune.

12. Chỉ mục cơ sở dữ liệu

12.1 Chỉ mục cơ sở dữ liệu là gì?

Chỉ mục cơ sở dữ liệu là một cấu trúc cho phép tìm kiếm dữ liệu hiệu quả trong cơ sở dữ liệu. Sử dụng các chỉ mục có thể cải thiện đáng kể hiệu suất truy vấn.

12.2 Các loại chỉ mục

  • B-Tree index: Là chỉ mục phổ biến, thường dùng trong cơ sở dữ liệu quan hệ.
  • Chỉ số bitmap: Hiệu quả đối với dữ liệu cardinality thấp (dữ liệu có ít loại giá trị).
  • Chỉ mục băm: nhanh để tra cứu đẳng thức, nhưng không tốt cho tra cứu phạm vi.

13. Giao dịch phân tán

13.1 Giao dịch phân tán là gì?

Giao dịch phân tán là giao dịch chạy trên nhiều nút. Mục tiêu là thực hiện các giao dịch trong một hệ thống phân tán đồng thời duy trì tính nhất quán của dữ liệu.

13.2 Cam kết hai pha (2PC)

Cam kết hai pha là một giao thức để thực hiện các giao dịch phân tán và bao gồm hai giai đoạn:

  • Giai đoạn chuẩn bị: Hỏi tất cả những người tham gia xem họ đã sẵn sàng thực hiện giao dịch chưa.
  • Giai đoạn cam kết/hủy bỏ: Cam kết giao dịch nếu tất cả những người tham gia có thể cam kết. Nếu không, hủy bỏ giao dịch.

14. Phân mảnh

14.1 Phân đoạn là gì?

Sharding là quá trình chia cơ sở dữ liệu thành nhiều phiên bản, mỗi phiên bản quản lý một phần của tập dữ liệu. Điều này cải thiện khả năng mở rộng cơ sở dữ liệu.

14.2 Phương pháp chia nhỏ

  • Phân đoạn dựa trên hàm băm: gán dữ liệu cho các phân đoạn dựa trên hàm băm của khóa.
  • Phân đoạn dựa trên phạm vi: Phân bổ dữ liệu cho các phân đoạn dựa trên các phạm vi chính.

15. Trung tâm dữ liệu

15.1 Trung tâm dữ liệu là gì?

Trung tâm dữ liệu là một cơ sở chuyên dụng chứa cơ sở hạ tầng công nghệ thông tin (CNTT) như hệ thống máy tính, hệ thống liên lạc và hệ thống lưu trữ. Trung tâm dữ liệu lưu trữ, xử lý và quản lý dữ liệu và kết nối với Internet.

15.2 Đặc điểm của trung tâm dữ liệu

  • Dự phòng: Nguồn dự phòng, làm mát và liên kết truyền thông được cung cấp để xử lý các lỗi hệ thống.
  • Bảo mật: Các biện pháp bảo mật vật lý và hợp lý được áp dụng.
  • Hiệu quả năng lượng: Trung tâm dữ liệu sử dụng các thiết kế tiết kiệm năng lượng và kỹ thuật làm mát để giảm mức tiêu thụ điện năng.

16. Cân bằng tải

16.1 Cân bằng tải là gì?

Cân bằng tải là quá trình phân phối tải đồng đều trên hệ thống của bạn trên nhiều máy chủ. Điều này cải thiện tính khả dụng, khả năng mở rộng và hiệu suất của hệ thống.

16.2 Phương pháp cân bằng tải

  • Round Robin: Gán yêu cầu cho các máy chủ theo thứ tự.
  • Ít kết nối nhất: Gán yêu cầu cho máy chủ hiện có ít kết nối nhất.
  • IP Hash: Gán yêu cầu cho máy chủ dựa trên địa chỉ IP của máy khách.

Đây là những thành phần và khái niệm cơ bản của hệ thống phân tán. Bằng cách hiểu các thành phần và khái niệm này và áp dụng chúng một cách thích hợp, bạn có thể xây dựng các hệ thống phân tán với tính khả dụng, khả năng mở rộng và hiệu suất cao.

cuối cùng

Tôi luôn mắc nợ. Tôi hy vọng bạn thích bài viết này và học được một cái gì đó mới.

Hẹn gặp lại các bạn trong bài viết tiếp theo! Nếu bạn thích bài viết này, hãy nhấn “THÍCH” và đăng ký để ủng hộ tôi. Cảm ơn rất nhiều.

Giới thiệu

Chia sẻ bài viết ngay

Nguồn bài viết : Viblo