Tổ chức dịch vụ vi mô


200

Các mô hình tiêu chuẩn của microservice phối hợp là gì?

Nếu một microservice chỉ biết về tên miền của chính nó, nhưng có một luồng dữ liệu yêu cầu nhiều dịch vụ tương tác theo một cách nào đó, thì cách nào để đi về nó?

Hãy nói rằng chúng ta có một cái gì đó như thế này:

  • Hóa đơn
  • Lô hàng

Và để tranh luận, giả sử rằng một khi đơn hàng đã được chuyển đi, hóa đơn sẽ được tạo.

Đâu đó, ai đó nhấn nút trong một câu GUI"Tôi xong rồi, chúng ta hãy làm điều này!" Trong kiến ​​trúc dịch vụ nguyên khối cổ điển, tôi muốn nói rằng có một cách ESBxử lý này hoặc dịch vụ Giao hàng có kiến ​​thức về dịch vụ hóa đơn và chỉ cần gọi điều đó.

Nhưng cách mọi người đối phó với điều này trong thế giới microservice mới dũng cảm này là gì?

Tôi hiểu rằng điều này có thể được coi là dựa trên quan điểm cao. nhưng có một khía cạnh cụ thể của nó, vì microservice không được phép làm như trên. Vì vậy, phải có một "định nghĩa nên làm gì thay vào đó", không dựa trên quan điểm.

Bắn.

Câu trả lời:


316

Dịch vụ kính hiển vi xây dựng sách mô tả chi tiết các kiểu được đề cập bởi @RogerAlsing trong câu trả lời của ông.

Trên trang 43 dưới phần Dàn nhạc và Biên đạo, cuốn sách nói:

Khi chúng ta bắt đầu mô hình hóa logic ngày càng phức tạp hơn, chúng ta phải đối phó với vấn đề quản lý các quy trình kinh doanh trải dài qua ranh giới của các dịch vụ riêng lẻ. Và với microservice, chúng tôi sẽ đạt giới hạn này sớm hơn bình thường. [...] Khi thực sự thực hiện dòng chảy này, có hai phong cách kiến ​​trúc chúng ta có thể làm theo. Với sự phối hợp, chúng tôi dựa vào một bộ não trung tâm để hướng dẫn và điều khiển quá trình, giống như nhạc trưởng trong một dàn nhạc. Với vũ đạo, chúng tôi thông báo cho từng bộ phận trong hệ thống công việc của mình và để nó giải quyết các chi tiết, giống như các vũ công đều tìm đường và phản ứng với những người khác xung quanh họ trong một vở ballet.

Cuốn sách sau đó tiến hành để giải thích hai phong cách. Phong cách phối hợp tương ứng nhiều hơn với ý tưởng về dịch vụ phối hợp / nhiệm vụ của SOA , trong khi phong cách vũ đạo tương ứng với các ống câm và các điểm cuối thông minh được đề cập trong bài viết của Martin Fowler.

Phong cách dàn nhạc

Theo phong cách này, cuốn sách trên có đề cập:

Chúng ta hãy nghĩ về một giải pháp phối hợp sẽ như thế nào cho dòng chảy này. Ở đây, có lẽ điều đơn giản nhất để làm là có dịch vụ khách hàng của chúng tôi đóng vai trò là bộ não trung tâm. Khi tạo, nó nói chuyện với ngân hàng điểm trung thành, dịch vụ email và dịch vụ bưu chính [...], thông qua một loạt các cuộc gọi yêu cầu / phản hồi. Bản thân dịch vụ khách hàng có thể theo dõi vị trí của khách hàng trong quy trình này. Nó có thể kiểm tra xem tài khoản của khách hàng đã được thiết lập chưa, hoặc email được gửi hoặc bài được gửi. Chúng ta có được sơ đồ [...] và mô hình hóa nó trực tiếp thành mã. Chúng tôi thậm chí có thể sử dụng công cụ thực hiện điều này cho chúng tôi, có lẽ sử dụng một công cụ quy tắc phù hợp. Các công cụ thương mại tồn tại cho mục đích này dưới dạng phần mềm mô hình hóa quy trình kinh doanh. Giả sử chúng tôi sử dụng yêu cầu / phản hồi đồng bộ, chúng ta thậm chí có thể biết nếu mỗi giai đoạn đã hoạt động [...] Nhược điểm của phương pháp phối hợp này là dịch vụ khách hàng có thể trở thành quá nhiều của một cơ quan quản lý trung ương. Nó có thể trở thành trung tâm ở giữa một trang web và một điểm trung tâm nơi logic bắt đầu sống. Tôi đã thấy cách tiếp cận này dẫn đến một số lượng nhỏ các dịch vụ thông minh của Thần thông minh nói với các dịch vụ dựa trên CRUD thiếu máu phải làm gì.

