#75 - Gitlab sử dụng kỹ thuật delayed replication trên PostgreSQL để recover lại dữ liệu cho người dùng.
Những bài viết hay
How we used delayed replication for disaster recovery with PostgreSQL — about.gitlab.com
Hệ thống của Gitlab đã có hơn 3 triệu người dùng và hơn 7 triệu dự án được host trên đó. Với một hệ thống như vậy thì việc bảo tồn tính toàn vẹn dữ liệu là rất quan trọng. Một trong các chiến lược được team Gitlab áp dụng đó là sử dụng kỹ thuật delayed replication để recover lại dữ liệu cho người dùng sau một vài thao tác lỗi. Đọc bài viết để hiểu về cách kỹ thuật này hoạt động nhé.
Gathering Metrics from Your Infrastructure and Applications — www.digitalocean.com
Đối với các hệ thống quy mô lớn, việc xây dựng và đo đạc các metrics là rất quan trọng để đảm bảo đội ngũ bảo trì có thể được cập nhật tức thời ngay khi có sự cố xảy ra và lên phương án xử lý. Vậy khi xây dựng các hệ thống metrics thì nên lựa chọn như thế nào? Nên lưu ý những điều gì?
Using Rust to Scale Elixir for 11 Million Concurrent Users — blog.discordapp.com
Scale hệ thống luôn là vấn đề được quan tâm và tùy mỗi bài toán mà mỗi team sẽ đưa ra những phương án khác nhau. Trong các cách tối ưu, rất nhiều cách, có thể từ code tới các thành phần của hệ thống. Trong bài toán 11 triệu CCU, team Backend của Discord đã giải quyết bằng cách tối ưu cấu trúc dữ liệu (code) mang lại hiệu quả rất cao.
Lessons learned from running Kafka at Datadog — www.datadoghq.com
Datadog là platform giúp các công ty có thể xây dựng hệ thống tracking giúp đo đạc và phân tích các thông số như tải hệ thống, lỗi kết nối, cpu, tần suất gọi api, độ trễ, ... một cách hiệu quả. Thông qua quá trình triển khai hạ tầng gồm hơn 40 cluster Kafka và Zookeeper, team Datadog có rút tỉa được vài kinh nghiệm về cấu hình Kafka. Các bạn nào đang sử dụng Kafka cho hệ thống của mình có thể cùng tham khảo.
Bạn có biết
Delay Replication là một kỹ thuật cấu hình cơ sở dữ liệu phân tán, trong đó một trong các node sẽ được replicate trễ hơn các node còn lại. Việc cấu hình này sẽ nhằm giúp cho việc khôi phục lại dữ liệu sau các sự cố nghiêm trọng gây mất dữ liệu được diễn ra dễ dàng và trơn tru hơn.
Code & Tools
Quiz
Trong số Newsletter kỳ trước, team có đặt ra câu hỏi "Thuật toán nào dưới dây không phải là một thuật toán Tham lam?" và đưa ra các lựa chọn là Dijkstra’s shortest path algorithm, Prim’s algorithm, Kruskal algorithm, Huffman Coding, Bellmen Ford Shortest path algorithm.
Để trả lời câu hỏi này, trước hết chúng ta cùng ôn lại xem định nghĩa của thuật toán Tham lam (Greedy) là gì?
A greedy algorithm is an algorithmic strategy that makes the best optimal choice at each small stage with the goal of this eventually leading to a globally optimum solution. This means that the algorithm picks the best solution at the moment without regard for consequences.
Cả 5 thuật toán được đưa ra đều là các thuật toán liên quan đến đồ thị, và Theo định nghĩa thì cả 4 thuật toán Dijkstra, Prim, Kruskal và Huffman đều có tính chất: ưu tiên lựa chọn các option tối ưu cục bộ nhằm hướng đến kết quả toàn cục hợp lý nhất. Riêng đối với thuật toán Bellmen-Ford, thuật toán này mặc dù tương tự Dijkstra, nhưng thay vì lựa chọn một đỉnh ngắn nhất chưa duyệt, Bellmen-Ford sẽ duyệt hết tất cả các đỉnh xung quanh để tìm ra con đường ngắn nhất. Từ đó cho thấy
Kết luận: đáp án là Bellmen-Ford không phải là thuật toán Tham lam (Greedy)
-------
Kỳ này, mời các bạn cùng trả lời câu hỏi:
Các phương thức Http nào dưới đây được xem là Idempotent?
A - GET
B - PUT
C - POST
D - DEL
Quote
“ Code is like humor. When you have to explain it, it’s bad.” – Cory House