View profile

#233 - Tìm hiểu về Colossus, hệ thống lưu trữ phân tán của Google

Grokking Vietnam
Grokking Vietnam
Vào thứ 2 vừa Grokking phối hợp cùng Phòng thí nghiệm an ninh mạng, Khoa KH&KT Máy tính Trường ĐHBK TP HCM đã tổ chức thành công Techtalk #46 với chủ đề “Những bài học về xâm nhập và bảo vệ hệ thống mạng Việt Nam” do anh Dương Ngọc Thái trình bày. Với hơn 200 bạn tham gia, đã có rất nhiều những thảo luận sôi nổi xung quanh chủ đề này.
Các bạn có thể xem lại slide bài talk tại đây.
Trong số này, chúng ta cùng tìm hiểu về:
  • The New Rules Of Data Quality.
  • Triển khai liên tục (CD) trong Distributed System.
  • Tìm hiểu về Colossus, hệ thống lưu trữ phân tán của Google.
  • Lời giải bài Snapshot-Array.
  • John McCarthy, nhà khoa học máy tính người Mỹ và những đóng góp của ông trong lĩnh vực AI.
Ngoài ra các bạn vẫn có thể tiếp tục đặt mua ấn phẩm Dijkstra tập 2 tại đây.
P/S: Tuần này quá bận, nên vẫn là gửi trễ 1 chút. Mong các bạn độc giả thông cảm!

Những bài viết hay
Các thành phần chính của Colossus control plane
Các thành phần chính của Colossus control plane
News
Góc Lập Trình
(by ndaadn)
Cho một mảng số nguyên arr và một số nguyên target.
Tìm 2 mảng con của mảng arr sao cho tổng của các phần tử trong mỗi mảng con này bằng target.
Trả về tổng độ dài nhỏ nhất của 2 mảng con đó (có khả năng có nhiều hơn 2 mảng con có tổng các phần tử bằng target, vậy nên cần tìm 2 mảng con có số phần tử ít nhất)
Ví dụ:
Input: arr = [7,3,4,7], target = 7
Output: 2
Giải thích: các mảng con thỏa mãn là ([7], [3,4] và[7]), tuy nhiên ta sẽ chọn mảng con thứ nhất và thứ 3 vì chúng có tổng số phần tử ít nhất.
Lời giải đề bài tuần trướcSnapshot Array
by (ndaadn)
Yêu cầu của bài toán khá rõ ràng, ta có thể nghĩ ngay đến hướng cài đặt lưu dữ liệu vào một mảng, với mỗi lần hàm snap được gọi, ta lưu lại mảng hiện tại và tiếp tục thực hiện các thao tác get, set trên mảng mới. Đó là hướng suy nghĩ lưu snapshot toàn bộ mảng dữ liệu, ngoài ra ta còn có cách giải quyết khác, đó là lưu snapshot theo từng ô của mảng dữ liệu. Dưới đây là 2 cách cài đặt tương ứng bằng ngôn ngữ Java như sau.
1. Lưu snapshot toàn bộ dữ liệu: để tiết kiệm bộ nhớ lưu trữ, ta có thể sử dụng HashMap thay cho mảng thông thường. Mỗi khi cần lưu lại snapshot, ta khởi tạo một HashMap mới, copy và lưu lại toàn bộ giá trị HashMap hiện tại.
Với cách cài đặt này, ta có 2 tham số cần quan tâm khi phân tích độ phức tạp
- length: độ dài của mảng, giả sử gọi là N
- S: số lần gọi hàm snap.
Như vậy trong trường hợp xấu nhất, độ phức tạp thuật toán và không gian của cách cài đặt trên như sau. 
+ Hàm void set: độ phức tạp thuật toán O(1).
+ Hàm int snap: độ phức tạp thuật toán O(N).
+ Hàm int get: độ phức tạp thuật toán: O(1).
+ Độ phức tạp không gian của cài đặt: O(N*S).
2. Lưu snapshot từng ô của mảng dữ liệu: thay vì lưu snapshot toàn bộ dữ liệu, ta chỉ cần lưu snapshot của từng ô (phần tử) của cấu trúc dữ liệu ban đầu, mỗi ô chứa thông tin các cặp <snap_id, value>. 
Với cách cài đặt này, nếu gọi N là số lần hàm snap được gọi, thì độ phức tạp thuật toán và không gian như sau.
+ Hàm void set: độ phức tạp thuật toán O(log(N)).
+ Hàm int snap: độ phức tạp thuật toán O(1).
+ Hàm int get: độ phức tạp thuật toán: O(log(N)).
+ Độ phức tạp không gian của cài đặt: O(N).
Code & Tools
  • Anchors, Aliases và Extensions: Sử dụng các Docker Compose file là một cách hữu ích để cấu hình và định nghĩa các containers và services hoạt động cùng nhau. Tuy nhiên, chúng ta có thể dễ dàng tạo ra một file với nhiều code bị lặp đi lặp lại bởi nhiều services hoặc cấu hình tương tự. Bạn của thể tránh những trùng lặp này (Don’t Repeat Yourself - DRY) bằng cách tận dụng tính năng aliases và anchors của YAML cũng như các trường mở rộng (extensions) trong Docker Compose file.
  • https://visbug.web.app/: Một công cụ hữu ích dành cho Web Developer.