Lưu ý: Tôi cho rằng khi tác giả đề cập đến công cụ, anh ta đang đề cập đến một cái gì đó như BPM (ví dụ: Activity , Apache ODE , Camunda ). Trên thực tế, Trang web Mẫu quy trình làm việc có một bộ mẫu tuyệt vời để thực hiện kiểu phối hợp này và nó cũng cung cấp chi tiết đánh giá của các công cụ nhà cung cấp khác nhau để thực hiện theo cách này. Tôi không nghĩ rằng tác giả ngụ ý người ta bắt buộc phải sử dụng một trong những công cụ này để thực hiện kiểu tích hợp này, các khung công tác phối hợp nhẹ khác có thể được sử dụng, ví dụ như Spring Integration , Apache Camel hoặc Mule ESB

Tuy nhiên, những cuốn sách khác mà tôi đã đọc về chủ đề của microservice và nói chung, phần lớn các bài báo tôi tìm thấy trên web dường như làm mất phương pháp phối hợp này và thay vào đó đề nghị sử dụng cuốn tiếp theo.

Phong cách vũ đạo

Theo phong cách vũ đạo tác giả nói:

Với cách tiếp cận được biên đạo, thay vào đó chúng ta có thể chỉ cần dịch vụ khách hàng phát ra một sự kiện theo cách không đồng bộ, nói rằng Khách hàng đã tạo. Dịch vụ email, dịch vụ bưu chính và ngân hàng điểm trung thành sau đó chỉ cần đăng ký các sự kiện này và phản ứng tương ứng [...] Cách tiếp cận này được phân tách rõ rệt hơn. Nếu một số dịch vụ khác cần thiết để tiếp cận với việc tạo ra một khách hàng, nó chỉ cần đăng ký các sự kiện và thực hiện công việc của nó khi cần thiết. Nhược điểm là quan điểm rõ ràng về quy trình kinh doanh mà chúng ta thấy trong [quy trình công việc] hiện chỉ được phản ánh ngầm trong hệ thống của chúng tôi [...] Điều này có nghĩa là cần có thêm công việc để đảm bảo rằng bạn có thể theo dõi và theo dõi rằng những điều đúng đã xảy ra. Ví dụ, bạn có biết ngân hàng điểm khách hàng thân thiết có lỗi không và vì lý do nào đó đã không thiết lập đúng tài khoản? Một cách tiếp cận tôi thích để giải quyết vấn đề này là xây dựng một hệ thống giám sát phù hợp rõ ràng với quan điểm của quy trình kinh doanh trong [quy trình công việc], nhưng sau đó theo dõi những gì mỗi dịch vụ làm như các thực thể độc lập, cho phép bạn thấy các ngoại lệ kỳ lạ được ánh xạ lên dòng quy trình rõ ràng hơn. [Lưu đồ] [...] không phải là động lực, mà chỉ là một thấu kính mà qua đó chúng ta có thể thấy hệ thống đang hoạt động như thế nào. Nói chung, tôi đã thấy rằng các hệ thống có xu hướng hướng tới phương pháp biên đạo được kết nối lỏng lẻo hơn, và linh hoạt hơn và có thể thay đổi. Tuy nhiên, bạn cần phải làm thêm để theo dõi và theo dõi các quy trình qua ranh giới hệ thống. Tôi đã tìm thấy hầu hết các triển khai được phối hợp chặt chẽ là cực kỳ dễ vỡ, với chi phí thay đổi cao hơn. Với ý nghĩ đó, tôi rất thích nhắm đến một hệ thống được biên đạo, trong đó mỗi dịch vụ đủ thông minh để hiểu vai trò của nó trong toàn bộ điệu nhảy.

