微服务架构和层

Posted

技术标签:

【中文标题】微服务架构和层【英文标题】:Microservice architecturs and layers 【发布时间】:2016-08-11 12:58:02 【问题描述】:

让我们讨论一下微服务环境的架构。我们正在公司内部进行讨论,我想要一些反馈。我认真考虑的是编排层(代码重复,更多移动部件更改 API)。

选项一 - 使用编排层:

webapp -> 编排 -> 服务 -> 持久性

api -> api gw -> 编排 -> 服务 -> 持久性

在这种情况下,不允许服务相互交谈。编排层中的聚合服务

选项一 - 没有编排层:

webapp -> 服务 -> 持久性

api -> api gw -> 服务 -> 持久性

这里允许服务相互通信,这里存在聚合服务。

具体问题:

计费属于哪里? 您更喜欢哪种解决方案?优点/缺点。 其他建议?

【问题讨论】:

这不是 SO 适合的问题。作为长期会员,您知道这一点。将关闭标记为“过于宽泛”。 shit.. :-) 那我该去哪里问这种问题呢? @TheresiaSofiaSnow 你能详细说明一下你在“api gw”、“orchestration”和“service”后面的内容吗?是 micro 服务还是一些内部服务? 我也想知道 StackExchange 星系中关于软件架构的问题应该去哪里? @MikeC meta.stackexchange.com/questions/124867/… 【参考方案1】:

webapp -> 编排 -> 服务 -> 持久性

api -> api gw -> 编排 -> 服务 -> 持久性(强调我的)

我们可以备份一下吗?我想质疑这里使用的术语。

对我来说,上述堆栈在 SOA 的上下文中没有多大意义。

服务 夹在称为 orchestrationpersistence 的东西之间。但是,在 SOA 设计中,上述所有元素都是创建单一服务所必需的。

但在您的示例中,持久性是什么?不管它是什么,它似乎都在服务之外。那么服务如何持久化数据呢? Web 应用程序/API 也似乎在服务之外。那么服务如何在屏幕上显示它的数据呢?

如果您查看 SOA 的原则,特别是第二个原则:

服务是autonomous

如果服务应该是自治的,那么服务需要负责persisting it's own data。该服务还需要负责通过 UI 显示其内部状态。

我认真考虑的是编排层

因此,服务还应负责内部状态如何与外部世界进行通信,包括自身与其他服务之间的通信。

如果服务需要使用来自另一个服务的数据,那么消费者服务就有责任获取该数据。如果服务的状态发生变化,则该服务有责任让外界知道状态变化。

编排是concern,就像持久性、仪表化等一样,因此在 SOA 的上下文中最好以分布式、自主的方式实现,而不是集中式。

所以,在回答您的问题时:

帐单属于哪里?

计费属于它自己的垂直服务堆栈,包括 UI 视图、持久性、编排、通信、部署和管理。

您更喜欢哪种解决方案?优点/缺点。

如前所述,我认为不应该在提出问题的层面做出选择。我认为任何需要编排的服务都应该对此负责。

其他建议?

如果您还没有看过this,请查看它。

【讨论】:

以上是关于微服务架构和层的主要内容,如果未能解决你的问题,请参考以下文章

微服务架构总览

微服务架构是啥?

一文详解微服务架构

华为架构师揭秘微服务架构(单体架构与微服务架构对比)

谈谈微服务架构是一个怎样的存在?

微服务入门|微服务架构怎么设计