History
Chúc mừng sinh nhật John McCarthy
John McCarthy sinh ngày 4 tháng 9 năm 1927 tại Boston và là một nhà khoa học máy tính người Mỹ. Ông là đồng tác giả của tài liệu đầu tiên giới thiệu khái niệm “trí tuệ nhân tạo”. Ông giành được nhiều giải thưởng danh giá như giải thưởng Turing năm 1971 cho những đóng góp trong lĩnh vực AI. Ngoài ra ông còn có những đóng góp quan trọng khác về Sharing Time, LISP. Không chỉ dừng lại ở đó, ông cũng là một nhà triết học về trí tuệ nhân tạo. Truyện ngắn “The Robot and the Baby” của ông đã đi sâu khám phá câu hỏi liệu người máy có nên có (hoặc mô phỏng việc có) cảm xúc hay không. Ông mất vào ngày 24 tháng 10 năm 2011.
Các bạn có thể đọc bài viết sau để tìm hiểu kỹ hơn về cuộc đời và sự nghiệp của ông: https://www.wired.com/2011/10/john-mccarthy-father-of-ai-and-lisp-dies-at-84/
(by lpv)
Feedback
Bạn đánh giá nội dung số newsletter này thế nào?
(1 = Rất tệ / 5 = Rất tốt)
👎 1 —— 2 —— 3 —— 4 —— 5 👍 
(Việc đánh giá của các bạn là rất quan trọng, sẽ giúp chúng tôi liên tục cải thiện nội dung newsletter tốt hơn)
Grokking mang lại cho các bạn những kiến thức mới mẻ và hữu ích thông qua:
  • Tech Talk: Là một hoạt động thường xuyên của Grokking từ những ngày đầu thành lập. Tại đây các diễn giả chia sẻ kiến thức xoay quanh Computer Science và Software Engineer. Các buổi Tech Talk đều được record và upload lên kênh youtube của Grokking.
  • Grokking Knowledge Graph: Tập hợp những nguồn kiến thức phong phú với hơn 1000 bài viết chọn lọc, các đầu sách, khóa học, v.v… Các bài viết đều được gán nhãn để giúp bạn đọc dễ dàng tìm kiếm.
  • Webinar: Là chương trình kết nối các kỹ sư Việt Nam và các kỹ sư đang làm việc tại các công ty công nghệ hàng đầu thế giới.
  • Dijkstra: Một ấn phẩm được xuất bản bởi các thành viên của Grokking. Với những bài viết đào sâu vào kỹ thuật và kiến thức khoa học máy tính.
  • Kipalog: Nền tảng chia sẻ kiến thức dành cho các lập trình viên.
  • Newsletter: Những bài viết hay về công nghệ sẽ được gửi tới bạn hàng tuần qua email.
Chúc các bạn sẽ tìm được nhiều điều mới mẻ khi đến với Grokking và xin hẹn gặp lại các bạn vào tuần sau.
Quotes
“Machines as simple as thermostats can be said to have beliefs, and having beliefs seems to be a characteristic of most machines capable of problem-solving performance.” - John McCarthy
Did you enjoy this issue? Yes No
Grokking Vietnam
Grokking Vietnam

Cảm ơn bạn đã dành thời gian đọc newsletter kỳ này và chúng tôi hi vọng rằng bạn đã khám phá ra một số điều mới mẻ từ các bài viết trên. Các bạn có thể đọc lại các số cũ tại website newsletter.grokking.org

In order to unsubscribe, click here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Created with Revue by Twitter.
Viet Nam