Lưu ý: Cho đến ngày nay tôi vẫn không chắc chắn nếu vũ đạo chỉ là một tên khác cho kiến trúc hướng sự kiện (EDA), nhưng nếu EDA chỉ là một cách để làm điều đó, thì những cách khác là gì? (Xem thêm làm bạn có ý nghĩa gì bởi "Event-Driven"?Ý nghĩa của Kiến trúc Event-Driven ). Ngoài ra, có vẻ như những thứ như CQRS và EventSource cộng hưởng rất nhiều với phong cách kiến ​​trúc này, phải không?

Bây giờ, sau khi điều này đến niềm vui. Cuốn sách microservice không cho rằng microservice sẽ được triển khai với REST. Như một vấn đề thực tế trong phần tiếp theo của cuốn sách, họ tiến hành xem xét các giải pháp dựa trên RPC và SOA và cuối cùng là REST. Một điểm quan trọng ở đây là microservice không ngụ ý REST.

Vì vậy, những gì về HATEOAS? (Hypermedia là Công cụ của Trạng thái Ứng dụng)

Bây giờ, nếu chúng ta muốn theo cách tiếp cận RESTful, chúng ta không thể bỏ qua HATEOAS hoặc Roy Fielding sẽ rất hài lòng khi nói trong blog của anh ấy rằng giải pháp của chúng tôi không thực sự là REST. Xem bài đăng trên blog của anh ấy về API REST Phải là siêu văn bản :

Tôi cảm thấy thất vọng bởi số lượng người gọi bất kỳ giao diện dựa trên HTTP nào là API REST. Những gì cần phải được thực hiện để làm cho phong cách kiến ​​trúc REST rõ ràng trên khái niệm rằng siêu văn bản là một hạn chế? Nói cách khác, nếu công cụ của trạng thái ứng dụng (và do đó API) không được điều khiển bởi siêu văn bản, thì nó không thể là RESTful và không thể là API REST. Giai đoạn = Stage. Có một số hướng dẫn bị hỏng ở một nơi nào đó cần phải được sửa chữa?

Vì vậy, như bạn có thể thấy, Fielding nghĩ rằng nếu không có HATEOAS thì bạn không thực sự xây dựng các ứng dụng RESTful. Đối với Fielding, HATEOAS là con đường để đi khi nói đến các dịch vụ điều phối. Tôi chỉ đang học tất cả những điều này, nhưng với tôi, HATEOAS không xác định rõ ràng ai hoặc động lực đằng sau thực sự theo các liên kết. Trong một giao diện người dùng có thể là người dùng, nhưng trong các tương tác giữa máy tính với máy tính, tôi cho rằng cần phải được thực hiện bởi một dịch vụ cấp cao hơn.

Theo HATEOAS, liên kết duy nhất mà người tiêu dùng API thực sự cần biết là liên kết bắt đầu giao tiếp với máy chủ (ví dụ: POST / order). Từ thời điểm này, REST sẽ tiến hành luồng, bởi vì, trong phản hồi của điểm cuối này, tài nguyên được trả về sẽ chứa các liên kết đến các trạng thái có thể tiếp theo. Người tiêu dùng API sau đó quyết định liên kết nào sẽ theo dõi và chuyển ứng dụng sang trạng thái tiếp theo.

Mặc dù âm thanh đó hay đến mức nào, khách hàng vẫn cần phải biết liệu liên kết phải được POST, PUTed, GET, PATCHed, v.v. Và khách hàng vẫn cần phải quyết định tải trọng nào sẽ vượt qua. Khách hàng vẫn cần phải biết phải làm gì nếu thất bại (thử lại, bù, hủy, v.v.).

