【问题标题】:Components Microservices组件微服务
【发布时间】:2022-01-21 03:22:32
【问题描述】:

这几天我正在处理不同的架构模式。特别是,我想更好地了解微服务架构。我了解基本结构,但我还没有完全弄清楚软件组件或也称为“模块”代表什么。我知道它们是软件元素,但你能给我一些具体的例子吗?例如,如果我有一个类似 whatsapp 的应用程序,那么我的服务组件之一就是消息传递“功能”。但我不明白的是各个模块的外观。(该功能的结构如何?)

谢谢!

【问题讨论】:

    标签: components microservices


    【解决方案1】:

    微服务架构是一种面向服务的架构模式,它基于单一职责分解服务。在考虑如何分解它时,我通常遵循 SOLID 的首字母缩略词(S 代表单一责任)。在您的 whatsapp 示例中,消息传递功能可以是具有单一职责的微服务。模块不是服务,它们是可以包含的可重用组件。例如,我想要一个接口模块来描述与消息传递微服务通信的有效负载。这样的模块可能包括消息模式、身份验证协议等。我会在我的微服务中使用该模块,并且我可能会在客户端中使用该模块(或类似模块)。在这方面,它与图书馆没有太大区别。但是,一个好的模块将以我可以将其作为版本依赖项包含在内的方式进行管理。

    这可能是一个更好的描述:https://stackoverflow.com/questions/53497953/difference-between-a-module-microservice/53501900#:~:text=Modules%20are%20programming%20level%20constructs,separated%20by%20a%20wire%20protocol

    【讨论】:

    • 感谢您的回答!但是有两点我没有得到。首先,您说您将在客户端中使用您描述的模块,但这怎么可能,因为我认为这些模块是在微服务中实现的,而客户端是外部访问。其次,您说您描述的模块将包括消息模式、身份验证协议等。但我原以为这些东西也将是模块,因为您需要这些东西来确保正常的消息交换。再次感谢您!
    • 对于第 1 点:模块位于服务之外,可以包含/导入到服务中。它可能会与微服务的创建同步开发。
    • 对于您的第二点:您可以拥有更多用于消息交换的模块,我只是喜欢将其用作微服务中包含的某些内容的示例,以及您将从微服务中分离出来并共享的内容(但不是可以自己成为微服务的东西)。
    • 我想比较一下模块和微服务:模块是一个可以随服务扩展的库,像库一样导入,并且不能自行扩展。微服务独立扩展,并与向它发出请求的其他服务解耦,它的职责也是单一的(它只做一件事)。
    • 非常感谢!
    猜你喜欢
    • 2019-02-12
    • 2015-10-12
    • 1970-01-01
    • 2022-01-23
    • 2020-01-07
    • 2018-02-20
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多