【问题标题】:Does my concept follow a Microservice architecture?我的概念是否遵循微服务架构?
【发布时间】:2015-03-08 02:00:59
【问题描述】:

我在 Martin Fowler 的页面上阅读了the article on Microservices,发现它很有趣。现在我计划构建一个电子商务 Web 应用程序作为概念验证,我想知道我的概念是否被视为微服务架构。

架构由 3 个组件组成:

  • 一个基于 javascript 的单页应用程序,将 AJAX 请求发送到
  • 一个带有 REST API 的服务器,它提供通过调用其他服务接收的 JSON 数据(我认为您将此行为称为 API 网关)
  • 3 种服务:CatalogProvider、CustomersProvider、CheckoutProvider

目前这些服务都是 Magento (PHP) Shopsystem 的 API 端点。将来我计划将提供程序与其他系统交换。

所以我的问题是:

  • MS 被认为是“可独立部署的”。我知道在 JAVA 世界中,我们谈论的是一个 JAR 或 WAR 文件,但 PHP 服务如何“独立部署”?

  • 我的概念是否不遵循 MS 架构的原则,因为提供程序都是一个大型 (Magento) 系统的一部分?

感谢您的阅读。我很高兴有任何建议。

【问题讨论】:

    标签: php magento soa single-page-application microservices


    【解决方案1】:

    没有什么可以说您的架构不是 MS 架构,因为您使用的是 magento 和 PHP。但是,您必须考虑以下几点:

    • 考虑到始终能够以任何语言重写任何服务并部署在某个地方,整个系统应该继续工作。

    如果您的服务只是与 magento 紧密联系的转换/接口,并且您不能简单地用 java/C#/ruby 重写它们,那么我猜您没有 MS 架构。

    对于 PHP 可部署的工件,您通常有一些围绕服务的打包或版本控制策略。尽管 PHP 中的“部署”通常只是交换 .php 文件的文件夹。而且您不应该真正在不同服务之间共享代码/配置。如果您想更进一步,您甚至可以查看deployment tools for PHP

    【讨论】:

    • If your services are just transformation/interface very tightly linked to magento and you cannot simply rewrite them in java/C#/ruby easily, then I guess you do not have a MS architecture. --> 我确实实现了一个 Magento 模块,它扩展了 REST API 并为客户端提供了它所期望的数据结构。因此,该服务肯定与 Magento 紧密相关,例如它使用其模型.. 但我认为您仍然可以将其视为 MSA,不是吗?
    • @Rouzbeh,对此线程的响应非常晚,但无论如何,就是这样,因为将在此方法上启用的所有服务都适用于同一个 Magento 存储库/数据库,因此不是可独立部署”,这似乎不适合 MS 架构。此外,例如,订单服务将需要保留客户参考资料以说明谁下订单。我认为最小的客户信息将由这个订单服务以它喜欢的格式独立保存。这意味着相当多的去特征化,这是我们在使用 MS 架构时会遇到的问题。
    【解决方案2】:

    对于微服务架构,有SRP原则。单一责任原则。每个服务都有自己独特的责任。DB方案也应该分解。在单体应用程序中将服务作为rest导出,而不是将单体应用程序转换为微服务应用程序。

    【讨论】:

      猜你喜欢
      • 2021-05-17
      • 2017-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 2010-10-17
      • 1970-01-01
      • 2020-07-21
      相关资源
      最近更新 更多