Tôi khá mới đối với tất cả những điều này, nhưng đối với tôi, từ quan điểm của HATEOAs, khách hàng này hoặc người tiêu dùng API là một dịch vụ cao cấp. Nếu chúng tôi nghĩ rằng từ quan điểm của một con người, bạn có thể tưởng tượng người dùng cuối trên trang web, quyết định nên theo liên kết nào, nhưng vẫn vậy, lập trình viên của trang web phải quyết định sử dụng phương pháp nào để gọi liên kết, và tải trọng gì để vượt qua. Vì vậy, theo quan điểm của tôi, trong một tương tác giữa máy tính với máy tính, máy tính đóng vai trò của người dùng cuối. Một lần nữa, đây là những gì chúng tôi gọi là một dịch vụ điều phối.

Tôi cho rằng chúng ta có thể sử dụng HATEOAS với cả dàn nhạc hoặc vũ đạo.

Mẫu cổng API

Một mô hình thú vị khác được đề xuất bởi Chris Richardson, người cũng đã đề xuất cái mà ông gọi là Mẫu cổng API .

Trong kiến ​​trúc nguyên khối, các máy khách của ứng dụng, chẳng hạn như trình duyệt web và ứng dụng gốc, thực hiện các yêu cầu HTTP thông qua bộ cân bằng tải đến một trong N phiên bản giống hệt của ứng dụng. Nhưng trong một kiến ​​trúc microservice, khối đá nguyên khối đã được thay thế bằng một bộ sưu tập các dịch vụ. Do đó, một câu hỏi quan trọng chúng ta cần trả lời là khách hàng tương tác với cái gì?

Một ứng dụng khách, chẳng hạn như một ứng dụng di động gốc, có thể tạo các yêu cầu HTTP RESTful cho các dịch vụ riêng lẻ [...] Nhìn bề ngoài, điều này có vẻ hấp dẫn. Tuy nhiên, có thể có sự không phù hợp đáng kể về độ chi tiết giữa các API của các dịch vụ riêng lẻ và dữ liệu theo yêu cầu của khách hàng. Ví dụ: hiển thị một trang web có khả năng yêu cầu các cuộc gọi đến số lượng lớn dịch vụ. Amazon.com, ví dụ, mô tả cách một số trang yêu cầu cuộc gọi đến hơn 100 dịch vụ. Thực hiện nhiều yêu cầu đó, thậm chí qua kết nối internet tốc độ cao, chứ chưa nói đến một mạng di động có băng thông thấp hơn, độ trễ cao hơn, sẽ rất kém hiệu quả và dẫn đến trải nghiệm người dùng kém.

Một cách tiếp cận tốt hơn là cho các khách hàng thực hiện một số lượng nhỏ yêu cầu trên mỗi trang, có lẽ chỉ một, qua Internet đến một máy chủ ngoại vi được gọi là cổng API.

Cổng API nằm giữa các ứng dụng khách của ứng dụng và microservice. Nó cung cấp các API phù hợp với khách hàng. Cổng API cung cấp API chi tiết thô cho các máy khách di động và API chi tiết hơn cho các máy khách để bàn sử dụng mạng hiệu suất cao. Trong ví dụ này, các máy khách để bàn thực hiện nhiều yêu cầu để truy xuất thông tin về một sản phẩm, trong khi máy khách di động thực hiện một yêu cầu duy nhất.

Cổng API xử lý các yêu cầu đến bằng cách thực hiện các yêu cầu đối với một số dịch vụ siêu nhỏ qua mạng LAN hiệu suất cao. Netflix, ví dụ, mô tả cách mỗi người hâm mộ yêu cầu trung bình sáu dịch vụ phụ trợ. Trong ví dụ này, các yêu cầu chi tiết từ máy khách để bàn chỉ đơn giản là được cung cấp cho dịch vụ tương ứng, trong khi mỗi yêu cầu chi tiết thô từ máy khách di động được xử lý bằng cách tổng hợp kết quả của việc gọi nhiều dịch vụ.

