System Design Cơ Bản – Phần 18: REST, GraphQL, Webhooks, & gRPC

Để giúp các API developer hiểu được nên sử dụng phong cách thiết kế API nào, trong ngữ cảnh nào. Hãy cùng xem xét REST, GraphQL, gRPC và Webhooks, phân tích điểm mạnh và điểm yếu của chúng để ap dụng cho đúng vào từng trường hợp. REST Có thể nói nguyên lí REST và … Continue reading System Design Cơ Bản – Phần 18: REST, GraphQL, Webhooks, & gRPC

System Design Cơ Bản – Phần 17: Mô hình về tính nhất quán ACID và BASE

Khi nói đến cơ sở dữ liệu NoSQL, các mô hình nhất quán dữ liệu đôi khi có thể khác biệt đáng kể so với các cơ sở dữ liệu quan hệ được sử dụng (cũng như khá khác biệt so với các cơ sở dữ liệu NoSQL khác). Hai mô hình nhất quán phổ … Continue reading System Design Cơ Bản – Phần 17: Mô hình về tính nhất quán ACID và BASE

System Design Cơ Bản – Phần 16: Message Broker

Trong kiến trúc cloud (hay microservices), các ứng dụng được chia thành những khối độc lập nhỏ hơn để có thể dễ dàng develop, deploy và maintain. Hãy thử tưởng tượng bạn có một kiến trúc cloud có nhiều service và nhiều request mỗi giây, bạn phải đảm bảo rằng không có bất cứ một … Continue reading System Design Cơ Bản – Phần 16: Message Broker

System Design Cơ Bản – Phần 14: Availability vs consistency

Định lý CAP Xem lại ở Phần 9: Định lý CAP / CAP Theorem Các patterns về sự nhất quán (consistency) Với nhiều bản sao của cùng một dữ liệu, chúng ta phải đối mặt với các tùy chọn về cách đồng bộ hóa để client có một cái nhìn nhất quán về dữ liệu. … Continue reading System Design Cơ Bản – Phần 14: Availability vs consistency

System Design Cơ Bản – Phần 13: Domain name system (DNS)

DNS là viết tắt của cụm từ Domain Name System, mang ý nghĩa đầy đủ là hệ thống phân giải tên miền. Hiểu một cách ngắn gọn nhất, DNS cơ bản là một hệ thống chuyển đổi các tên miền website mà chúng ta đang sử dụng, ở dạng www.tenmien.com sang một địa chỉ IP dạng số tương ứng với tên miền đó … Continue reading System Design Cơ Bản – Phần 13: Domain name system (DNS)

System Design Cơ Bản – Phần 12: HTTPS, SSL, and TLS

SSL là chữ viết tắt của Secure Sockets Layer (Lớp socket bảo mật). Một loại bảo mật giúp mã hóa liên lạc giữa website và trình duyệt. Công nghệ này đang lỗi thời và được thay thế hoàn toàn bởi TLS. TLS là chữ viết tắt của Transport Layer Security, nó cũng giúp bảo mật thông tin truyền giống như SSL. Nhưng vì … Continue reading System Design Cơ Bản – Phần 12: HTTPS, SSL, and TLS

System Design Cơ Bản – Phần 11: Long-Polling vs WebSockets vs Server-Sent Events

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

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