Java 这是微型服务吗?

Java 这是微型服务吗?,java,spring-boot,microservices,Java,Spring Boot,Microservices,我使用SpringBoot和RESTfulAPI创建了一个简单的博客应用程序。我已将其连接到MySQL数据库,以运行一些SQL查询,如添加博客、删除博客等 我的问题如下: 这是否意味着我使用了微服务架构?体系结构何时成为微服务?(我这样问是因为许多类似的网站将应用程序称为基于微服务的应用程序。除了主应用程序,例如货币兑换而不是博客,我看不到其他区别;例如,它确实有很多方面,但它们没有对其微服务性作出贡献,IMHO) 如果我使用基于微服务的体系结构,我可以将应用程序称为水平可伸缩的吗 注意:我遵循

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

我的问题如下:

  • 这是否意味着我使用了微服务架构?体系结构何时成为微服务?(我这样问是因为许多类似的网站将应用程序称为基于微服务的应用程序。除了主应用程序,例如货币兑换而不是博客,我看不到其他区别;例如,它确实有很多方面,但它们没有对其微服务性作出贡献,IMHO)

  • 如果我使用基于微服务的体系结构,我可以将应用程序称为水平可伸缩的吗


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

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

    您已经创建了大多数人都认可的微服务。但是微服务并不构成微服务体系结构,就像树不构成森林一样

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

    我参加过的几乎每一次关于微服务的演讲都有这样一条建议:从一块巨石开始,一旦需要,就发展到微服务

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

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

  • 一点也不。微服务的使用是一种先进的体系结构模式,很难正确实现,但它在大型项目中提供了有用的好处。除非您想测试这种特定的体系结构样式,否则对于小型项目来说,这不应该有任何关系

  • 将应用程序拆分成更小的块确实会提高其可伸缩性,因为资源可以在更小的范围内增加。然而,除其他属性外,无状态性也是可伸缩体系结构的关键组件


  • 首先,你给我们看的东西看起来一点也不像微型服务

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

    举一个很好的例子来说明,这是一个基于web store的微服务,由4个微服务组成:

    • 销售服务
    • 产品和服务
    • 消息服务
    • 认证服务
    例如,在blackfriday事件中,理论上会发生大量购买,您只能扩展销售服务,从而节省其他三种服务的资源(当然,这意味着使用一系列其他技术,如代理、LB…)。如果您使用的是单片体系结构,则需要扩展所有应用程序


    如果您正确地使用了MicroService体系结构,可以说您的应用程序是水平可扩展的。

    为什么要向下投票?如果你需要更多信息,请告诉我!我就在这里更新并回答任何后续问题(如果需要的话)。您可以从阅读@AbelRoussi开始,感谢您提供有用的链接。欢迎!我认为你应该描述一下你在Q中做了什么(至少是你的项目的架构)&同时改变你的项目的标题Q@AbelRoussi,我同意,我已尽我所能准确描述了这一点。这只是一个小应用程序,所以我无法描述它比我已经做的更多。很抱歉,谢谢你的回答。所以,当你说进化到微服务时,你的意思是增加功能,对吗?例如使用名称服务器、负载平衡等?不,将功能提取到单独的专用服务中。将功能从整体中分离出来。再加上你所说的,你能详细说明哪些功能?就像这样,我遵循OOP,有不同的功能来处理不同的事情,比如创建、删除等。同样,你没有做错任何事情,你只是不够大,不能保证一个微服务架构,这很好。我不建议将微服务架构引入一家只有不到50名开发者的公司,它只为谷歌、Netflix或亚马逊等公司支付全部费用。谢谢你的回答。我的查询与我在另一个上发布的查询类似——如果我添加了负载平衡、创建多个实例等功能,那么它会成为一个微服务吗?(我想创建一个,因为我正在学习)。您可以将身份管理与博客管理分开,从而创建两个微服务,并独立运行每个微服务的多个进程(通过负载平衡器、kubernetes、docker swarm等)。这就证明了原理,明白了。你说的身份管理和博客管理是什么意思?什么身份?一个博客通常有用户帐号,用户档案等等。这就是身份管理。博客管理就是你们对博客对象所做的任何操作。好的,你们明白了。非常感谢。:)