Cổng API không chỉ tối ưu hóa giao tiếp giữa khách hàng và ứng dụng mà còn gói gọn các chi tiết của microservice. Điều này cho phép microservice phát triển mà không ảnh hưởng đến khách hàng. Ví dụ: hai microservice có thể được hợp nhất. Một dịch vụ siêu nhỏ khác có thể được phân vùng thành hai hoặc nhiều dịch vụ. Chỉ cổng API cần được cập nhật để phản ánh những thay đổi này. Các khách hàng không bị ảnh hưởng.

Bây giờ chúng ta đã xem xét cách cổng API làm trung gian giữa ứng dụng và ứng dụng khách, bây giờ chúng ta hãy xem cách triển khai giao tiếp giữa các dịch vụ siêu nhỏ.

Điều này nghe có vẻ khá giống với phong cách phối hợp được đề cập ở trên, chỉ với một ý định hơi khác, trong trường hợp này, nó dường như là tất cả về hiệu suất và đơn giản hóa các tương tác.


15
Câu trả lời tốt! Một câu hỏi: nếu tôi kết hợp microservice theo phong cách biên đạo với API-Gateway, thì API-Gateway có biến thành cơ quan quản lý trung tâm mà bạn mô tả là nhược điểm của microservice theo phong cách dàn nhạc không? Hay nói cách khác, chính xác thì đâu là sự khác biệt giữa "Phong cách phối hợp" và Mẫu cổng API?
Fritz Duchardt

4
@FritzDuchardt không chính xác. Mặc dù cổng api không trở thành một điểm thất bại duy nhất, nhưng nó không nhất thiết là cơ quan quản lý dưới bất kỳ hình thức nào. Cổng api rất đơn giản có thể chỉ cần xác thực các yêu cầu và ủy quyền chúng cho dịch vụ mục tiêu của chúng. Mẫu api-gateway chủ yếu là để đơn giản hóa các tương tác giữa máy khách và phụ trợ thông qua một dịch vụ duy nhất, nó không trực tiếp giải quyết vấn đề phối hợp hoặc biên đạo các dịch vụ mà proxy proxy cổng (chính nó là một dịch vụ).
Porlune

Câu trả lời chính xác! Chỉ một câu hỏi liên quan đến các cổng API: GraphQL có phải là cổng API thế hệ tiếp theo không và có thể thay thế rất nhiều cổng API không?
kenneho

Tôi đang cố gắng để hiểu điều này từ một cái nhìn thực tế. Vũ đạo được kết hợp lỏng lẻo hơn -> trong trường hợp đó, một eventListener nên được thêm động vào phương thức api? Mặt khác, nếu không, mỗi phương thức api sẽ luôn phản ứng với một sự kiện đã nhận (-> và do đó không được ghép lỏng lẻo)
Vincent

Tôi không đồng ý rằng vũ đạo được kết hợp lỏng lẻo hơn và do đó cần phải tránh việc phối hợp với microservice. Tôi đã nói về điều đó, ví dụ như trong berndruecker.io/complex-event-flows-in-distribution-systems . Bạn cần một cách tiếp cận cân bằng hơn trong kiến ​​trúc của bạn.
Bernd Ruecker

35

Cố gắng tổng hợp các cách tiếp cận khác nhau ở đây.

Sự kiện tên miền

Cách tiếp cận chủ yếu cho điều này dường như là sử dụng các sự kiện trong miền, trong đó mỗi dịch vụ xuất bản các sự kiện liên quan đến những gì đã xảy ra và các dịch vụ khác có thể đăng ký các sự kiện đó. Điều này dường như đi đôi với khái niệm điểm cuối thông minh, đường ống câm được Martin Fowler mô tả ở đây: http://martinfowler.com/articles/microservice.html#SmartEndpointAndDumbPipes

Sự kiện tên miền

Ủy quyền

Một apporach khác có vẻ phổ biến là bao bọc dòng chảy kinh doanh trong dịch vụ riêng của mình. Trường hợp proxy phối hợp sự tương tác giữa các dịch vụ siêu nhỏ như trong hình dưới đây:

Proxy.

Các mẫu khác của thành phần

Đây trang chứa các mẫu thành phần khác nhau.


