Trong các bài trước, chúng ta đã cùng tìm hiểu và viết các chương trình xây dựng 4 thành phần chính của hệ thống là Data colector and storage (Thu thập và lưu trữ dữ liệu), Batch layer (Xử lý dữ liệu dưới dạng Batch Processing), Speed Layer (Xử lý dữ liệu trong thời gian thực) và Serving layer (Xử lý truy vấn của người dùng). Trong bài này, chúng ta sẽ cùng hoàn thiện project bằng cách viết chương trình để chạy hệ thống dưới dạng Client – Server. Việc chạy chương trình ở phía Server được thực hiện bởi LambdaSMACK với đoạn code sau:

Việc chạy EnvRunner.start(), CassandraDB.runDB(), KafkaTwitterStreaming.run() và AkkaServer.start() đã được trình bày trong bài Thu thập và lưu trữ dữ liệuXử lý truy vấn của người dùng. Ở đây chúng ta dùng hàm runProcessing() để chạy Batch layer và Speed layer nhằm đảm bảo rằng khi bắt đầu chạy Batch Processing thì cũng đồng thời kích hoạt việc xử lý Realtime Processing (bằng cách xóa kết quả của Streaming Query trước và restart lại Streaming Query như đã giải thích trong bài Xử lý dữ liệu trong thời gian thực). Do đó việc chạy realtimeActor sẽ được thực hiện trong BatchProcessingActor và đoạn code của BatchProcessingActor có chút thay đổi so với đoạn code trong bài Xử lý dữ liệu dưới dạng Batch Processing (các bạn tham khảo full code của project trên trang Github tại đây).

Về phía Client, chúng ta viết một UI đơn giản nhằm giúp người dùng có thể truy xuất dữ liệu từ Server và hiện thị kết quả một cách trực quan. UI này được viết bằng cách sử dụng GUI Form trong IntelliJ với 2 files là ClientUI.java và ClientUI.form (các bạn tham khảo code của ClientUI.java tại đây). Chạy chương trình ClientUI.java để hiện thị UI rồi nhấn vào nút “Top HashTag” ta được kết quả sau:

Đợi một thời gian rồi nhấn lại nút “Top HashTag”, ta thấy số lượng hashtag và giá trị Count của một số hastag tăng lên do kết quả luôn được cập nhật liên tục (như đã giải thích trong bài Xử lý truy vấn của người dùng).

Như vậy, chúng ta đã hoàn thành việc xây dựng một hệ thống xử lý thông tin bằng cách ứng dụng Lambda Architecture với SMACK stack. Các bạn có thể tham khảo full code của project này trên trang Gihub của ITechSeeker tại đây.

Tháng Ba 18, 2019
ITechSeeker