Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 从业务方法还是技术方法看微服务体系结构?_Rest_Docker_Cloud_Microservices - Fatal编程技术网

Rest 从业务方法还是技术方法看微服务体系结构?

Rest 从业务方法还是技术方法看微服务体系结构?,rest,docker,cloud,microservices,Rest,Docker,Cloud,Microservices,我们的团队正在尝试解耦一个单片spring mvc管理应用程序(创建、更新、删除),我们希望采用一种基于微服务的架构 经过一番研究,最好的办法似乎是根据软件的特定部分所解决的问题创建微服务,例如管理客户端 当我们阅读一些定义时,就会出现问题,如中的以下定义: 在软件工程中,单片应用程序描述 单层软件应用程序,其中用户界面和 数据访问代码从单个程序组合到单个程序中 站台 基于这个定义,我的应用程序不是单一的,因为它在层中完全分离,但它也没有在微服务体系结构中找到,这让我感到困惑,因为在web中,所

我们的团队正在尝试解耦一个单片spring mvc管理应用程序(创建、更新、删除),我们希望采用一种基于微服务的架构

经过一番研究,最好的办法似乎是根据软件的特定部分所解决的问题创建微服务,例如管理客户端

当我们阅读一些定义时,就会出现问题,如中的以下定义:

在软件工程中,单片应用程序描述 单层软件应用程序,其中用户界面和 数据访问代码从单个程序组合到单个程序中 站台

基于这个定义,我的应用程序不是单一的,因为它在层中完全分离,但它也没有在微服务体系结构中找到,这让我感到困惑,因为在web中,所有的东西都是关于单片与微服务的

那么,是否应该根据微服务解决的业务问题来设计微服务体系结构?

是否应根据应用程序分层的方式设计微服务体系结构?


谢谢。

我喜欢将每个微服务视为独立的较小的整体。当您强迫自己将遗留应用程序拆分为更小的整体时,您会发现:

  • 60%的代码是脚手架,需要在多个服务中重复

  • 如果您事先建立了what goes where规则,则更容易拆分(并以这种方式维护它们)

  • 最常见的方法是按功能区域划分应用程序。为了回答您的问题,我更同意右上角的图片,假设您打算在那里显示多个容器


    关于上面的#1,通常有一大堆脚手架模块,你毕竟可以避免手写。

    根据我的经验,微服务最明显的优势是能够水平扩展。用户分析需要多长时间?只需再增加10名工人。完成。那就撤掉吧。无需向运行monolith的本已昂贵的服务器添加更多RAM/CPU/任何东西

    不要提前计划尝试分离ClientManager微服务-这应该只是一个类

    您考虑迁移到微服务是有原因的。有些东西占用了太多的资源找出最有问题的流程,使一切都变慢,并为其创建微服务。例如,可以是报告生成、用户创建、数据发布。从规划API开始。它将明确说明,它将承担什么责任以及将使用多少资源。当您知道它应该做什么时,正确地命名它

    在这个过程中,敏捷软件方法是你最好的朋友。把这些过程一个接一个地进行实验、迭代和评估。随着时间的推移,微服务应该如何做将变得显而易见

    还有一个热门话题是如何使用微服务组织代码——我倾向于使用一个包含所有代码的单一存储库

    • 优点:多个服务的一次请求、简单的UTIL共享、通用依赖性、通用部署过程和更简单的自动化
    • 缺点:你很容易破坏API合同,在一个微服务中做太多的工作(也就是说,它可能承担其他服务的责任)

    事实上,在不同的项目中,有许多操作做相同的事情,并且它们在不断变化,如果添加了我们需要停止所有项目进行更新的功能,即使它是一个库,也会发生这种情况。我们认为,使用微服务,软件扩展更容易、更高效。现在,我们正在设计这个API。如果在多个项目中做类似的事情,那么我认为您应该有一个带有版本化API的抽象微服务。这样,您可以为新的API版本部署更改,但仍然支持其他项目的旧流程。这样,您就不会停机。我在API的生产环境中做到了这一点,该API每秒提供2k个请求,零停机时间。