Giaosucan's blog - Chia sẻ kiến thức theo cách bá đạo

Ticker

20/recent/ticker-posts

Mô hình Polyglot trong Microservice

microservice polyglot

Polyglot là gì?

Polyglot vốn là một từ trong đời thường ám chỉ những người có khả năng nói được nhiều ngôn ngữ khác nhau. Chẳng hạn một người châu âu có thể nói 3 , 4 thứ tiếng Anh Pháp Trung Nhật, một anh Việt Nam nói được chục thứ tiếng cỡ như Mán, Mường, H’ mông, Ê đê. Họ trở thành những polyglot. Đại loại những thanh niên nào đa tài, đa zi năng, cái gì cũng biết thì gọi là Polyglot.
Khái niệm Polyglot trên cũng được áp dụng vào Microservice. Trong mô hình này, chúng ta không sử dụng duy nhất một loại database như kiến trúc đơn khối mà sử dụng một tập hợp nhiều loại database khác nhau như NoSQL, Graph, ElasticSearch…Cũng giống như anh Tây xài được nhiều ngoại ngữ
microservice polyglot

Cần Polyglot để làm gì

Hãy xem xét một bài toán thực tế sau
Bạn có một website bán hàng, user truy cập tìm kiếm sản phẩm, order và thực hiện payment. Website sử dụng kiến trúc microservice với các service Search, Order và Payment, và chỉ dùng duy nhất một loại database quan hệ như sau
Website sale database
Do số nhọ nên bạn gặp toàn khách hàng chơi lầy, search, order sản phẩm thì rất nhiều nhưng đến  giai đoạn payment thì quịt. Như vậy thì service Search phải handle 1 số lượng lớn request tìm kiếm từ phía user, trong khi tốc độ query data trong database relational thì chậm (do số lượng record quá lớn), dẫn tới quá tải và service ngủm củ tỏi luôn.
Hệ thống hoạt động không ổn định, khách hàng thì chơi lầy nên ko bao lâu thì bạn sạt nghiệp, phải vác bơm ra hè kiếm cơm.
Lúc này thì mô hình Polyglot sẽ phát huy tác dụng, tận dụng được tính độc lập của kiến trúc microservice, bạn chỉ cần thay thế Database quan hệ Search bằng loại database khác hỗ trợ tìm kiếm tốc độ cao như ElasticSearch, MongoDB là xong, khỏi phải lo optimize SQL query, nâng cấp database….
Đối với kiến trúc đơn khối truyền thống, bạn bị bó buộc vào việc chỉ sử dụng được 1 loại DB duy nhất
Medium Monolithic database
thì microservice cung cấp cho chúng ta một giải pháp linh hoạt hơn. Tùy theo nghiệp vụ của service bạn tự lựa chọn loại database cho phù hợp
Medium Polyglot
Ví dụ service chuyên tìm kiếm thì sử dụng NoSQL, service chuyên đọc ghi CRUD thì dùng relational database, service làm việc với dữ liệu quan hệ phức tạp thì dùng Graph (Neo4J) database. Tóm lại đông tây y kết hợp đủ cả.

Nhược điểm của Polyglot

Cái gì hiện đại thì cũng hại điện, mọi thứ đều có mặt trái của nó. Polyglot cũng vậy, sử dụng quá nhiều loại database khác nhau đồng nghĩa với bạn phải làm quen với nhiều loại công nghệ đi kèm, chi phí phát triển và bảo trì hệ thống cũng tăng lên.
Hơn nữa, mỗi loại database lại sử dụng những format data khác nhau (NoSQL thì dùng JSON, document, SQL thì dùng record, Graph database dùng data dạng graph gồm node, edge…) nên việc xử lý data consistency giữa các database cũng là một thách thức lớn.

Kết luận

Hiểu được ưu nhược điểm của Polyglot sẽ giúp bạn có cách trade off, lựa chọn database phù hợp. Tốt nhất là service của bạn cần thế nào thì chọn database theo thế đấy. Lời khuyên là cũng không nên cố xài lắm database làm gì. Nó có thể dẫn bạn đến tình trạng cái gì cũng chơi, chơi quá độ đến mức liệt, cuối cùng là chẳng chơi nổi cái gì.

Đăng nhận xét

0 Nhận xét