View profile

#231 - Gojek scale Geo-Search gấp 10 lần ra sao?

Grokking Vietnam
Grokking Vietnam
Dạo gần đây, team newsletter của Grokking hơi bận 1 chút xíu, nên thi thoảng các bạn sẽ thấy newsletter được gửi hơi trễ so với bình thường, hoặc là đôi khi miss hẳn 1 tuần. Ngoài ra team cũng muốn gửi những bài viết chất lượng nhất tới bạn đọc, quá trình chuẩn bị vì thế kéo dài hơn rất nhiều so với trước đây.
Team sẽ cố gắng và gửi đều đặn hơn vào 8h tối mỗi thứ 5 hàng tuần các bạn nhé. Xin cảm ơn các bạn đọc đã gửi những phản hồi cũng như quan tâm tới Grokking Newsletter 🙏 
Trong số này, chúng ta cùng tìm hiểu về:
  • Quy trình Continuous Deployment (CD) tại Amazon
  • Cách Gojek scale dịch vụ tìm kiếm (Geo-Search) theo địa điểm 10 lần
  • Quá trình tìm kiếm Go issue trên ARM dẫn tới TiDB bị treo
  • Lời giải bài Find Root of N-Ary Tree
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.

Những bài viết hay
Góc Lập Trình
Đề ra tuần này: Time Based Key-Value Store
(by ndaadn)
Thiết kế và cài đặt một cấu trúc dữ liệu key-value theo mốc thời gian (timestamp), có thể lưu trữ nhiều giá trị cho cùng một key tại các timestamp khác nhau và truy xuất giá trị của key tại một timestamp nhất định.
Cấu trúc dữ liệu có 2 hàm:
  • Hàm void set (String key, String value, int timestamp): Lưu trữ key với giá trị value tại mốc thời gian timestamp.
  • Hàm String get (String key, int timestamp): Trả về value của key. Nếu có nhiều giá trị của key ứng với các timestamp khác nhau, trả về giá trị ứng với mốc thời gian nhỏ hơn (hoặc bằng) gần nhất với tham số timestamp. Nếu không có giá trị nào, trả về chuỗi rỗng “”.
Lời giải đề bài tuần trướcFind Root of N-Ary Tree
(by ndaadn)
Ta có thể nhận thấy rằng chỉ có nút gốc không là nút con của bất kì nút nào khác trong cây. Vì vậy, để tìm nút gốc của cây, chỉ cần tìm danh sách tất cả các nút con của cây, nút còn lại duy nhất không nằm trong danh sách này chính là nút gốc.
Ta có thể sử dụng cấu trúc dữ liệu HashSet để lưu danh sách các nút con của cây. Cài đặt bằng Java cho lời giải trên như sau:
Độ phức tạp thời gian của giải thuật là O(N), độ phức tạp không gian là O(N). 
Ngoài ra vì mỗi nút trong cây mang một giá trị duy nhất, ta có thể tối ưu lời giải trên, giảm xuống độ phức tạp không gian xuống O(1) bằng cách không sử dụng HashSet để lưu danh sách các nút con, mà có thể tính tổng giá trị các nút con và tổng giá trị tất cả các nút trong cây. Cuối cùng giá trị của nút gốc sẽ bằng hiệu của 2 giá trị tên.
History
Có bao giờ bạn tự hỏi những mẫu tuyển dụng cách đây 20 năm sẽ trông như thế nào? Hãy xem Jeff Bezos tuyển dụng 1 Unix Developer vào tháng 8/1994 như thế nào nhé (source: twitter)
Code & Tools
  • Kafka Streams - Kafka Streams là một công cụ xử lý streaming được thiết kế với khả năng tích hợp chặt chẽ với Apache Kafka. Nhiều tính năng của Kafka Streams được xây dựng dựa trên những ưu điểm nổi trội về lưu trữ hay tầng message của Kafka như khả năng xử lý có trạng thái (stateful processing), khả năng chịu lỗi (fault tolerance)
  • Apache Superset - Apache Superset là một công cụ miễn phí giúp xây dựng các dashboards một cách nhanh, nhẹ, trực quan với rất nhiều tùy chọn giúp người dùng dễ dàng khám phá và hình dung dữ liệu của họ. Superset cung cấp rất nhiều các tùy chọn biểu đồ cho người dùng, từ dạng biểu đồ đường đơn giản (line charts) cho đến biểu đồ không gian địa lý chi tiết cao (geospatial charts).
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
“A conscious human is driven by their conscience, not popular opinion.”
― Suzy Kassem, Rise Up and Salute the Sun: The Writings of Suzy Kassem
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