【问题标题】:Is this microserviced?这是微服务吗?
【发布时间】:2018-09-29 07:52:35
【问题描述】:

我使用 Spring Boot 和 RESTful API 创建了一个简单的博客应用程序。我已将其连接到 MySQL 数据库以运行一些 SQL 查询,例如添加博客、删除博客等。

我的问题如下:

  1. 这是否意味着我使用了微服务架构?架构何时成为微服务? (我问是因为许多类似的网站都将应用程序称为基于微服务的应用程序。除了主要应用程序,例如货币兑换而不是博客,我认为没有其他区别;例如,this one - 它确实有更多方面,但是他们没有为其微服务-ness做出贡献,恕我直言)。

  2. 如果我使用基于微服务的架构,我可以将应用程序称为水平可扩展吗?

注意:我遵循的教程是here,GitHub repo 是here。

【问题讨论】:

  • 为什么要投反对票?如果您需要更多信息,请告诉我!我在这里更新和回答任何后续问题(如果需要的话)。
  • 您可以先阅读microservice architecture
  • @AbelRoussi,感谢您提供有用的链接。
  • 欢迎您!我认为您应该描述您在 Q 中所做的事情(至少是您项目的架构)并更改 Q 的标题
  • @AbelRoussi,我同意并且我已经尽我所能准确地描述了这一点。这只是一个小应用程序,所以我无法比我已经做过的更多地描述它。对此感到抱歉。

标签: java spring-boot microservices


【解决方案1】:

首先:这些不是确切的是/否问题。我会给你我的意见,但其他人会不同意。

您已经创建了大多数人都同意的微服务。但是微服务并不能构成微服务架构,就像树不能构成森林一样。

微服务架构是通过创建一个由多个分布式组件组成的更大的应用程序来定义的。您所做的是创建了一个整体(在大多数情况下这绝对没问题)。

我参加的几乎所有关于微服务的演讲都包含这样的建议:从单体开始,在需要时演变为微服务。

关于最后一个问题:如果您的应用程序是无状态的,那么它是水平可扩展的。如果您保留任何会话状态,它仍然可以水平扩展,但您需要一个智能 LB 来管理粘性会话或分布式会话。这时候事情会变得有趣,并且您可以开始考虑微服务架构。

常见问题是:如果订单数据库、购物车服务、支付提供商等出现故障,我如何才能向客户展示我的网站。服务发现、自动缩放、重试策略、不断发展的 Rest api,这些都是微服务架构中的常见问题。您使用和需要的越多,您就越能声称拥有微服务架构。

【讨论】:

  • 感谢您的回答。所以,当您说向微服务发展时,您的意思是添加功能,对吗?比如使用域名服务器、负载均衡等?
  • 不,将功能提取到单独的专用服务中。打破单体应用的功能。加上你说的话。
  • 您能详细说明一下什么样的功能?像这样,我遵循 OOP 并有不同的函数来处理不同的东西,比如创建、删除等。
  • 再说一次,你没有做错任何事,只是你的规模不足以保证微服务架构,这很好。 martinfowler.com/bliki/MicroservicePrerequisites.html
  • 我不建议将微服务架构引入开发人员少于 50 人的公司,而且只有像谷歌、Netflix 或亚马逊这样的公司才能真正支付全部费用。
【解决方案2】:
  1. 一点也不。微服务的使用是一种高级架构模式,很难正确实施,但它在大型项目中提供了有用的好处。除非您想测试这种特定的架构风格,否则这对于小型项目来说应该无关紧要。

  2. 将应用程序分成更小的块确实会增加其可伸缩性,因为可以在更小的范围内增加资源。然而,除了其他属性之外,无状态性也是可扩展架构的关键组成部分。

【讨论】:

  • 感谢您的回答。我的查询类似于我在另一个查询上发布的内容——如果我添加负载平衡、创建多个实例等功能,那么它会成为微服务吗? (我想创建一个,因为我正在学习它)。
  • 您可以将身份管理与博客管理分开,从而创建两个微服务并独立运行每个微服务的多个进程(通过负载均衡器、kubernetes、docker swarm 等)。这将证明这个原则。
  • 知道了。但是,身份管理和博客管理是什么意思? 什么的身份?
  • 一个博客通常有用户帐户、用户资料等。这就是身份管理。博客管理是您对博客对象执行的任何操作。
  • 好的,得到你们了。非常感谢。 :)
【解决方案3】:

首先,你向我们展示的根本不像微服务。

您可以说您有一个使用微服务架构的应用程序,它由具有独立功能且可扩展的微服务(哦,对吗?)组成。扩展一项服务,意味着您将运行多个实例(可能在多个主机中),并且对其他服务是透明的。

一个很好的例子来说明一个基于由 4 个微服务组成的网络商店微服务:

  • 销售微服务
  • 产品微服务
  • 消息微服务
  • 身份验证微服务

例如,在理论上会发生大量购买的黑色星期五活动中,您可以仅扩展 Sale Microsservice,节省其他三个的资源(当然这意味着使用一堆其他技术,如代理、LB 。 ..)。如果您使用的是单体架构,则需要扩展您的所有应用程序。

如果您正确使用微服务架构,是的,您可以说您的应用程序是水平可扩展的。

【讨论】:

    猜你喜欢
    • 2019-09-10
    • 2016-04-15
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-17
    • 2020-11-26
    • 2023-03-11
    • 2018-09-13
    相关资源
    最近更新 更多