Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
1,32 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO ĐỒ ÁN Nghiên cứu xây dựng hệ thống notification cho ứng dụng Lotus app tin tức khác GVHD: TS Huỳnh Ngọc Tín Sinh viên: 16520549 Trần Hồng Kha LỜI CẢM ƠN Trong q trình học tập rèn luyện khoa Kĩ thuật phần mềm trường Đại học Công nghệ thông tin TP.HCM, em trang bị kiến thức bản, kỹ thực tế để hồn thành đồ án mơn học Em xin gửi lời cảm ơn chân thành tới thầy “Huỳnh Ngọc Tín” quan tâm, hướng dẫn truyền đạt kiến thức kinh nghiệm cho em suốt thời gian học tập thực mơn Đồ án Trong q trình làm đồ án mơn học, cố gắng hồn thành mục tiêu nghiên cứu, nhiên không tránh khỏi sai sót, hạn chế Em mong nhận góp ý thầy để hồn thiện Em xin chân thành cảm ơn TP HỒ CHÍ MINH, THÁNG NĂM 2021 GVHD: TS Huỳnh Ngọc Tín MỤC LỤC LỜI CẢM ƠN MỤC LỤC DANH SÁCH HÌNH VẼ BỐ CỤC BÁO CÁO CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI Lý chọn đề tài Giải pháp Mục tiêu đề tài Đối tượng phạm vi nghiên cứu Ý nghĩa khoa học thực tiễn đề tài CHƯƠNG 2: CÁC NGHIÊN CỨU LIÊN QUAN 11 DESIGN A SYSTEM NOTIFICATION 11 1.1 Hiểu vấn đề thiết lập phạm vi thiết kế 12 1.2 Đề xuất thiết kế high-level cách buy-in 13 1.3 Design deep dive (Chi tiết thiết kế) 19 APACHE KAFKA 23 2.1 Kafka gì? 23 2.2 Tại sử dụng Kafka? 24 2.3 Cấu trúc Kafka chi tiết 25 2.4 Workflow 27 2.5 Use cases 28 MySQL Replication 30 3.1 Replication gì? 30 3.2 Vậy Replication hoạt động MySQL 31 3.3 Nên dùng lúc nào? Và ứng dụng thực tiễn 31 Java – Spring Boot 34 4.1 Giới thiệu svề Spring Boot 34 4.2 Vậy Spring Boot gì? Tại phát triển nhanh đến thế? 35 4.3 Những lợi Spring Boot 35 4.4 Tại nên sử dụng Spring Boot? 36 CHƯƠNG HƯỚNG TIẾP CẬN 37 GVHD: TS Huỳnh Ngọc Tín Quy trình thu thập thông tin 37 Chi tiết luồng notification hệ thống 38 Bổ sung giải pháp nêu trình nghiên cứu 39 CHƯƠNG 4: HIỆN THỰC ĐỒ ÁN 40 CHƯƠNG 5: THỰC NGHIỆM, ĐÁNH GIÁ 41 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 42 Kết luận 42 Hướng phát triển 42 TÀI LIỆU THAM KHẢO 43 GVHD: TS Huỳnh Ngọc Tín DANH SÁCH HÌNH VẼ Hình ảnh 1: Ảnh minh họa notification điện thoại Hình ảnh 2: Ảnh minh họa loại notification 11 Hình ảnh 3: Ảnh minh họa loại notification hoạt động 13 Hình ảnh 4: Ảnh minh họa quy trình thu thập thơng tin 15 Hình ảnh 5: Ảnh minh họa table database 15 Hình ảnh 6: Ảnh minh họa HIGH-LEVEL DESIGN 16 Hình ảnh 7: Ảnh minh họa HIGH-LEVEL DESGIN (Đã cải thiện) 17 Hình ảnh 8: Ảnh minh họa notification system trì notification data database 19 Hình ảnh 9: Ảnh minh họa event tracking 21 Hình ảnh 10: Ảnh minh họa Updated Design 22 Hình ảnh 11: Ảnh minh họa cấu trúc Kafka đơn giản 23 Hình ảnh 12: Ảnh minh họa cấu trúc Kafka chi tiết 25 Hình ảnh 13: Ảnh minh họa Consumer Group hoạt động 26 Hình ảnh 14: Ảnh minh họa luồng Message Kafka 27 Hình ảnh 15: Ảnh minh họa mơ hình Master-Slave thơng thường 30 Hình ảnh 16: Ảnh minh họa MySQL hoạt động 31 Hình ảnh 17: Ảnh minh họa số liệu thống kê Top Java Web Frameworks 34 Hình ảnh 18: Ảnh minh họa Lợi Spring Boot 35 GVHD: TS Huỳnh Ngọc Tín BỐ CỤC BÁO CÁO CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI Nội dung chương giới thiệu tổng quan lý chọn đề tài, mục tiêu đề tài, đối tượng phạm vi, ý nghĩa khoa học thực tiễn đề tài CHƯƠNG 2: CÁC NGHIÊN CỨU LIÊN QUAN Nội dung chương trình bày nghiên cứu kiến thức liên quan tới đề tài CHƯƠNG 3: HƯỚNG TIẾP CẬN Nội dung chương trình bày hướng tiếp cận đề tài cách khách quan nêu lên vấn đề thực tế gặp phải CHƯƠNG 4: HIỆN THỰC ĐỒ ÁN Nội dung chương trình bày trình cài đặt triển khai hệ thống CHƯƠNG 5: THỰC NGHIỆM, ĐÁNH GIÁ Nội dung chương trình bày q trình thực nghiệm từ đưa nhận xét, kết luận đánh giá GVHD: TS Huỳnh Ngọc Tín CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI Lý chọn đề tài Khi người sử dụng điện thoại, hẳn có vài lần phải gỡ bỏ ứng dụng lượng thơng báo ứng dụng gửi tới q phiền khơng đủ kiên nhẫn để tới phần Setting “turn off” thông báo ứng dụng Không giống Text Message hay gửi email link tới địa cụ thể mà Push Notification (bắn thông báo trên) link thẳng tới thiết bị có cài ứng dụng Việc gửi Push Notification thái dẫn tới phản tác dụng người dùng cảm thấy phiền nên chìa khóa cho việc sử dụng Push Notification hiệu quả, cách để Notification thân ln chào đón GVHD: TS Huỳnh Ngọc Tín Hình ảnh 1: Ảnh minh họa notification điện thoại Nếu sử dụng cách, Push Notification trở nên giá trị, có đặc trưng riêng mà cách thức khác khơng có Đầu tiên khơng giống với email hay text message, Push Notification không sử dụng hộp thư đến, yếu tố gây phiền tối cho người dùng Ngồi chúng khơng thể vơ tình chui vào hịm thư rác giống bạn thường gặp sử dụng email Và điều cuối quan trọng, phải cần có số điện thoại hay địa email gửi Push Notification Đối với ứng dụng tin tức, khó để đạt tỉ lệ tương tác mạnh mẽ người dùng Người đọc khơng có dành riêng tương tác cho nguồn – họ thích cập nhật từ phương tiện truyền thơng xã hội, người đưa tin tổng hợp tin tức Thế nên làm cách để biên tập viên tiếp thị ứng dụng tin tức giữ chân khán giả? Câu trả lời sử dụng Push Notification cho app tin tức họ, đặc biệt “Breaking news” cho người đọc nhanh Nhận biết cần thiết việc thiết kế hệ thống Push Notification trên, em vận dụng kiến thức chuyên môn thân với kiến thức thầy hướng dẫn để xây dựng nên hệ thống Notification bắn thơng báo cho ứng dụng tin tức từ tăng trải nghiệm người dùng, kéo lượng lớn người đọc, hỗ trợ việc marketing,… Giải pháp Ngoài việc xây dựng hệ thống Notification phục vụ cho ứng dụng tin tức trên, phải sử dụng chúng cách ✓ Notification phải đặc trưng, phải riêng biệt: Nội dung phải khiến người đọc có lý muốn xem nhận chúng cách miễn cưỡng ✓ Custom alert sound (Tùy chọn): Một điểm cộng để gây ý người đọc, tạo khác biệt với ứng dụng khác GVHD: TS Huỳnh Ngọc Tín ✓ Khoanh vùng người đọc muốn hướng đến: Giúp tránh trường hợp người nhận notification lợi ích tin tức nhận từ notification Thậm chí cịn cần xác định thời gian gửi notification ngày để phù hợp với thời gian lúc sử dụng điện thoại người dùng ✓ Lựa chọn gửi notification dựa tần xuất người đọc truy cập ứng dụng: Cân nhắc gửi notification đến người không mở ứng dụng để đọc tuần, tuần,… Mục tiêu đề tài Sau dựa vào lý chọn đề tài giải pháp trên, em hiểu việc xây dựng hệ thống Notification tốt quan trọng Đề tài mà em thực hiện: ✓ Nghiên cứu ảnh hưởng Notification tới người dùng ✓ Tìm hiểu cách thiết kế hệ thống Notification cho ứng dụng di động công nghệ liên quan ✓ Xây dựng hệ thống tích hợp giải pháp nêu , so sánh hiệu thực tế rút nhận xét, kết luận Đối tượng phạm vi nghiên cứu Đối tượng hướng tới app tin tức cần gia tăng, phân loại người đọc, tăng tốc độ tin tức quan trọng tới người đọc Nghiên cứu thực tế thông báo từ ứng dụng tin tức phổ biến, từ phân tích nội dung thơng báo Hành vi người dùng, thơng tin phân tích dự đốn dùng để phân tích làm tăng trải nghiệm người dùng Ý nghĩa khoa học thực tiễn đề tài Việc xây dựng hệ thống Notification cho ứng dụng tin tức, giúp hình thành kho liệu hành vi người dùng, phân tích văn bản, phân tích cảm xúc người dùng Từ đưa thuật tốn phù hợp với độ xác tối ưu Ngồi tăng hiệu hoạt động số doanh nghiệp GVHD: TS Huỳnh Ngọc Tín 10 GVHD: TS Huỳnh Ngọc Tín ✓ Metrics and logging Kafka lý tưởng để thu thập liệu logging trường hợp nhiều ứng dụng tạo loại message Các ứng dụng publish số liệu thường xuyên cho topic Kafka số liệu sử dụng hệ thống để theo dõi cảnh báo Ngoài sử dụng hệ thống offline Hadoop để thực phân tích số liệu dài hạn (phân tích tăng trưởng) Các log message publish theo cách chuyển tới hệ thống tìm kiếm logging chuyên dụng Elastisearch ứng dụng phân tích bảo mật ✓ Commit log Các thay đổi sở liệu publish vào Kafka ứng dụng dễ dàng theo dõi luồng để nhận cập nhật trực tiếp chúng xuất Luồng thay đổi sử dụng để nhân cập nhật sở liệu vào hệ thống từ xa để hợp thay đổi từ nhiều ứng dụng vào chế độ xem 29 GVHD: TS Huỳnh Ngọc Tín MySQL Replication 3.1 Replication gì? Đầu tiên Replication có nghĩa “nhân bản" , nghĩa có phiên giống hệt phiên tồn tại, sử dụng Thế nên nói MySQL Replication trình nhân liệu MySQL cách chép tự động từ master tạo sở liệu slave Điều hữu ích với việc tạo điều kiện lưu cho liệu, phân tích mà khơng sử dụng sở liệu chính, đơn giản phương pháp để mở rộng ra, Để dễ hiểu hơn, sau ví dụ mơ hình master-slave thơng thường Master nhiều slaves Hình ảnh 15: Ảnh minh họa mơ hình Master-Slave thơng thường Trong request write thực thi Master, server Slave phép thực request read (read-only replica) 30 GVHD: TS Huỳnh Ngọc Tín 3.2 Vậy Replication hoạt động MySQL Hình ảnh 16: Ảnh minh họa MySQL hoạt động ✓ Bất sở liệu master sửa đổi ghi vào tệp - Binary Log Binlog (Được thực luồng clients thực thi truy vấn sửa đổi sở liệu) ✓ Slave có luồng gọi I/O thread có nhiệm vụ đọc Binary log từ ghi vào tệp - Replay Log ✓ Ngồi Slave có luồng khác gọi SQL thread có nhiệm vụ liên tục đọc Replay Log áp dụng cho slave server 3.3 Nên dùng lúc nào? Và ứng dụng thực tiễn Trước tiên phải hiểu MySQL Replication giải pháp giải toán tải hệ thống sở liệu tất Vậy để mở rộng hệ thống có cách nào? Có phương pháp scale up scale out ✓ Scale up Làm máy chủ phục vụ nhiều số lượng kết nối, truy vấn Có thể hiểu giá trị 1/(số kết nối phục vụ) nhỏ tốt có phương pháp cho việc này: 31 GVHD: TS Huỳnh Ngọc Tín • • Tăng phần cứng cho máy chủ (“Gấp đơi tốt hơn, khơng đủ tốt gấp đơi tiếp") - Như với CPU core, RAM 8GB phục vụ a câu truy vấn với máy chủ CPU core - 16 core , RAM 16GB - 32GB phục vụ 2a - 4a câu truy vấn Optimize ứng dụng, câu truy vấn - Như 5s để lấy liệu sau trả lại tài nguyên cho hệ thống, ta sử dụng phương pháp với 1s ta lấy liệu trả lại tài nguyên cho hệ thống ✓ Scale out Giải pháp tăng số lượng server dùng giải pháp load balancer (Cân tải việc tối ưu hóa hệ thống) để phân phối truy vấn nhiều server - Như server có khả phục vụ a truy vấn Nếu dựng thêm server có cấu hình tương tự phục vụ 5a truy vấn lúc Như nói MySQL Replication giải pháp giải tốn q tải hệ thống thuộc cách cách trên? Scale out, sao? Bởi với nhân (slave) ứng với server giống với khái niệm scale out nêu Sau toán ứng dụng thực tế mà MySQL Replication áp dụng tốt: ✓ Scale Read (Áp dụng cho đồ án) Thường gặp ứng dụng mà số truy vấn read nhiều write, tỉ lệ tầm 80/20 Với Scale Read có Master instance phục vụ cho read/write Có thể có nhiều Slave instance phục vụ cho read Thường gặp trang báo, tin tức, ứng dụng thương mại điện tử ✓ Scale Report Một số hệ thống có phép số người (leader, manager, người làm report, thống kế, data) truy cập vào liệu để phục vụ cho công việc họ nguy hiểm: 32 GVHD: TS Huỳnh Ngọc Tín • • Vơ tình chỉnh sửa làm sai liệu ( Có quyền insert, update) Vơ tình thực thi truy vấn tốn tài nguyên, thời gian truy vấn làm treo hệ thống Nên việc làm máy chủ data report làm giảm thiểu rủi ro ✓ Real time backup Với sở liệu lớn nên việc backup thực thường xuyên (hàng giờ, hàng phút có hàng giây) việc real time backup giải pháp bổ sung cho offline backup, chạy đồng thời phương pháp để đảm bảo an toàn cho liệu Các ứng dụng thường nên sử dụng phương pháp này: Các ứng dụng giao dịch tài chính, tốn, thương mại điện tử Ngồi replication khác với backups (sao lưu)? Có thể nói replication tốt Khi mà backups “snapshot” sở liệu thời gian định, replication không giữ thời gian thực, mà hỗ trợ tránh việc tải việc read write cho client Nên tùy vào hồn cảnh sử dụng replication backups sử dụng để giải toán 33 GVHD: TS Huỳnh Ngọc Tín Java – Spring Boot 4.1 Giới thiệu svề Spring Boot Theo số liệu thống kê Top Java Web Frameworks sử dụng nhiều tính đến năm 2016 từ LZEBELLABS: Hình ảnh 17: Ảnh minh họa số liệu thống kê Top Java Web Frameworks Ta thấy rõ non trẻ tuổi đời (phiên thức v1.0 phát hành năm 2014) Spring Boot có bước phát triển vô mạnh mẽ để vị trí thứ bảng xếp hạng, sau Framework Spring MVC 34 GVHD: TS Huỳnh Ngọc Tín 4.2 Vậy Spring Boot gì? Tại phát triển nhanh đến thế? ✓ ✓ ✓ Spring Boot sáng kiến lớn tồn Spring Framework đến từ nhóm Spring Team Spring Boot xây dựng tảng Spring giảm tải cấu hinh(configuration) cho q trình phát triển nhanh chóng hết Spring Boot cung cấp mặc định đoạn code annotation configuration để phát triển dự án Spring thời gian ngắn 4.3 Những lợi Spring Boot ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ Nó dễ dàng cho việc phát triển ứng dụng dựa Spring với Java Groovy Nó giảm thiểu thời gian phát triển, tăng suất phát triển Tránh việc phải viết nhiều mẫu code, cấu hình Annotaion XML Dễ dàng việc tích hợp với hệ sinh thái Spring như: Spring JDBC, Spring ORM, Spring Data, Spring Security Nó theo cách tiếp cận "Opinionated Defaults Configuration" để giảm effort trình phát triển Nó cung cấp Embedded HTTP servers Tomcat, Jetty để phát triển test cách dễ dàng, Nó cung cấp cơng cụ CLI (command Line Interface) cho việc phát triển test ứng dụng nhanh chóng dễ dàng từ command line Nó cung cấp nhiều plugins để phát triển test ứng dụng Spring Boot nhanh chóng sử dụng cơng cụ Build Maven Gradle Cung cấp nhiều plugins để làm việc với embedded and in-memory databases Hình ảnh 18: Ảnh minh họa Lợi Spring Boot 35 GVHD: TS Huỳnh Ngọc Tín 4.4 Tại nên sử dụng Spring Boot? Việc ứng dụng Spring Boot giúp lập trình viên tập trung tốt đến mục tiêu viết code thay phải lo nghĩ nhiều đến kỹ thuật code với Node.js Bản thân Spring Boot chứa đựng nhiều library bên trong, cấu trúc code trở nên chuẩn mực nên không cần phải bận tâm đến việc code cho thật tốt Do đó, thân có nhiều thời gian để tập trung vào logic sản phẩm Spring Boot cải tiến tuyệt vời Spring, cải thiện nhiều khâu rườm rà đến từ Spring Hơn thế, trình học hỏi tiếp thu Spring Boot trở nên dễ dàng nhiều 36 GVHD: TS Huỳnh Ngọc Tín CHƯƠNG HƯỚNG TIẾP CẬN Sau nghiên cứu tìm hiểu cơng nghệ liên quan, chương trình bày nội dung cách tiếp cận Quy trình thu thập thơng tin Thế nên để gửi notification, cần phải thu thập mã thiết bị di động, SĐT email Khi người dùng cài đặt ứng dụng đăng ký lần đầu tiên, API servers thu thập thơng tin người dùng lưu database Các table database cho thấy liệu đơn giản hóa để lưu trữ thơng tin Email SĐT lưu vào user table, mã thiết bị di động lưu vào device table người dùng có nhiều thiết bị, nên có nghĩa phải push notification tới tất thiết bị người dùng 37 GVHD: TS Huỳnh Ngọc Tín Chi tiết luồng notification hệ thống (1) – (4): Apache Kafka (5) APNs or Fireabase Cloud Messaging (FCM) Khi mà có notification cần gửi đi, notification server kafka truy vấn tới database cache để lấy liệu cần thiết (email, số điện thoại, mã thiết bị) cài đặt thông báo (nội dung) sau notification gửi tới hàng chờ kèm với liệu người dùng Tiếp theo có workers (Consumer Kafka) pull message liên tục để xử lý notification (Validate liệu, processing format,…) Tiếp đến bắn lên APNs FCM tới hình thơng báo thiết bị người dùng 38 GVHD: TS Huỳnh Ngọc Tín Bổ sung giải pháp nêu trình nghiên cứu ✓ Bổ sung thêm việc xác thực thông tin người dùng Kafka rate limit để hạn chế gửi nhiều khoảng thời gian ✓ Bổ sung thêm Notification template Consumer Kafka để tiết kiệm thời gian xây dựng đặc trưng riêng notification ứng dụng 39 GVHD: TS Huỳnh Ngọc Tín CHƯƠNG 4: HIỆN THỰC ĐỒ ÁN 40 GVHD: TS Huỳnh Ngọc Tín CHƯƠNG 5: THỰC NGHIỆM, ĐÁNH GIÁ 41 GVHD: TS Huỳnh Ngọc Tín KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Sau trình thực đề tài, chưa hoàn thiện hết, em đạt kết sau: ✓ Hiểu cách notification system hoạt động ✓ Hiểu công nghệ liên quan tới thực tế Kafka ✓ Trau dồi thêm kiến thức chuẩn bị hành trang cho việc làm sau Hướng phát triển Qua trình thực đề tài trên, chưa hoàn thiện đủ theo mục tiêu đề ra, em thấy hệ thống cịn nhiều thiếu sót thực tế nhiều vấn đề hơn, em thấy hệ thống cịn phát triển hồn thiện là: ✓ Tăng trải nghiệm người dùng qua template không tiết kiệm thời gian đặc trưng notification custom alert ✓ Lựa chọn khung sử dụng người dùng để gửi, tránh việc gửi vào người dùng khơng thể đọc ngủ ✓ Có hệ thống giám sát trình notification hoạt động tránh rủi ro khơng đáng có ✓ Thu thập notification mà người dùng ưa thích, ưa sử dụng để đưa phân tích phù hợp cho chủ doanh nghiệp sở hữu ứng dụng tin tức 42 GVHD: TS Huỳnh Ngọc Tín TÀI LIỆU THAM KHẢO [1] System Design Interview An Insider’s Guide by Alex Yu [2] Kafka The Definitive Guide Real-Time Data and Stream Processing at Scale by Neha Narkhede, Gwen Shapira, Todd Palino 43 GVHD: TS Huỳnh Ngọc Tín ... xây dựng nên hệ thống Notification bắn thơng báo cho ứng dụng tin tức từ tăng trải nghiệm người dùng, kéo lượng lớn người đọc, hỗ trợ việc marketing,… Giải pháp Ngoài việc xây dựng hệ thống Notification. .. thực hiện: ✓ Nghiên cứu ảnh hưởng Notification tới người dùng ✓ Tìm hiểu cách thiết kế hệ thống Notification cho ứng dụng di động công nghệ liên quan ✓ Xây dựng hệ thống tích hợp giải pháp nêu ,... tượng phạm vi nghiên cứu Đối tượng hướng tới app tin tức cần gia tăng, phân loại người đọc, tăng tốc độ tin tức quan trọng tới người đọc Nghiên cứu thực tế thông báo từ ứng dụng tin tức phổ biến,