Lambda architecture là một kiến trúc xử lý dữ liệu được giới thiệu bởi Nathan Marz [1] bằng cách kết hợp các ưu điểm của cả batch processing và stream-processing. Lambda architecture được chia thành 3 layers: Batch layer, Speed layer và Serving layer.

https://i1.wp.com/www.jamesserra.com/wp-content/uploads/2016/08/hadoop_summit_2015_takeaway_the_lambda_architecture-picture_1.png?fit=645%2C293&ssl=1

Batch layer đóng vai trò như một ‘data lake’ để lưu trữ toàn bộ dữ liệu thu thập được và xử lý dữ liệu này dưới dạng batch processing (chúng ta cần thiết lập khoảng thời gian cho từng batch như 30min, 3 hours, 1 day,…). Việc sử dụng Batch processing đem lại ưu điểm cho Lambda Architecture vì dữ liệu thu về có thể bị trùng lặp hoặc có thể chứa nhiều thông tin rác do đó cần phải có các bước xử lý và làm sạch dữ liệu. Bên cạnh đó dữ liệu cũng có thể đến trễ do sự cố đường truyền hoặc bị thu thập muộn hơn so với thời gian đăng tải. Ngoài ra kết quả mỗi lần chạy Batch processing sẽ được cập nhật thường xuyên, từ đó giúp nâng cao độ chính xác và sửa kết quả lỗi của Real-time processing trong các lần chạy trước.

Speed layer có nhiệm vụ xử lý thông tin trong thời gian thực, đóng vai trò hỗ trợ cho Batch layer do Batch layer có độ trễ lớn và không đáp ứng được việc đưa ra kết quả xử lý cho dữ liệu mới nhận về. Tuy nhiên kết quả của Speed layer thường không có độ chính xác như ở Batch layer do hạn chế về thời gian xử lý. Ở layer này chúng ta có thể sử dụng các công cụ như Apache Storm, Apache Spark hoặc Apache Flume,…

Serving layer có vai trò lưu trữ các outputs của Batch layer và Speed layer. Ở layer này chúng ta có thể sử dụng một số công cụ như Apache Cassandra, MongoDB hoặc ElasticSearch,…

Nguyên lý hoạt động của Lambda Architecture có thể được tóm tắt theo 5 bước sau [1]:

LA overview1. Tất cả các dữ liệu nhận về đều được đưa vào cả Batch layer và Speed layer

2. Batch layer thực hiện hai chức năng: lưu trữ dữ liệu và tiến hành xử lý dữ liệu với đầu ra là các batch views

3. Serving layer lập chỉ mục (indexing) cho các batch views để có thể truy cập các kết quả này một cách nhanh chóng

4. Speed layer chỉ xử lý các thông tin mới nhất trong thời gian thực để tạo ra các real-time views

5. Hệ thống trả về kết quả cho các truy vấn của người dùng bằng cách kết hợp cả batch views và real-time views.

[1] “Lambda Architecture » λ lambda-architecture.net.” [Online]. Available: http://lambda-architecture.net [Accessed: 09-Jan-2019].

Tháng Một 9, 2019
ITechSeeker