首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microservices项目结构

Microservices项目结构
EN

Stack Overflow用户
提问于 2016-07-14 17:43:38
回答 2查看 5.1K关注 0票数 0

我正在从事一个项目,在这个项目中,我们将部署一个完整的Spring微服务体系结构,以及支持诸如负载平衡、服务注册中心、边缘服务器和集中监视等服务。

我有一个项目,它将在所有核心微服务之间共享,其中包含DAO和核心微服务的所有依赖项。我希望能够发布一个~60 1Mb的jar,并使其他Spring核心微服务非常轻量级(<1Mb)。在运行时,核心微服务将引用其类路径上的共享jar。

我设置该项目的方式是有一个独立的项目,其结构如下:

代码语言:javascript
复制
|shared_project
|pom.xml

|ms-1
|pom.xml

|ms-2
|pom.xml

共享项目使用maven程序集插件创建一个大jar,并将其复制到本地的.m2回购系统中。ms-1和ms-2 poms使用maven-jar-plugin创建它们的jar,并具有一个依赖项,即共享项目。

我相信这不是处理这件事的最好方法。它在单元测试期间产生问题,我不得不想象它会在最后产生问题。我看到这是通过父母在pom文件中、在另一个目录中嵌套项目以及其他方式完成的。

我想知道的是,通过使用Maven将Spring项目的依赖项和共享代码保持为集中化和外部化的最佳实践是什么,以便您经常滚动的项目保持轻量级和解耦?

奖金问题:

  1. 我们将使用Jenkins/TeamCity进行CI和自动化测试这一事实是否会影响答案?
  2. 在启动期间,每个项目在其类路径中引用的文件系统上有一个共享jar是否会带来任何挑战?根据需求,我们可以灵活地划分10个微服务实例--1和3的微服务-2。

编辑:我认为这里已经有了一个很好的答案:Parent pom and microservices

EN

回答 2

Stack Overflow用户

发布于 2018-08-11 06:17:40

很抱歉,两年后回复,但这是我第一次点击搜索引擎。您提到了共享DAO等等,但就我所理解的微服务而言,根本不共享DAO不是主要目标之一吗?这个结构不是真的破坏了您的微服务体系结构吗?两年后对此有何反馈?)

但我确实同意,有一个非常小的代码库,可以共享。但它只是一些基本的用途,例外的基础,等等,所以真正的基本的东西,可以在公司的任何项目之间共享。

我永远不会创建共享的核心代码库或/和与外部jars依赖的部署。根据我的理解,基于java的微服务的部署必须像"java -jar application.jar“一样简单.使应用程序的本地测试、CI、部署和替换变得非常容易。

想知道其他的意见

(愉快的编码;)

票数 2
EN

Stack Overflow用户

发布于 2018-08-11 06:45:59

这就是我们在企业应用程序中所做的工作:

创建一个新的maven项目,它将作为所有项目的uber jar。将所需的所有应用程序作为此项目中的依赖项添加。在这里添加maven阴影插件。在这个uber中创建一个带有runner classpublic static void main(String[] args),它初始化所有bean并启动所有应用程序。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38380827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档