Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 80 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
80
Dung lượng
2,74 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - NGUYỄN MẠNH CƯỜNG KIẾN TRÚC MICROSERVICES VÀ HỆ THỐNG SÁCH NÓI TRỰC TUYẾN Chuyên ngành: Kỹ thuật phần mềm LUẬN VĂN THẠC SĨ KỸ THUẬT HÀ NỘI - 2018 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - NGUYỄN MẠNH CƯỜNG KIẾN TRÚC MICROSERVICES VÀ HỆ THỐNG SÁCH NÓI TRỰC TUYẾN Chuyên ngành: Kỹ thuật phần mềm LUẬN VĂN THẠC SĨ KỸ THUẬT NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Nguyễn Thị Thu Trang HÀ NỘI - 2018 LỜI CẢM ƠN Để hoàn thành luận văn tốt nghiệp này, em xin chân thành cảm ơn cô hướng dẫn luận văn tốt nghiệp, Tiến sĩ Nguyễn Thị Thu Trang, Bộ môn Công nghệ phần mềm, Trường Đại học Bách Khoa Hà Nội Cơ nhiệt tình hướng dẫn, truyền đạt kiến thức cần thiết định hướng cho em trình thực đề tài Em chân thành cảm ơn thầy, cô Viện Công nghệ Thông tin Truyền thông - Trường Đại học Bách Khoa Hà Nội truyền đạt kiến thức, định hướng trình học trường Em xin chân thành cảm ơn thầy Nguyễn Thanh Hùng - Trưởng Bộ môn Công nghệ phần mềm cho phép, tạo điều kiện thuận lợi để em làm luận văn phịng Labs cơng ty Vbee Đồng thời em xin gởi lời cảm ơn chân thành đến bạn làm việc phòng Labs công ty Vbee giúp đỡ nhiều mặt kỹ thuật suốt thời gian làm luận văn Dù cố gắng luận văn chắn không tránh khỏi nhiều thiếu sót, em mong nhận ý kiến đóng góp thầy Em xin chân thành cảm ơn! i LỜI CAM ĐOAN Tôi - Nguyễn Mạnh Cường - cam kết luận văn công trình nghiên cứu thân tơi hướng dẫn TS Nguyễn Thị Thu Trang Các kết nêu luận văn trung thực, chép tồn văn cơng trình khác Hà Nội, ngày 20 tháng 10 năm 2018 Học viên Nguyễn Mạnh Cường ii LỜI CAM ĐOAN .ii DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ v DANH MỤC HÌNH vii DANH MỤC BẢNG ix MỞ ĐẦU Nội dung luận văn CHƯƠNG 1: Khảo sát phân tích u cầu hệ thống sách nói 1.1 Khảo sát trạng 1.2 Tổng quan dịch vụ hệ thống 1.2.1 Dịch vụ quản lý xác thực người dùng SSO 1.2.2 Dịch vụ quản lý sách 10 1.2.3 Dịch vụ quản lý phân quyền người dùng 11 1.3 Đặc tả chức 12 1.3.1 Đặc tả use case “Đăng nhập” 13 1.3.2 Đặc tả use case “Quản lý sách” 14 1.3.3 Đặc tả use case “Quản lý phân quyền” 19 1.4 Kết chương 23 CHƯƠNG 2: Thiết kế kiến trúc MSA công nghệ sử dụng 24 2.1 Kiến trúc Microservices 24 2.2 Xác thực SSO 32 2.3 Công nghệ NodeJS 32 2.4 Công nghệ Java 33 2.5 Công nghệ ReactJS 36 2.6 Cơ sở liệu MongoDB 37 2.7 Kết chương 40 CHƯƠNG 3: Các giải pháp msa bật phát triển ứng dụng sách nói 41 3.1 Giải pháp MSA hệ thống sách nói 41 3.1.1 Thiết kế kiến trúc tổng quan 42 3.1.2 Thiết kế dịch vụ quản lý sách nói 44 iii 3.1.3 Thiết kế dịch vụ quản lý phân quyền 45 3.1.4 Dịch vụ xác thực người dùng SSO 47 3.1.5 Cổng trung gian 48 3.1.6 TTS Engine 50 3.2 Giải pháp phân quyền động .50 3.3 Phát triển ứng dụng 52 3.3.1 Thiết kế sở liệu 52 3.3.2 Xây dựng phần mềm 55 3.3.2.1 Cấu trúc chương trình dịch vụ quản lý sách .55 3.3.2.2 Cấu trúc chương trình dịch vụ phân quyền .56 3.3.2.3 Cấu trúc chương trình xác thực người dùng SSO .58 3.3.2.4 Các API sử dụng cho dịch vụ .58 3.3.3 Giao diện web 60 3.3.4 Triển khai .64 3.4 Kết chương 64 KẾT LUẬN 66 DANH MỤC CÁC TÀI LIỆU THAM KHẢO 68 iv DANH MỤC CÁC TỪ VIẾT TẮT VÀ THUẬT NGỮ Từ viết tắt, thuật ngữ Từ viết đầy đủ MSA MicroServices Architecture SSO Single Sign On API Application Programming Interface REST Representational State Transfer SOA Services Orient Achitecture TTS Text To Speech CRM Customer Relationship Management ERP Enterprise Resource Planning UC Use Case CAP Consistency, Availability, Partition tolerance WSM Web Service Messaging ESB Enterprise Service Bus DS Distributed Systems CDN Content delivery network SOAP Simple Object Access Protocol CORBA Common Object Request Broker Architecture RPC Remote Procedure Calls JMS Java Message Service JSON JavaScript Object Notation JVM Java Virtual Machine JMI Java remote method invocation IoC Inverstion Of Control DOM Document Object Model DI Dependency Injection MVC Model View Controller DAO Data Access Object v CRUD JSP JDBC Create, Read, Update, Delete JavaServer Page Java Database Connectivity JSX Javascript XML XML eXtensible Markup Language JSE HTML UI Java EE URI ReactJS ECMAScript Java Standard Edition Hypertext Markup Language User Interface Java Enterprise Edition Uniform Resource Identifier JavaScript library build User interfaces European Computer Manufacturers Association Script vi DANH MỤC HÌNH Hình 1.1 Tổng quan chức Hình 1.2 Biểu đồ Use case tổng quan Hình 1.3 Biểu đồ cho use case đăng nhập hệ thống Hình 1.4 Biểu đồ cho use case dịch vụ quản lý sách 10 Hình 1.5 Biểu đồ cho use case dịch vụ quản lý phân quyền .12 Hình 2.1 Ứng dụng gồm nhiều dịch vụ .24 Hình 2.2 Kiến trúc Microservices 26 Hình 2.3 Sử dụng REST API cho microservices 27 Hình 2.4 Tất microservices xuất qua API Gateway .28 Hình 2.5 Bộ chứa đảo ngược quyền điều khiển ứng dụng .35 Hình 2.6 Các thành phần ứng dụng ReactJS 36 Hình 2.7 Cơ chế hoạt động Sharding 39 Hình 3.1 Kiến trúc tổng quan hệ thống sách 43 Hình 3.2 Thiết kế dịch vụ quản lý sách .45 Hình 3.3 Thiết kế dịch vụ quản lý phân quyền 46 Hình 3.4 Thiết kế dịch vụ xác thực người dùng SSO 47 Hình 3.5 Tương tác xác thực người dùng 48 Hình 3.6 Thiết kế cổng trung gian .49 Hình 3.7 Thuật tốn phân quyền động .52 Hình 3.8 Cơ sở liệu dịch vụ quản lý sách dịch vụ quản lý phân quyền 54 Hình 3.9 Cơ sở liệu SSO 54 Hình 3.10 Cấu trúc dịch vụ sách 56 Hình 3.11 Cấu trúc giao diện quản lý sách 56 Hình 3.12 Cấu trúc dịch vụ quản lý phân quyền 57 Hình 3.13 Cấu trúc giao diện quản lý phân quyền 57 Hình 3.14 Cấu trúc xác thực SSO 58 Hình 3.15 Giao diện đăng nhập hệ thống 61 Hình 3.16 Trang dịch vụ sách 61 vii Hình 3.17 Trang quản lý thể loại sách 61 Hình 3.18 Trang quản lý sách 62 Hình 3.19 Trang quản lý tác giả 62 Hình 3.20 Trang quản lý người dùng 63 Hình 3.21 Trang quản lý trang .63 Hình 3.22 Trang quản lý vai trị 63 Hình 3.23 Trang quản lý tính 64 viii 3.3.2 Xây dựng phần mềm - Môi trường phát triển: Hệ điều hành Windows - Cơng cụ lập trình: Visual Studio Code, Eclipse - Ngơn ngữ lập trình chính: Java, JavaScript, ECMAScript - Quy chuẩn viết mã nguồn: toàn mã nguồn viết tuân theo số quy chuẩn thông dụng tương ứng với ngôn ngữ - Quy tắc đặt tên REST API: Theo chuẩn RESTful API, gồm có phương thức HTTP request là: GET (dùng cho thao tác lấy liệu, truy vấn), POST (dùng cho việc cập nhật liệu, gửi liệu có tính bảo mật), PUT (dùng cho việc tạo liệu), DELETE (dùng để xóa liệu) Ngồi ra, chuẩn RESTful có số nguyên tắc nên tuân theo việc đặt tên nên sử dụng danh từ thay động từ, sử dụng số nhiều thay số ít, sử dụng dấu gạch chéo để biểu thị mối quan hệ phân cấp, phiên hóa API 3.3.2.1 Cấu trúc chương trình dịch vụ quản lý sách a Phần Back-end Dịch vụ sách sử dụng ngôn ngữ Java Framework Spring có cấu trúc bao gồm gói controller xử lý yêu cầu đến yêu cầu phản hồi, gói service bao gồm hàm xử lý thông tin chi tiết sách, tác giả, thể loại xử lý giọng đọc, chuẩn hóa chương sách, có tổng hợp sách, gói repository sử dụng giao diện tương tác với sở liệu thơng qua gói Entities, mơ tả phần thiết kế hình 3.10 chi tiết gói chương trình dịch vụ sách 55 Hình 3.10 Cấu trúc dịch vụ sách b Phần Front-end Phần giao diện quản lý sách sử dụng công công nghệ JSP chèn mã Java vào trang HTML kết hợp CSS Bootstrap, hình 3.11 chương trình giao diện quản lý sách Hình 3.11 Cấu trúc giao diện quản lý sách 3.3.2.2 Cấu trúc chương trình dịch vụ phân quyền a Phần Back-end 56 Dịch vụ quản lý phân quyền sử dụng Node.js cấu trúc bao gồm routes chứa định tuyến, controllers xử lý yêu cầu gửi đến gửi trả lại phản hồi, controllers xứ lý thông qua việc gọi đến hàm services, services gọi đến models để truy vấn vào sở liệu, hình 3.12 cấu trúc back end dịch vụ quản lý phân quyền Hình 3.12 Cấu trúc dịch vụ quản lý phân quyền a Phần Front-end Phần giao diện sử dụng thư viện React để xây dựng kết hợp sử dụng Redux để quản lý trạng thái Do tổ chức cấu trúc bao gồm có thư mục máy chủ máy chủ thực việc render, src chứa action, store, reducers Redux với component React, hình 3.13 cấu trúc giao diện phân quyền Hình 3.13 Cấu trúc giao diện quản lý phân quyền 57 3.3.2.3 Cấu trúc chương trình xác thực người dùng SSO Phần back end xác thực SSO sử dụng kết mã nguồn mở xây dựng Spring Security, gói sử dụng controller để điều hướng yêu cầu trả phản hồi, Controller gọi qua hàm gói MailServices gọi đến UserRepository sử dụng giao diện thao tác với sở liệu thơng qua gói Entities, hình 3.14 cấu trúc gói xây dựng dịch vụ xác thực SSO Hình 3.14 Cấu trúc xác thực SSO 3.3.2.4 Các API sử dụng cho dịch vụ a Các API dịch vụ quản lý phân quyền Bảng 3.1 API dịch vụ quản lý phân quyền GET /api/v1/users Lấy danh sách người dùng GET /api/v1/users/{userId} Lấy thông tin người dùng POST /api/v1/users Thêm người dùng PUT /api/v1/users/{userId} Cập nhật người dùng GET /api/v1/users/{userId}/features Lấy danh sách chức ứng với người dùng trang cụ thể 58 GET /api/v1/roles Lấy danh sách vai trò GET /api/v1/roles/{roleId} Lấy thơng tin vai trị POST /api/v1/roles Tạo thêm vai trò PUT /api/v1/roles/{roleId} Sửa vai trò GET /api/v1/pages Lấy danh sách trang GET /api/v1/pages/{pageId} Lấy thông tin trang POST /api/v1/pages Tạo thêm trang PUT /api/v1/pages/{pageId} Sửa trang GET /api/v1/features Lấy danh sách chức GET /api/v1/features/{featureId} Lấy thông tin chức POST /api/v1/features Tạo thêm chức PUT /api/v1/features/:{featureId} Sửa chức b Các API dịch vụ quản lý sách Bảng 3.2 API dịch vụ quản lý sách POST /api/v1/authors/insert Thêm tác giả GET /api/v1/authors/getAuthors Lấy danh sách tác giả GET /api/v1/authors /{authorId} Lấy thông tin tác giả PUT /api/v1/authors/update/{authorId} Cập nhật thông tin tác giả DELETE /api/v1/authors/delete/{authorId} Xóa thơng tin tác giả POST /api/v1/books/getBooks/ Thêm sách 59 GET /api/v1/books/page{page}/size/{size} Tìm thơng tin sách theo trang, kích cỡ PUT /api/v1/books/updates/{bookId} Cập nhật sách DELETE /api/v1/books/delete/{id} Xóa sách POST /api/v1/books/search Tìm kiếm sách POST /api/v1/categories/create Tạo thể loại sách PUT /api/v1/categories/update/{id} Cập nhật thông tin thể loại DELETE /api/v1/categories/{categoryId} Xóa thể loại POST /api/v1/synthesis Tổng hợp sách GET /api/v1/ synthesis/save-zip-book Lưu file tổng hợp c Các API dịch vụ SSO Bảng 3.3 API dịch vụ đăng nhập xác thực tài khoản POST /api/oath Đăng nhập POST /api/users Đăng ký GET /api/users Xác thực token PUT /api/users Đổi mật GET /api/users/reset_password/{userId} Yêu cầu thiết lập lại mật PUT /api/users/reset_password/{userId} /{resetToken} Thiết lập lại mật 3.3.3 Giao diện web Giao diện đăng nhập SSO: 60 Hình 3.15 Giao diện đăng nhập hệ thống Giao diện trang dịch vụ sách: Hình 3.16 Trang dịch vụ sách Giao diện trang quản lý thể loại sách: Hình 3.17 Trang quản lý thể loại sách Giao diện trang quản lý sách: 61 Hình 3.18 Trang quản lý sách Giao diện trang quản lý tác giả: Hình 3.19 Trang quản lý tác giả Giao diện trang quản lý người dùng: 62 Hình 3.20 Trang quản lý người dùng Giao diện quản lý trang: Hình 3.21 Trang quản lý trang Giao diện trang quản lý vai trị: Hình 3.22 Trang quản lý vai trị 63 Giao diện trang quản lý tính năng: Hình 3.23 Trang quản lý tính 3.3.4 Triển khai Bước sau hệ thống dịch vụ giao diện hệ thống xây dựng triển khai lên máy chủ xây dựng thành docker image đẩy lên docker hub Các dịch vụ giao diện triển khai chạy thật tên miền thực Chi tiết tên miền trình bày bảng 3.4 bên dưới: Bảng 3.4 Các tên miền ứng dụng Giao diện/ dịch vụ Giao diện đăng nhập, đăng ký Giao diện quản lý sách/ Dịch vụ quản lý sách Tên miền https://services.vbee.vn http://cms.book.vbee.vn Giao diện quản lý phân quyền https://grant-permission.vbee.vn Dịch vụ quản lý phân quyền https://api.grant-permission.vbee.vn Dịch vụ xác thực tài khoản https://sso.vbee.vn 3.4 Kết chương Chương trình bày kiến trúc MSA hệ thống, kiến trúc dịch vụ ứng dụng, mô tả tương tác lớp với dịch vụ, trình bày luồng yêu cầu xác thực người dùng yêu cầu truy cập tài nguyên ứng dụng Thuật toán dụng 64 dịch vụ phân quyền động, trình bày thiết kế sở liệu, cấu trúc chương trình xây dựng dịch vụ quản lý sách nói, dịch vụ phân quyền xác thực SSO Cấu trúc giao diện quản lý sách, giao diện quản lý phân quyền, liệt kê API sử dụng, giới thiệu hình ảnh giao diện, tên miền triển khai dịch vụ giao diện 65 KẾT LUẬN Như em trình bày hệ thống sách nói với ba dịch vụ nhỏ minh họa cho ba dịch vụ kiến trúc Microservices Về mặt kỹ thuật luận văn tiếp cận sử dụng ngôn ngữ khác Java, Nodejs để xây dựng dịch vụ, dịch vụ giao tiếp với sử dụng Restful giao thức HTTP đơn giản mà ngơn ngữ lập trình thơng dụng hỗ trợ Với việc sử dụng giao diện API cho dịch vụ, việc thay module dễ dàng có module cần nâng cấp, thay đổi loại bỏ lý chức thay đổi hay công nghệ lạc hậu Các dịch vụ xây dựng định hướng phát triển riêng biệt không phụ thuộc chức đảm bảo liên quan chức đáp ứng yêu cầu quản lý, việc cho thấy ứng dụng phát triển theo hướng Microservices không lợi mặt cơng nghệ mà cịn có lợi mặt tổ chức cho đại lý sách Các đóng góp luận văn Luận văn xây dựng chức cụ thể quản lý sách, quản lý tác giả, quản lý thể loại sách Phân quyền cho người dùng theo vai trò, theo tính trang Sử dụng dịch vụ xác thực SSO, xây dựng dịch vụ sử dụng Restful API để giao tiếp với thông qua cổng kết nối API Gateway mô tả giao tiếp dịch vụ MSA Đưa ứng dụng triển khai cụ thể máy chủ sử dụng với tên miền tương ứng truy cập sử dụng dịch vụ Đồng thời luận văn nêu rõ ưu điểm nhược điểm của kiến trúc MSA đưa số cách khắc phục nhược điểm kiến trúc Các định hướng luận văn Sau xây dựng ứng dụng em định hướng giải số mặt mà luận văn chưa hoàn thiện Xây dựng giao diện đăng nhập từ dịch vụ phân quyền, tách riêng sở liệu hai dịch vụ sách dịch vụ phân quyền, giao diện phần quản lý sách xây dựng với công nghệ Front end Reactjs Các dịch vụ có khả mở rộng triển khai tảng đám mây Phát triển API dịch vụ phân quyền 66 động sử dụng tốt với ứng dụng Microservices khác Xây dựng kiểm thử chức ứng dụng Do thời gian thực luận văn không nhiều kiến thức cá nhân nhiều hạn chế nên luận văn khơng thể tránh khỏi thiếu sót Em mong ý kiến đóng góp thầy bạn đọc để luận văn hoàn thiện Xin chân thành cảm ơn! 67 DANH MỤC CÁC TÀI LIỆU THAM KHẢO [1] Microservices for Java Developers A Hands-On Introduction to Frameworks & Containers Compliments of Redhad Developers, By Christian Posta, O’Reilly 2016 Chapter: Spring Boot for Microservices, Chapter: Deploy Microservices at Scale with Docker and Kubernetes [2] David Gonzalez - Developing Microservices with Node.js - 2016 By David Gonzalez, Packt Publishing [3] Service - Oriented Architecture: Analysis and Design for Services and Microservices Thomas Erl, Prentice Hall, 2017 Chapter Understanding Layers with Services and Microservices Service API and Contract Design with REST Services and Microservices [4] Microservices Flexible Software Architecture, by Eberhard Wolff, 2017 Pearson Education Part VII, IIX, Part II: Microservices: What, Why, Why not? Reasons for Using Microservices, Challenges, Microservices and SOA Part III: Implementing Microservices Architecture of Microservice-Based Systems, Architecture of Individual Microservices [5] Building Microservices, O’Reilly Media by Sam Newman The Evolutionary Architect, How to Model Services [6] Microservices from Day One Build robust and scalable sofware from the start by Cloves Carneiro Jr Tim Schmelmer [7] Web API Design by Brian Mulloy [8] Microservices: Building Scalable Software 2016 Packt Publishing Authors: Sourabh Sharma Rajesh RV David Gonzalez [9] https://techmaster.vn/posts/34410/microservices-thuc-tien-tu-thiet-ke-den-trienkhai [10] https://vi.wikipedia.org/wiki/Java [11] https://www.tutorialspoint.com/java [12] https://vi.wikipedia.org/wiki/Spring_Framework, https://spring.io/ [13] https://nodejs.vn/ 68 [14] https://reactjs.org/ [15] https://spring.io/ [16] https://www.tutorialspoint.com/mongodb/ 69 ... nghe sách lúc di chuyển tầu xe Trên tảng hệ thống tổng hợp sách nói gồm hệ thống ứng dụng cơng nghệ tổng hợp tiếng nói đầu vào file dạng text sách, đầu hệ thống xử lý file audio sách, hệ thống sách. .. nghệ NodeJS, Công nghệ Java, Spring Framework, SSO Công nghệ ReactJS, Cơ sở liệu MongoDB CHƯƠNG 3: CÁC GIẢI PHÁP MSA NỔI BẬT VÀ PHÁT TRIỂN HỆ THỐNG SÁCH NÓI Kiến trúc Microservices hệ thống sách. .. hệ thống phần mềm xử lý mà đọc trực tiếp mắt Do vậy, em chọn đề tài ? ?Kiến trúc Microservices hệ thống sách nói trực tuyến? ?? để giải vấn đề nêu - Mục đích nghiên cứu luận văn Để việc tiếp cận sách