Đây là một video hay về các mẫu khác và cách bạn có thể kết hợp chúng youtu.be/tSN1gOVQfPs?t=35m35s Đề xuất thêm chúng vào phản hồi của bạn
Grygoriy Gonchar

Hình ảnh Nic @Roger, bạn đang sử dụng công cụ nào?
Selvakumar Esra

1
@SelvakumarEsra draw.io
Roger Johansson

7

Vậy, việc sắp xếp các dịch vụ micros micros khác với việc phối hợp các dịch vụ SOA cũ không phải là micro micro như thế nào? Không được nhiều.

Microservice thường giao tiếp bằng cách sử dụng http (REST) ​​hoặc nhắn tin / sự kiện. Phối hợp thường được liên kết với các nền tảng phối hợp cho phép bạn tạo ra sự tương tác theo kịch bản giữa các dịch vụ để tự động hóa quy trình công việc. Trong thời đại cũ của SOA, các nền tảng này đã sử dụng WS-BPEL. Các công cụ ngày nay không sử dụng BPEL. Ví dụ về các sản phẩm dàn nhạc hiện đại: Nhạc trưởng Netflix, Camunda, Zeebe, Ứng dụng Azure Logic, Baker.

Hãy nhớ rằng phối hợp là một mô hình ghép cung cấp một số khả năng để tạo ra các thành phần phức tạp của các dịch vụ. Microservice thường được xem là dịch vụ không nên tham gia vào các tác phẩm phức tạp và thay vào đó là tự chủ hơn.

Tôi có thể thấy một dịch vụ siêu nhỏ được gọi trong quy trình phối hợp để thực hiện một số xử lý đơn giản, nhưng tôi không thấy microservice là dịch vụ điều phối, thường sử dụng các cơ chế như bù giao dịch và kho lưu trữ trạng thái (mất nước).


cần lưu ý rằng "các công cụ ngày nay" trong bài đăng của bạn, vẫn sử dụng các sự kiện, dữ liệu và hoạt động dưới một hình thức nào đó, để "mô hình hóa" một luồng - camunda sử dụng BPMN, gần với BPEL và các công cụ khác chỉ đơn giản là định nghĩa DSL riêng của họ để thể hiện một khái niệm tương tự.
Hightower

5

Vì vậy, bạn đang có hai dịch vụ:

  1. Hóa đơn dịch vụ vi mô
  2. Dịch vụ vi lô hàng

Trong cuộc sống thực, bạn sẽ có một cái gì đó nơi bạn giữ trạng thái trật tự. Hãy gọi nó là dịch vụ đặt hàng. Tiếp theo bạn có các trường hợp sử dụng xử lý đơn hàng, trong đó biết phải làm gì khi lệnh chuyển từ trạng thái này sang trạng thái khác. Tất cả các dịch vụ này đều chứa một tập hợp dữ liệu nhất định và bây giờ bạn cần một thứ khác, đó là tất cả sự phối hợp. Đây có thể là:

  • Một GUI đơn giản biết tất cả các dịch vụ của bạn và triển khai các trường hợp sử dụng ("Tôi đã hoàn thành" gọi dịch vụ giao hàng)
  • Một công cụ xử lý nghiệp vụ, chờ đợi một sự kiện "Tôi đã hoàn thành". Động cơ này thực hiện các trường hợp sử dụng và dòng chảy.
  • Một dịch vụ vi điều phối, giả sử chính dịch vụ xử lý đơn hàng biết các trường hợp lưu lượng / sử dụng tên miền của bạn
  • Bất cứ điều gì khác tôi chưa nghĩ về

Điểm chính với điều này là điều khiển bên ngoài. Điều này là do tất cả các thành phần ứng dụng của bạn là các khối xây dựng riêng lẻ, được ghép lỏng lẻo. Nếu trường hợp sử dụng của bạn thay đổi, bạn phải thay đổi một thành phần ở một nơi, đó là thành phần điều phối. Nếu bạn thêm một luồng đơn hàng khác nhau, bạn có thể dễ dàng thêm một dàn nhạc khác không can thiệp vào luồng đầu tiên. Tư duy dịch vụ vi mô không chỉ về khả năng mở rộng và thực hiện các API REST ưa thích mà còn về cấu trúc rõ ràng, giảm sự phụ thuộc giữa các thành phần và tái sử dụng dữ liệu và chức năng chung được chia sẻ trong toàn doanh nghiệp của bạn.

