Microservice là gì

  -  

Chào mọi người, nếu như các bạn cũng biết thì dự án Teamcrop của mình xây dựng và chạy hoàn toàn trên kiến trúc Microservices và sau hơn 2 năm triển khai thì có một số vấn đề liên quan đến kiến trúc này, thiết nghĩ cần chia sẻ thêm với mọi người để mọi người thấy được rằng Microservices không phải là chìa khóa vạn năng như vẫn hay nghe quảng cáo, dụ dỗ. Mọi kiến trúc đều có đánh đổi và Microservices cũng vậy.

Bạn đang xem: Microservice là gì

Mình sẽ viết một loạt bài (5, 6 bài gì đó) về việc tăng tốc cho kiến trúc Microservices mà đã rút tỉa được trong quá trình triển khai dự án Teamcrop, bởi tốc độ luôn là yếu tố hàng đầu khi xây dựng các ứng dụng web, và với kiến trúc mới này thì tăng tốc là một kỹ thuật cần xem xét khi triển khai.

Có thể bạn quan tâm:


*
*
*

Một số chiến lược cơ bản

Để giải quyết bài toán hiển thị ở trên, bạn chỉ có thể tiếp cận theo hướng lấy dữ liệu trực tiếp từ service liên quan. Từ EmployeeID, gọi sang service Employee, từ StoreID thì gọi sang service Store…để lấy các thông tin cần hiển thị. Việc này sẽ dẫn đến giao tiếp liên service (inter-service communication).

Trong kiến trúc Microservices, càng hạn chế gọi liên service càng tốt vì các service sinh ra để phục vụ bên ngoài chứ không phải để phục vụ liên service, dẫn đến performance hệ thống sẽ bị giảm, vì nếu thiết kế không tốt, các service bị die hầu như do các service gọi lẫn nhau gây quá tải chứ từ client chưa chắc quá tải :).

Ngoài ra, gọi liên service sẽ có overhead vì vẫn có giao thức kết nối đi kèm (như HTTPS, Protobuf..) nên phải hạn chế. Do đó, cách dễ dàng tiếp cận nhất là sử dụng cache để không phải request nhiều đến các service mà chỉ cần mò vào cache. Có thể sử dụng Redis hoặc memcache cho tính năng này. Nhiệm vụ còn lại của bạn chỉ là làm sao clear cache một cách hiệu quả mà thôi.

Xem thêm: Trên Facebook Gọi Sml Là Gì Trên Facebook Và Diễn Đàn, Sử Dụng Sml Như Thế Nào

Như vậy, với 1 đơn hàng, bạn sẽ cần thêm 3 request đến cache để fetch thêm thông tin (employee, store và warehouse) trước khi trả về client để hiển thị đầy đủ thông tin.

Teamcrop đã làm thế nào?

Ở trên là cách mình đề xuất và mọi người cũng nghĩ ra dễ dàng vì nó khá cơ bản cho các ứng dụng web hiện đại. Tuy nhiên, dự án Teamcrop không theo cách này và theo 1 cách “phức tạp” hơn nhiều và tất nhiên nó sẽ nhanh hơn cách ở trên.

Trong bài tiếp theo, mình sẽ chia sẻ chi tiết cách Teamcrop đã giải quyết bài toán này như thế nào, tận dụng web socket, service worker của trình duyệt để tăng tốc tối đa cho việc hiển thị dạng này.

Xem thêm: Làm Fs Là Gì Dự Án Bất Động Sản, Nghĩa Của Từ Feasibility Study

Hy vọng bạn sẽ thích các thông tin này và sẽ tiếp tục theo dõi loạt bài chia sẻ kỹ thuật tăng tốc cho kiến trúc Microservices.

P.S: Teamcrop.com là hệ thống ERP dành cho chuỗi bản lẻ và luôn tìm kiếm lập trình viên PHP, nếu bạn biết PHP, yêu thích xây dựng các dự án web lớn, phức tạp trên những kiến trúc mới như Microservices, công nghệ mới như Docker thì đừng ngần ngại liên hệ với Tuấn (qua email tuanmaster2012