首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在微服务体系结构中,在一个服务的内部客户端之间共享请求和响应契约的好方法是什么?

在微服务体系结构中,在一个服务的内部客户端之间共享请求和响应契约的好方法是什么?
EN

Stack Overflow用户
提问于 2022-01-20 16:48:14
回答 1查看 438关注 0票数 2

我有4项服务如下-

NotesResponse

  • Reminder-service

  • Notes --服务--获取NotesRequest和生成AssistantResponse

--获取ReminderRequest和生成AssistantResponse --获取TodoRequest和生成TodoResponse

  • Personal-assistant服务--获取AssistantRequest和AssistantResponse

个人助理服务在内部调用3项服务,即Notes服务、提醒服务和Todo服务.备注-服务将包含这两个请求和响应pojos在其中-

  1. NotesRequest.java
  2. NotesResponse.java

但是要在Rest客户端的帮助下调用它,个人助理也需要这些职位。一种可能的方法是创建一个具有公共服务名称的公共模块,并将每个服务的可共享请求响应对象放在公共服务中。每个服务模块都将依赖于公共服务。

是否有好的方法使代码整洁和模块化,并使部署独立。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-20 17:02:08

我会考虑两种可能性:

1.-使用像swagger (或similiar)这样的框架来公开API规范(例如通过OpenAPI )。这可以与代码生成工具一起使用来生成客户端。并在需要使用该服务的客户端的项目中使客户端生成成为构建过程的一部分。不要使用版本控制生成的代码,这是一个错误的做法。

2.-在每个服务项目中创建一个契约模块,其中您将只有契约(请求、响应和api接口,如JAX接口或Spring接口)。此模块可用作该服务需要客户端的项目中的依赖项。

使用哪一种取决于您使用的技术以及所使用的客户需求和标准。

用示例更新

例如,有了选项2,notes项目的项目结构如下:

代码语言:javascript
复制
-notes-parent
    -notes-contract
    -notes-service

每一个都有自己的pom.xml。

module

  • contract只是一个容器根,它包含请求、响应和服务内部。这将用作希望查询可部署服务本身的notes-service

  • service的项目的依赖项。这也将使用契约作为依赖项。

对所有的服务都这么做。每个xxx-service子模块都将它要查询的其他服务的所有yyy-contract模块作为依赖项。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70790171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档