HTH, Mark


1

Nếu Nhà nước cần được quản lý thì Nguồn sự kiện với CQRS là cách giao tiếp lý tưởng. Khác, một hệ thống nhắn tin không đồng bộ (AMQP) có thể được sử dụng để liên lạc giữa các dịch vụ siêu nhỏ.

Từ câu hỏi của bạn, rõ ràng ES với CQRS phải là sự pha trộn phù hợp. Nếu sử dụng java, hãy xem Axon framework. Hoặc xây dựng một giải pháp tùy chỉnh bằng Kafka hoặc RabbitMQ.


-2

tôi đã viết một vài bài viết về chủ đề này:

Có lẽ những bài viết này cũng có thể giúp:

Mẫu API Gateway - Api hạt chi tiết so với apis hạt mịn

https://www.linkedin.com/pulse/api-gateway-potype-ronen-hamias/ https://www.linkedin.com/pulse/successfulapi-ronen-hamias/

API dịch vụ hạt mịn so với hạt mịn

Theo định nghĩa, hoạt động dịch vụ chi tiết thô có phạm vi rộng hơn dịch vụ chi tiết, mặc dù các điều khoản này là tương đối. độ phức tạp thiết kế tăng chi tiết nhưng có thể giảm số lượng cuộc gọi cần thiết để hoàn thành một nhiệm vụ. tại kiến ​​trúc dịch vụ vi mô, hạt thô có thể cư trú ở lớp API Gateway và phối hợp một số dịch vụ vi mô để hoàn thành hoạt động kinh doanh cụ thể. API chi tiết thô cần phải được thiết kế cẩn thận vì liên quan đến một số dịch vụ vi mô quản lý các lĩnh vực chuyên môn khác nhau có nguy cơ gây lo ngại lẫn lộn trong API đơn và phá vỡ các quy tắc được mô tả ở trên. API chi tiết thô có thể đề xuất mức độ chi tiết mới cho các chức năng kinh doanh không tồn tại ở nơi khác. ví dụ thuê nhân viên có thể liên quan đến hai cuộc gọi microservice đến hệ thống nhân sự để tạo ID nhân viên và một cuộc gọi khác đến hệ thống LDAP để tạo tài khoản người dùng. ngoài ra, khách hàng có thể đã thực hiện hai lệnh gọi API chi tiết để đạt được cùng một nhiệm vụ. trong khi chi tiết thô đại diện cho tài khoản người dùng tạo trường hợp sử dụng nghiệp vụ, API chi tiết thể hiện các khả năng liên quan đến nhiệm vụ đó. API chi tiết hơn nữa có thể liên quan đến các công nghệ và giao thức truyền thông khác nhau trong khi các chi tiết thô được phân loại chúng thành luồng thống nhất. Khi thiết kế một hệ thống, hãy xem xét cả hai lần nữa, không có cách tiếp cận vàng nào giải quyết mọi thứ và có sự thay đổi cho mỗi thứ. Hạt thô đặc biệt phù hợp vì các dịch vụ sẽ được sử dụng trong các bối cảnh kinh doanh khác, chẳng hạn như các ứng dụng khác,


-2

câu trả lời cho câu hỏi ban đầu là mẫu SAGA.


4
Muốn mở rộng câu trả lời của bạn?
Patrick Mevzek

Saga cố gắng bắt chước các giao dịch, cho mỗi thao tác bạn cung cấp một thao tác hoàn tác. Nếu một chuỗi các hoạt động thất bại, các hoạt động hoàn tác sẽ được gọi trở lại nguồn gốc.
sschrass

Hình như một số câu trả lời ngẫu nhiên. Các công phu cần thiết.
bharatesh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.