Long-polling, WebSockets hay Server-Sent là những cách giao tiếp phổ biến giữa Client và Server ví dụ những giữa Web-Browser và Web-Server. Đầu tiên ta hãy đi tìm hiểu về HTTP và các bước của nó trên môi trường Web như thế nào. Client sẽ mở ra một kết nối (connection) à yêu cầu (request) … Continue reading System Design Cơ Bản – Phần 11: Long-Polling vs WebSockets vs Server-Sent Events
Category: system design
System Design Cơ Bản – Phần 10: Consistent Hashing
Xem bài viết gốc của tác giả @batnamv tại Medium Như đã nhắc đến rất nhiều lần bên trên thì Distributed Hash Table (DHT — Bảng băm phân tán) là một thành phần cơ bản trong những distributed scalable systems (hệ thống phân tán có khả năng mở rộng). Một Hash Table cần một cặp key-value, … Continue reading System Design Cơ Bản – Phần 10: Consistent Hashing
System Design Cơ Bản – Phần 9: Định lý CAP / CAP Theorem
Xem bài viết gốc của tác giả @batnamv tại Medium Định lý CAP nói rằng một hệ thống phân tán (distributed system) không thể thỏa mãn cả ba yếu tố CAP đó là: Consistency: tính nhất quán, tất cả các node phải có dữ liệu đồng nhất với nhau. Availability: tính sẵn sàng hoạt động … Continue reading System Design Cơ Bản – Phần 9: Định lý CAP / CAP Theorem
System Design Cơ Bản – Phần 8: SQL vs. NoSQL
Trong thế giới của CSDL hiện tại ta có hai loại giải pháp chính đó là: SQL và NoSQL (cơ sở dữ liệu quan hệ và cơ sở dữ liệu phi quan hệ). Cả hai đều rất khác nhau về cách chúng được xây dựng, loại dữ liệu nó chúng lưu trữ và cả cách … Continue reading System Design Cơ Bản – Phần 8: SQL vs. NoSQL
System Design Cơ Bản – Phần 7: Sao lưu và đồng bộ dữ liệu — Redundancy and Replication
Redundancy Là phương thức sao lưu các dữ liệu quan trọng của hệ thống với mục đích tăng độ tin cậy (Reliability) của hệ thống. Ví dụ dữ liệu được lưu trên duy nhất một Server, nếu Server đó mất có nghĩa là tất cả dữ liệu đó mất, do đó việc tạo ra các … Continue reading System Design Cơ Bản – Phần 7: Sao lưu và đồng bộ dữ liệu — Redundancy and Replication
System Design Cơ Bản – Phần 6: Proxies
Proxy server là một server trung gian (intermediary) nằm giữa client và back-end server. Client kết nối với proxy server để yêu cầu (request) những dịch vụ (service) cần thiết như API, web page, file hay connection, v.V… Nói tóm lại, proxy server là một phần của hệ thống phần mềm hoặc phần cứng đóng … Continue reading System Design Cơ Bản – Phần 6: Proxies
System Design Cơ Bản – Phần 5: Indexes
Xem bài viết gốc của tác giả @batnamv tại Medium Có lẽ thuật ngữ “đánh index” đã quá quen với những ai làm việc với CSDL, đó là cách rất phổ biến để tăng tốc độ query của dữ liệu, khi dữ liệu Database ngày càng tăng và trở nên chậm dần đều theo thời … Continue reading System Design Cơ Bản – Phần 5: Indexes
System Design Cơ Bản – Phần 4: Phân chia dữ liệu — Sharding/Data Partitioning
Xem bài viết gốc của tác giả @batnamv tại Medium Phân chia dữ liệu (Sharding) là một giải pháp chia nhỏ một Database lớn thành nhiều Database nhỏ, ta có thể phân tách từng bảng hoặc cả một DB ra nhiều phần nhỏ đặt ở nhiều máy chủ (server) khác nhau. Điều này sẽ giúp … Continue reading System Design Cơ Bản – Phần 4: Phân chia dữ liệu — Sharding/Data Partitioning
System Design Cơ Bản – Phần 3: Bộ đệm — Caching
Xem bài viết gốc của tác giả @batnamv tại Medium Load balancing giúp hệ thống mở rộng theo chiều ngang bằng cách ngày càng tăng số lượng các máy chủ, nhưng Caching lại là cách để sử dụng tài nguyên (resource) hiệu quả hơn từ đó resource cần cung cấp giảm đi, nhằm tiết kiệm … Continue reading System Design Cơ Bản – Phần 3: Bộ đệm — Caching
System Design Cơ Bản – Phần 2: Cân bằng tải (Load balancing)
Xem bài viết gốc của tác giả @batnamv tại Medium Cân bằng tải (load balancing — LB) là một thành phần nữa cũng cực kỳ quan trọng trong bất kỳ một distributed system nào, nó giúp cho hệ thống có thể phân tải các request tới đều các Server (Application hoặc Database), giúp cho hệ … Continue reading System Design Cơ Bản – Phần 2: Cân bằng tải (Load balancing)