[英]How should I design my Spring Microservice?
我正在尝试为一个业余项目创建微服务Microservice architecture
,但我对某些决定感到困惑。 因为我以前从未使用过微服务,您能帮我吗?
AngularJS
GUI需要显示一些下拉列表或值列表(例如:国家/地区列表)。 这可以使用被获取Microservice
REST调用,但应该在哪里值从何而来? 我可以从Config Server
获取它们吗? 还是应该来自Database
? 如果是后者,那么每个微服务都应该具有自己的数据库以获取查询值,或者它可以是一个公用数据库吗? CRUD
也重新用于验证? DB
在这些调用之间保持某种状态(尤其是要注意Web服务调用失败的情况),然后将状态最终传递给GUI? 首先,没有单向设计微服务 ,必须根据用例和项目要求进行选择。
我可以将它们保存在配置服务器中吗? 还是应该来自数据库?
同样,这取决于用例和需求。 但是,由于每个MS都应该有自己的数据库,所以如果国家/地区只有名称,则可以使用数据库。 但是,如果他们与城市/州有某种关系,则应仅使用DB。
如果数据库应该每个微服务都具有自己的数据库以获取查询值,或者可以是一个通用数据库?
否,IMO多个MS不应依赖于单个DB,因为如果DB发生故障,则所有MS都将失败,因此不应该这样做。 每个MS应该与其他DB或MS一起单独工作。
验证服务应为所有UseCases / Screens的通用微服务
与第2点相同
在后端不是数据库调用而是另一个Web服务调用的情况下,如何处理? 我是否仍需要一些本地数据库在这些调用之间保持某种状态,然后将状态最终传递给GUI?
如果使用的是HTTP,则不应保存任何请求的状态。 如果要将请求重定向到另一个MS,则可以使用Feign客户端 ,该客户端提供了一种很好的方式来调用rest-api
和其他重要功能,例如: Load balancing
。
微服务架构很简单。 在这里,我们将每个任务划分为单独的服务(例如Spring-boot应用程序)。 在每个应用程序示例中都会有登录功能,注册功能等等。每一个都会在微服务架构中提供独立的服务。
1.您可以将其存储在数据库中,因为如果要添加更多值,可以轻松添加。 您可以维护单独或单个数据库。 每个微服务具有单独集合或表的单个数据库。
3.我认为你必须使用本地数据库。
微服务是一组松散耦合的服务。 例如,如果您正在创建电子商务应用程序,则用户管理可以是一项服务, 订单管理可以是一项服务, 退款和退款管理可以是另一项服务。 现在,这些服务中的每一个都可以进一步划分为较小的单元,可以将它们称为API端点。 例如, 用户管理可以将登录名作为端点,将注册名作为另一个端点。
如果您想真正利用微服务架构的功能,这就是我的建议。 对于上面的示例,为每个服务创建3个Springboot应用程序。 此后,您应该做的第一件事是在这些应用程序之间建立信任。 我希望JWT建立信任关系。 之后,一切都是小菜一碟。 这是您要寻找的答案:
理想情况下,应该使用数据库而不是将值保存在配置服务器中来获取国家/地区列表,这样就不必在每次添加新国家/地区时都重新编译代码。
如果您要指的是基于角色的访问,则可以使用@PreAuthorize
轻松限制访问。
您可以在此用例中使用OkHttp或任何其他HttpClient。 而且您当然不需要维护任何本地数据库。 但是,如果需要,您可以缓存webservice调用的输出。
PS:如果您不了解所有美味佳肴,那么在微服务之间建立信任可能是一项复杂的任务。 在这种情况下,我建议继续使用单个Springboot应用程序。 这是一个整体架构。 我仍然会推荐JWT。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.