#237 - Nền tảng quản lý cơ sở hạ tầng Skynet tại Gojek
Trong số này, chúng ta cùng tìm hiểu về:
Định dạng file Parquet
Hệ thống Skynet của đội ngũ kỹ sư ở Gojek
Lời giải bài Zigzag Conversion
Mussel Key-value storage do Airbnb phát triển
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.
News
Linux Kernel 6.0 Released, This is What's New — www.omgubuntu.co.uk
Linux kernel 6.0 đã chính thức phát hành, mang lại những cải tiến và hỗ trợ tốt hơn trên phần cứng Intel/AMD.
Browsers with built-in VPNs — the new normal?
Microsoft tích hợp VPN vào trong trình duyệt Edge.
PostgreSQL 15 vừa chính thức phát hành vào ngày 13/10. Hãy cùng điểm qua một số tính năng mới trong phiên bản này nhé.
Toyota Suffered a Data Breach by Accidentally Exposing A Secret Key Publicly On GitHub
Đừng bao giờ lưu hardcode secret key vào bên trong source code!
Những bài viết hay
Demystifying the Parquet File Format
(by steven.do)
Apache parquet là một định dạng tệp mã nguồn mở cung cấp khả năng lưu trữ hiệu quả và tốc độ đọc nhanh, sử dụng định dạng lưu trữ kết hợp lưu trữ tuần tự các khối cột, mang lại hiệu suất cao khi chọn và lọc dữ liệu. Ngoài hỗ trợ thuật toán nén mạnh (snappy, gzip, LZO), nó cũng cung cấp một số thủ thuật để giảm file scan và mã hóa lặp lại các biến.
Trong bài viết này tác giả đã thực hiện so sánh và giải thích các ưu điểm của định dạng parquet so với các format khác khi áp dụng vào OLAP workflow. Paquet chiếm ít không gian lưu trữ hơn 87% và truy vấn nhanh hơn 34 lần (1 TB dữ liệu, bộ nhớ S3) so với CSV. Tiếp theo tác giả đã phân tích chi tiết vào kiến trúc lưu trữ hybrid storage của parquet format, parquet metadata và parquet file structure. Cuối bài viết tác giả nêu thêm một số cải tiến tối ưu và áp dụng vào các trường hợp điển hình. Để có thêm góc nhìn chi tiết mời các bạn tham khảo thêm tại bài viết
Introducing Skynet: Infrastructure as Code for Gojek
(by hungngph)
Với hàng triệu khách hàng và tài xế ở khu vực Đông Nam Á, Gojek xây dựng cơ sở hạ tầng của mình trên Google Cloud Platform nhằm phục vụ lượng traffic rất lớn từ những người dùng này. Với hệ thống lớn gồm hơn 250 dự án tạo ra hàng ngàn resource trên cloud, Gojek cần có một phương án hợp lý, vừa cho phép người dùng tự quản lý cơ sở hạ tầng trong khi vẫn thực hiện việc chuẩn hóa code.
Để đáp ứng nhu cầu này, đội ngũ kỹ sư tại đây đã phát triển một hệ thống có tên gọi là Skynet, sử dụng Terraform làm nền tảng để cấp quyền cho người dùng tự provision (cung cấp) và quản lý cơ sở hạ tầng của họ nhưng vẫn đảm bảo được tính centralized (tập trung hóa) của hệ thống.
Để biết thêm chi tiết về công nghệ, cũng như cách phát triển hệ thống mời các bạn đón đọc tại đường dẫn.
Mussel — Airbnb’s Key-Value Store for Derived Data
(by lpv)
Tại Airbnb có nhiều dịch vụ trực tuyến cần quyền truy cập vào dữ liệu đã được tính toán bằng các công cụ xử lý dữ liệu quy mô lớn như Spark hoặc stream event như Kafka. Các dịch vụ này yêu cầu một hệ thống lưu trữ dữ liệu chất lượng cao, với độ tin cậy cao, tính khả dụng, khả năng mở rộng và đảm bảo độ trễ để phục vụ online traffice. Ví dụ: dịch vụ lưu trữ hồ sơ người dùng, truy cập lịch sử hoạt động của người dùng trên Airbnb để mang lại trải nghiệm mang tính cá nhân hóa.
Trong bài đăng này, các tác giả sẽ nói về cách họ tận dụng một số công nghệ mã nguồn mở, bao gồm HRegion, Helix, Spark, Zookeeper và Kafka để xây dựng một key-value storage có thể mở rộng và độ trễ thấp cho hàng trăm trường hợp sử dụng sản phẩm và nền tảng Airbnb.
Góc Lập Trình
Đề ra tuần này: Remove Nth Node From End of List
Cho một danh sách liên kết, hãy xóa nút thứ n tính từ phần tử cuối cùng của danh sách liên kết.
Lời giải đề bài tuần trước: Zigzag Conversion
(by ndaadn)
Đề bài: Yêu cầu viết một hàm nhận vào một chuỗi “s” và số lượng hàng “rows” cho trước, trả về kết quả khi đọc cách viết zigzag tương ứng theo hàng ngang.
Lời giải: Ta có thể giải bài toán bằng cách đơn giản nhất đó là viết lại chuỗi ban đầu dưới dạng ZigZag. Thực hiện duyệt từng ký tự từ trái qua phải, với mỗi ký tự ta kiểm tra nó thuộc về hàng thứ mấy, sau đó nối vào hàng tương ứng. Cài đặt tham khảo bằng java: https://pastebin.com/4xsUH7AZ
Độ phức tạp về thời gian và không gian của cài đặt trên là O(N)
, trong đó N là độ dài chuỗi s.
Ngoài ra, ta còn có một cách làm khác như sau, ta duyệt qua từng ký tự ở hàng trên cùng, sau đó tới hàng tiếp theo, cứ tiếp tục tới hàng cuối cùng.
Các ký tự nằm ở dòng trên cùng (row 0) có index:
k (2*numRows - 2)
Các ký tự nằm ở dòng cuối cùng có index:
k(2*numRows - 2) + numRows - 1
Các ký tự thuộc các dòng i ở giữa có index:
k*(2*numRows-2)+i và (k+1)*(2*numRows-2)-i
Trong đó, k là mọi số nguyên có thể. Với cách làm này, ta có thể tiết kiệm Space Complexity chỉ còn O(1)
History
Ada Lovelace Day (ALD) là một ngày lễ kỷ niệm quốc tế về những thành tựu của phụ nữ trong khoa học, công nghệ, kỹ thuật và toán học (STEM). Thông qua đó khuyến khích nhiều trẻ em gái tham gia vào lĩnh vực STEM cũng như hỗ trợ những phụ nữ đã và đang làm việc trong STEM.
Được thành lập vào năm 2009 bởi Suw Charman-Anderson, hiện nay ALD được tổ chức hàng năm vào thứ Ba của tuần thứ hai của tháng Mười (11/10/2022).
Tên của ngày lễ này được đặt theo tên của Ada Lovelace, người được coi là lập trình viên đầu tiên trong lịch sử.
(by lpv)
Code & Tools
jsoncrack.com - Nếu bạn thường xuyên làm việc với các dữ liệu có dạng JSON, việc đọc các object lớn và được lồng nhau nhiều cấp sẽ là một trong những khó khăn cho bạn. Với JsonCrack, một công cụ giúp bạn trực quan hóa các object JSON thành dạng lược đồ đồ thị để dễ đọc và phân tích hơn. Ngoài ra, JsonCrack còn cho phép người dùng tải xuống các lược đồ đã được phân tích dưới dạng hình ảnh.
Feedback
Bạn đánh giá nội dung số newsletter này thế nào?
(1 = Rất tệ / 5 = Rất tốt)
(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
Before software can be reusable it first has to be usable
– Ralph Johnson