Phát triển hệ thống với microservice
Chào các bạn, kiến trúc hệ thống Microservices hiện nay không còn xa lạ gì, bạn có thể đọc chi tiết thêm ở đây. Trong bài này, tôi xin phép tóm lược về ưu và nhược điểm của kiến trúc Microservice và kiến trúc Monolithic, cũng như trình bày về bài toán của tôi và cách áp dụng dụng nó. I. Tổng quan ...
Chào các bạn, kiến trúc hệ thống Microservices hiện nay không còn xa lạ gì, bạn có thể đọc chi tiết thêm ở đây. Trong bài này, tôi xin phép tóm lược về ưu và nhược điểm của kiến trúc Microservice và kiến trúc Monolithic, cũng như trình bày về bài toán của tôi và cách áp dụng dụng nó. I. Tổng quan về mircoservice 1. Microservice là gì? Có khá nhiều bài viết giới thiệu và định nghĩa về khái niệm này, tôi xin phép đưa ra quan điểm cá nhân. Microservice, như tên của nó, đó chính là chia một khối phần mềm to tướng thành các dịch vụ nhỏ hơn, có thể triển khai trên các server khác nhau. Các dịch vụ này sẽ xử lý từng phần công việc và được kết nối với nhau thông qua các các giao thức khác nhau, như http, SOA, RPC, socket... để truyền tải dữ liệu. 2. Monolithic là gì? Không cần nói nhiều, nó chính là mô hình truyền thống mà chúng ta sử dụng để phát triển từ trước tới nay, ví dụ, mô hình MVC là mô hình kinh điển với loại kiến trúc này. Nó sẽ xử lý tất các nghiệp vụ, công việc thông qua các module, dữ liệu được truyền tải trực tiếp giữa các module mà không cần thông qua giao thức nào. II. Bài toán đặt ra. Bài toán của tôi cần giải quyết là xây dựng một hệ thống bao gồm các thành phần sau: - Hệ thống crawler - Ứng dụng báo - Ứng dụng nhà thông minh - Hệ tổng hợp tiếng nói. Với những thành phần ở trên, thì Hệ tổng hợp tiếng nói yêu cầu tài nguyên rất lớn. Ngoài ra, vì đầu ra của nó là tiếng nói, nên tôi cần lưu trữ lại kết quả với số lượng lớn. Bên canh đó, những ứng dụng này cần trả lại kết quả thời gian thực (thường là yêu cầu dưới 2s). Từ những yêu cầu trên, thì việc phát triển hệ thống 1 khối là điều khó khăn và gần như không thể. Thêm nữa, trong tương lai sẽ bổ sung thêm các dịch vụ khác được cắm vào để sử dụng hệ tổng hợp tiếng nói. Từ những vấn đề trên, tôi quyết định sử dụng mô hình Microservice. Dưới dây là mô hình của tôi đã thiết kế.
III. Hướng giải quyết vấn đề. Từ thiết kế trên, tôi phân thành các phần như sau 1. TTS Gateway Phần này có chức năng như sau: - Xác thực các request từ client. - Điều hướng yêu cầu đến các TTS Engine thông qua load balancer. - Xác định store sẽ lưu thông qua load balancer. 2. TTS Engine Phần này có chức tổng hợp âm thanh hoặc các tác vụ liên quan (ví dụ như tìm các từ sai chính tả, tóm tắt....) dựa vào content được truyền vào từ bên Gateway. Nếu output yêu cầu là audio, sẽ lưu file tại store. Vị trí store được truyền vào thông qua gateway. 3. Store Có những chức năng như sau: - Lưu trữ file audio được nhận từ TTS Engine - Join các file audio với nhau. - Xóa các file đã quá hạn quy định. - Xóa các file được yêu cầu - Convert từ định dạng wav sang định dạng được yêu cầu.
Trong phần tiếp theo, tôi sẽ trình bày cụ thể về phần xây dựng load balancer, cũng như cách kết nối các service mà tôi đã dùng. Cảm ơn các bạn đã theo dõi! Smt