Các thuật ngữ thiết kế hệ thống bạn cần biết

Các thuật ngữ thiết kế hệ thống bạn cần biết

Web Development

Thiết kế hệ thống đóng vai trò quan trọng trong việc xây dựng các hệ thống phần mềm có khả năng mở rộng và hiệu quả, việc hiểu rõ các thuật ngữ này là điều cần thiết. Hãy cùng mình tìm hiểu 50 thuật ngữ thiết kế hệ thống thường được sử dụng nhé!

1. Scalability (Khả năng mở rộng)

Khả năng mở rộng đề cập đến việc hệ thống có thể xử lý tải tăng lên bằng cách bổ sung tài nguyên (như thêm máy chủ). Có hai loại chính:

  • Mở rộng ngang (Horizontal Scaling): Thêm nhiều máy.

  • Mở rộng dọc (Vertical Scaling): Tăng cường sức mạnh của máy hiện có.

2. Load Balancer (Bộ cân bằng tải)

Bộ cân bằng tải có trách nhiệm phân phối lưu lượng mạng đến nhiều máy chủ khác nhau để đảm bảo không có máy chủ nào bị quá tải.

3. Caching (Bộ nhớ đệm)

Bộ nhớ đệm lưu trữ bản sao dữ liệu trong một khu vực tạm thời để các yêu cầu sau có thể được phục vụ nhanh hơn.

4. Latency (Độ trễ)

Độ trễ là thời gian để một gói dữ liệu di chuyển từ nguồn đến đích. Đây là thước đo quan trọng để đánh giá hiệu suất của hệ thống.

5. Throughput (Thông lượng)

Thông lượng là lượng dữ liệu mà hệ thống có thể xử lý trong một khoảng thời gian nhất định, thường được đo bằng số yêu cầu trên giây (RPS).

6. High Availability (HA - Khả năng sẵn sàng cao)

Khả năng sẵn sàng cao đề cập đến hệ thống được thiết kế để hoạt động liên tục mà không bị gián đoạn trong thời gian dài, thường sử dụng các chiến lược dự phòng và chuyển đổi dự phòng.

7. Fault Tolerance (Khả năng chịu lỗi)

Khả năng chịu lỗi là khả năng của hệ thống tiếp tục hoạt động bình thường ngay cả khi một hoặc nhiều thành phần bị lỗi.

8. Microservices (Kiến trúc vi dịch vụ)

Microservices là một phong cách kiến trúc trong đó hệ thống được chia thành các dịch vụ nhỏ, độc lập, giao tiếp với nhau qua API.

9. Monolithic Architecture (Kiến trúc đơn khối)

Trái ngược với microservices, kiến trúc đơn khối kết hợp tất cả các thành phần của một ứng dụng thành một chương trình liên kết chặt chẽ.

10. API Gateway (Cổng API)

Cổng API là điểm vào cho các khách hàng truy cập nhiều dịch vụ vi mô, giúp đơn giản hóa việc giao tiếp giữa chúng.

11. CAP Theorem (Định lý CAP)

Định lý CAP cho rằng một hệ thống phân tán chỉ có thể đảm bảo hai trong ba thuộc tính:

  • Tính nhất quán (Consistency)

  • Tính sẵn sàng (Availability)

  • Khả năng chịu phân vùng (Partition Tolerance).

12. Consistency (Tính nhất quán)

Tính nhất quán đảm bảo rằng mỗi yêu cầu đọc sẽ nhận được dữ liệu mới nhất sau khi có một yêu cầu ghi.

13. Partition Tolerance (Khả năng chịu phân vùng)

Khả năng chịu phân vùng đề cập đến khả năng của hệ thống tiếp tục hoạt động ngay cả khi mất liên lạc giữa các máy chủ.

14. Eventual Consistency (Nhất quán cuối cùng)

Trong các hệ thống phân tán, nhất quán cuối cùng có nghĩa là tất cả các bản sao của dữ liệu sẽ trở nên nhất quán sau một khoảng thời gian, mặc dù không ngay lập tức.

15. ACID Properties (Thuộc tính ACID)

ACID (Tính nguyên tử, Nhất quán, Cô lập, Bền vững) là tập hợp các thuộc tính đảm bảo các giao dịch trong cơ sở dữ liệu được xử lý một cách đáng tin cậy.

16. BASE Model (Mô hình BASE)

BASE (Khả năng sẵn sàng cơ bản, Trạng thái mềm, Nhất quán cuối cùng) là một sự thay thế cho ACID, thường được sử dụng trong các cơ sở dữ liệu NoSQL.

