我目前正在构建一个具有微服务架构的 Spring 启动应用程序。我正在寻找重用代码的干净方法。
我的想法是在共享模块中提取通用代码。(例如,微服务中的模型类继承的基类,在任何MVC控制器中重用的接口,每个绑定上下文都相同的域代码)。具体的实现和仅服务的模型类等都在子模块(微服务)级别。
我正在与maven一起构建东西,并管理依赖关系。我的问题是如何在这样的设置中构造maven模块和依赖项。
共享库去哪儿了?如何以及何时通过依赖项构建和引用它们?使用 BOM 来管理依赖项并仅在需要时重写微服务中的特定版本是否好?如何包含物料清单?它是如何以及何时建造的?
我可以想一个我不喜欢的方法来处理它:
>
有一个(超级父级)maven pom,它处理依赖关系管理,可以包含在具有导入范围的子模块(微服务)中。(物料清单)
微服务poms构建它们的所有依赖关系(包括BOM和共享模块)
问题:
当声明构建依赖关系的子模块时,pom也必须是pom类型,所以对于每个微服务模块,我也需要一个父pom
如果超父或BOM包含一个声明所有子模块(微服务)的模块部分,我不能从ms级构建它,因为会有循环依赖。
为什么我要在bom中声明子模块?因为在像Intellij这样的一些ide中,maven插件/支持包括结构概述中的子模块。
你能给我一些好的建议来以可靠和干净的方式处理微服务的maven架构吗?(尽可能少的代码/配置重复,高性能构建等)
谢谢。
对于微服务架构,您应该关心的第一件事是服务之间的隔离。这意味着你应该尽可能少地分享。
在过去的6-7年里,我尝试了不同的方法,我可以自信地说
>
永远不要为不同的微服务使用父pom。每个微服务都可以根据我们自己的需要使用相同库的不同版本。拥有父pom最初听起来可能很方便,但从长远来看,它会产生严重的隔离问题。
不要试图关注微服务之间的代码重用。这并不意味着你不能使用实用程序库等。但是共享模型类等等。将使微服务相互结合,这将大大损害自由度/隔离。相反,你应该依靠微服务之间的适当契约。
我看到您的方法主要是为了实施方便,但随着时间的推移,您应该更多地关注其他事情,例如部署/发布、维护、测试可能因缺乏适当隔离而受到损害的组件。
Kubernetes 设计之初就是按照 Cloud Native 的理念设计的,Cloud Native 中有个重要概念就是微服务的架构设计,当将单体应用拆分微服务后, 随着服务数量的增多,如何微服务进行管理以保证服务的 SLA 呢?为了从架构层面上解决这个问题,解放程序员的创造性,避免繁琐的服务发现、监控、分布式追踪等事务,Service mesh 应运而生。 微服务 下图是Bilgin Ibr
让我们讨论一下微服务环境的体系结构。我们正在公司内部进行讨论,我想得到一些反馈。我认真考虑的是编排层(代码复制、更多移动部件改变api)。 网络应用- 原料药- 在这种情况下,服务不允许相互对话。业务流程层中的聚合服务 网络应用- 原料药- 这里允许服务相互对话,这里存在聚合服务。 账单属于哪里
我读了一些文章,看了一些视频,但在为这些微服务提供服务方面,没有找到具体的建议。我的理解是,他们应该使用自己的应用程序服务器。 我的问题是它们应该部署在不同的服务器上,还是没关系。 当它们在同一台服务器(计算机)上提供服务时,不会有端口冲突吗?
17.1 编写服务启动入口 package com.clsaa.edu.springboot; import com.clsaa.edu.springboot.bean.Product; import com.clsaa.edu.springboot.mapper.ProductMapper; import org.springframework.boot.SpringApplicati
本文向大家介绍详解Java 微服务架构,包括了详解Java 微服务架构的使用技巧和注意事项,需要的朋友参考一下 一、传统的整体式架构 传统的整体式架构都是模块化的设计逻辑,如展示(Views)、应用程序逻辑(Controller)、业务逻辑(Service)和数据访问对象(Dao),程序在编写完成后被打包部署为一个具体的应用。如图所示: 系统的水平扩展 如果要对系统进行水平扩展,通常情况下,只需要
本文向大家介绍什么是微服务架构?相关面试题,主要包含被问及什么是微服务架构?时的应答技巧和注意事项,需要的朋友参考一下 在前面你理解什么是微服务,那么对于微服务架构基本上就已经理解了。 微服务架构 就是 对微服务进行管理整合应用的。微服务架构 依赖于 微服务,是在微服务基础之上的。 例如:上面已经列举了什么是微服务。在医院里,每一个科室都是一个独立的微服务,那么 这个医院 就是 一个大型的微服务架