【问题标题】:Data Model Share in Administrations Micro Service管理微服务中的数据模型共享
【发布时间】:2018-12-17 08:05:51
【问题描述】:

谁能帮忙理解一下。

我们正在使用微服务架构开发应用程序现在我们有不同的结构。

根据功能我们制作了不同的微服务。

现在我们被一分挡住了。

除了不同的 Actor,我们还有“管理”或“客户服务”用户。

从他们那里,我们有一些特定的 API。

我们对此有疑问。

1) Do we need to consider creating different micro service project.
2) Assume we consider different micro services, do we need to share all the domain models to this micro service.

3) Assume, we keep Admin or Customer Service APIS in respective Micro services, how good it is. my point is about exposing or potential to expose Admin API to the world.

【问题讨论】:

    标签: spring-boot jakarta-ee web-applications microservices


    【解决方案1】:

    1) 我们是否需要考虑创建不同的微服务项目。

    如果您的数据迁移到微服务架构有意义,是的,您应该考虑微服务架构。

    3) 假设,我们在各自的 Micro 中保留 Admin 或 Customer Service APIS 服务,多好。我的观点是关于暴露或可能 向世界公开 Admin API

    恐怕您从错误的角度看待这个问题。用户的角色不应该是驱动微服务设计的角色。相反,它应该是您的数据/实体/域。重击规则是不同微服务的数据存储应该不同。

    2) 假设我们考虑不同的微服务,是否需要共享 此微服务的所有领域模型。

    我想在上述问题之后回答这个问题。如果你的微服务设计得当,你的域重叠将会最小化,反过来需要共享的代码(域 POJO)也将是最小的,但它仍然不是完全可以避免的。有一些创造性的方式来分享代码

    1. 将包含所有共享代码的库 jar 文件发布到您的内部仓库并在您的主项目中引用它

    2. 拥有一个包含所有微服务的父项目,以便您可以共享代码。 (恭喜,你刚刚创建了一个单一的代码库 :)) 说真的,恕我直言,这违背了微服务的精神。即使您仍然可以将每个微服务部署为单独的应用程序/jar 文件,但代码库仍然是单一的)

    一个小建议是,不要沉迷于代码共享能力。如果你决定使用像 go/rust 这样的非 JVM 语言来编写你的其他微服务怎么办。毕竟,这是微服务架构的主要卖点之一。

    【讨论】:

    • 我完全同意你的看法。一个小问题困扰着我。每个应用程序都面向客户和我们的客户服务。我了解某些工作仅由客户服务部门在客户所在的同一领域完成。现在那些在客户同一领域的客户服务级别完成的工作。您认为这些 APIS 与客户使用相同的微服务吗?我之所以问这个问题是因为,如果我们想在客户服务级别添加额外的安全级别和/或扩大面向客户的服务,这变得有点棘手。
    • @Kumar.. 微服务架构只是现有的软件架构之一(最近恰好引起了一些关注)。这是一个功能即服务(无服务器/AWS lambda)的时代。有些人甚至回到单体架构segment.com/blog/goodbye-microservicesnews.ycombinator.com/item?id=17499137。你必须选择更适合你的用例,这里没有正确或错误的答案。
    • 如果您认为将管理功能作为一项单独的服务分离会给您带来更大的灵活性和固有的安全性,那么您可以随时证明您的选择是合理的。
    • 我应该接受这个。是的,我们绝对应该遵循要求,而不是新的流行语。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 2019-08-19
    • 2015-06-10
    • 2016-07-30
    • 2018-05-01
    • 2019-11-19
    相关资源
    最近更新 更多