17. Load Shedding (Giảm tải)

Giảm tải là một cơ chế sử dụng để giảm bớt khối lượng công việc trên hệ thống bằng cách loại bỏ hoặc ưu tiên các yêu cầu nhất định để duy trì sự ổn định.

18. Data Replication (Nhân bản)

Nhân bản là quá trình sao chép dữ liệu từ một vị trí sang một vị trí khác để cải thiện tính sẵn sàng và khả năng chịu lỗi.

19. Database Sharding (Phân mảnh cơ sở dữ liệu)

Phân mảnh cơ sở dữ liệu là quá trình chia một cơ sở dữ liệu lớn thành các mảnh nhỏ hơn, dễ quản lý hơn được gọi là "shards".

20. NoSQL

NoSQL là loại cơ sở dữ liệu được thiết kế để xử lý khối lượng lớn dữ liệu không có cấu trúc, thường linh hoạt hơn các cơ sở dữ liệu quan hệ truyền thống.

21. SQL (Structured Query Language - Ngôn ngữ truy vấn có cấu trúc)

SQL là ngôn ngữ tiêu chuẩn dùng để tương tác với cơ sở dữ liệu quan hệ, chẳng hạn như truy vấn và thay đổi dữ liệu có cấu trúc.

22. Master-Slave Architecture (Kiến trúc Chủ-Tớ)

Trong mô hình này, máy chủ chủ xử lý tất cả các yêu cầu ghi, trong khi các máy chủ tớ sao chép dữ liệu từ chủ và phục vụ các yêu cầu đọc.

23. Leader Election (Bầu chọn lãnh đạo)

Bầu chọn lãnh đạo là quá trình trong các hệ thống phân tán mà các nút đồng ý chọn một nút duy nhất để đóng vai trò lãnh đạo cho việc điều phối.

24. Heartbeats (Nhịp đập)

Nhịp đập là các tín hiệu định kỳ được gửi giữa các nút để xác nhận rằng chúng vẫn hoạt động và đang hoạt động tốt.

25. Pub/Sub (Publish/Subscribe - Đăng ký/Phát hành)

Pub/Sub là mô hình nhắn tin mà người gửi phát hành các thông báo mà không biết người nhận, và người nhận đăng ký nhận các chủ đề thông báo cụ thể.

26. Message Queue (Hàng đợi tin nhắn)

Hàng đợi tin nhắn là một dạng giao tiếp không đồng bộ, nơi các thông báo được lưu trữ trong hàng đợi và xử lý theo thứ tự vào trước ra trước (FIFO).

27. Rate Limiting (Giới hạn tần suất)

Giới hạn tần suất kiểm soát số lượng yêu cầu mà một khách hàng có thể gửi đến dịch vụ, ngăn ngừa lạm dụng và đảm bảo tính ổn định.

28. Circuit Breaker Pattern (Mẫu ngắt mạch)

Mẫu ngắt mạch ngăn chặn hệ thống cố gắng thực hiện một hoạt động có khả năng thất bại, cho phép thời gian phục hồi.

29. Content Delivery Network (CDN - Mạng phân phối nội dung)

CDN là một mạng lưới các máy chủ phân tán cung cấp nội dung cho người dùng dựa trên vị trí địa lý của họ, giúp cải thiện thời gian tải.

30. DDoS (Distributed Denial of Service - Tấn công từ chối dịch vụ phân tán)

DDoS là cuộc tấn công khi nhiều hệ thống làm ngập băng thông hoặc tài nguyên của một hệ thống mục tiêu, làm cho nó không thể phục vụ người dùng.

31. Throttling (Điều chỉnh tốc độ)

Điều chỉnh tốc độ kiểm soát lưu lượng truy cập mà hệ thống gửi hoặc nhận, ngăn chặn việc quá tải bằng cách làm chậm hoặc từ chối các yêu cầu quá mức.

32. Idempotency (Tính đồng nhất)

Tính đồng nhất đảm bảo rằng việc thực hiện cùng một thao tác nhiều lần sẽ có hiệu quả giống như khi thực hiện một lần duy nhất, thường rất quan trọng trong các API.

33. Service Discovery (Khám phá dịch vụ)

Khám phá dịch vụ cho phép các hệ thống tự động phát hiện vị trí của các dịch vụ bên trong mạng phân tán.

34. Latency vs Throughput (Độ trễ và Thông lượng)

Độ trễ đề cập đến sự chậm trễ trong việc xử lý một yêu cầu đơn lẻ, trong khi thông lượng đo lường có bao nhiêu yêu cầu có thể được xử lý trong một khoảng thời gian nhất định.

35. SLA (Service Level Agreement - Thỏa thuận mức dịch vụ)

SLA là một hợp đồng chính thức giữa nhà cung cấp dịch vụ và khách hàng, xác định hiệu suất và tính sẵn sàng mong đợi.

36. Data Partitioning (Phân vùng dữ liệu)

Phân vùng dữ liệu là quá trình chia một tập dữ liệu lớn thành các phần nhỏ hơn để cải thiện khả năng quản lý và hiệu suất.

37. Quorum (Quyền biểu quyết)

Trong hệ thống phân tán, quorum là số lượng tối thiểu các nút cần đồng ý cho một quyết định để nó được chấp nhận.

38. Replication Lag (Độ trễ sao chép)

Độ trễ sao chép xảy ra khi có sự chậm trễ giữa việc ghi dữ liệu vào máy chủ chính và việc sao chép dữ liệu đó sang các máy chủ phụ.

39. Data Consistency Models (Các mô hình nhất quán dữ liệu)

Các mô hình khác nhau (ví dụ: Nhất quán mạnh, Nhất quán cuối cùng) định nghĩa cách dữ liệu được truy cập và cập nhật trong các hệ thống phân tán.

40. Strong Consistency (Tính nhất quán mạnh)

Tính nhất quán mạnh đảm bảo rằng sau khi thực hiện thao tác ghi, bất kỳ thao tác đọc nào sau đó đều sẽ trả về dữ liệu đã được cập nhật.

41. Consensus Algorithm (Thuật toán đồng thuận)

Thuật toán đồng thuận (ví dụ: Paxos, Raft) được sử dụng để đạt được sự đồng thuận về một giá trị dữ liệu duy nhất giữa các hệ thống phân tán.

42. 2PC (Two-Phase Commit - Cam kết hai giai đoạn)

2PC là một thuật toán phân tán đảm bảo rằng tất cả các bên tham gia vào một giao dịch hoặc là sẽ cam kết thay đổi của họ, hoặc hủy bỏ nó để duy trì tính nhất quán.

43. Zookeeper

Zookeeper là một dịch vụ điều phối phân tán dành cho các ứng dụng phân tán, cung cấp các chức năng như bầu chọn lãnh đạo và quản lý cấu hình.

44. Rate Limiting Algorithms (Thuật toán giới hạn tần suất)

Các thuật toán khác nhau (ví dụ: Token Bucket, Leaky Bucket) được sử dụng để thực hiện giới hạn tần suất và quản lý lưu lượng truy cập.

45. Data Lake (Hồ dữ liệu)

Hồ dữ liệu là một kho lưu trữ tập trung lưu trữ lượng lớn dữ liệu thô ở định dạng gốc của nó cho đến khi cần xử lý.

46. Batch Processing (Xử lý theo lô)

Xử lý theo lô liên quan đến việc xử lý một lượng lớn dữ liệu cùng một lúc, thường diễn ra sau một khoảng thời gian nhất định, chẳng hạn như vào ban đêm.

47. Stream Processing (Xử lý dòng dữ liệu)

Xử lý dòng dữ liệu cho phép phân tích dữ liệu liên tục, theo thời gian thực, nơi dữ liệu được xử lý ngay khi nó đến.

48. Autoscaling (Tự động mở rộng)

Tự động mở rộng điều chỉnh tự động số lượng tài nguyên được phân bổ cho một dịch vụ dựa trên tải hiện tại.

49. Elasticity (Tính đàn hồi)

Tính đàn hồi đề cập đến khả năng của hệ thống mở rộng hoặc thu hẹp dựa trên nhu cầu.

50. Containerization (Đóng gói container)

Đóng gói container đóng gói một ứng dụng và các phần phụ thuộc của nó vào một container duy nhất, cho phép nó chạy ổn định trên nhiều môi trường khác nhau (ví dụ: Docker).

Kết luận

Việc hiểu rõ các thuật ngữ thiết kế hệ thống quan trọng này có thể giúp bạn cải thiện khả năng thiết kế và quản lý các hệ thống lớn. Cho dù bạn chỉ mới bắt đầu hay đang ôn tập lại, việc nắm vững những thuật ngữ này sẽ giúp bạn làm việc hiệu quả hơn.