jhipster 3 从单体迁移到微服务
Posted
技术标签:
【中文标题】jhipster 3 从单体迁移到微服务【英文标题】:jhipster 3 Migrate from monolithic to microservices 【发布时间】:2017-01-06 14:05:51 【问题描述】:目前我有一个 JHipster 3.3 单体应用程序,我想迁移到微服务架构。我已经创建了注册表、网关和 uaa 服务。现在我需要将我的应用程序的核心业务迁移到微服务中。有执行它的设施吗?我可以自动制作吗?
【问题讨论】:
【参考方案1】:您可以将您的单体应用转换为服务,或者从您的实体定义中重新生成它。
第一种方法需要对 Spring Cloud 有很好的了解,首先使用 @EnableEurekaClient
注释您的应用程序,将 Spring Cloud 上缺少的依赖项添加到您的 pom.xml
,将缺少的属性添加到您的 application*.yml
,创建 @987654324 @ 文件。然后您将您的客户端部分移动到您的网关。这并不容易,尤其是如果您是 Spring Cloud 新手。
第二种方法要求您生成一个与您的单体应用具有相同选项的微服务应用程序,然后将包含您的实体定义的 .jhipster
文件夹复制到其中,然后按照与您相同的顺序为每个实体运行 yo jhipster:entity <entityName>
重新生成它们最初创建它们,然后也在网关上生成 htem 以生成客户端部分。
您还应该花时间考虑为什么要迁移,如果您将单体应用程序转变为单一服务,那么这可能是个坏主意,因为您只会增加复杂性,只有在您计划时才有意义添加更多服务和/或将您的单体应用拆分为多个服务。 O'Reilly 上有一本很好的免费电子书和视频:“微服务反模式和陷阱”
【讨论】:
【参考方案2】:首先,我还想订阅 Gaël 答案的最后一部分:
想想你为什么要迁移?
就我个人而言,我目前正处于迁移过程中。我在 2015 年开始了一个 JHipster 单体应用程序(当时这是唯一的选择 :)),我仍在开发和添加新功能。对于我的单体应用,我决定迁移到微服务,因为我们增加了团队并希望在未来使用 DDD。我必须承认,一开始会有一些开销,而且学习曲线非常陡峭,但最终结果是非常有益的,尤其是如果你相信 CI (y)
这就是我迁移单体应用的方式:
-
确保您已提交所有源并与您的 VSC 同步(我使用 git 作为 DVCS)
无需任何更改,只需运行 jhipster 生成器并覆盖所有旧源代码
制作一个 git diff 以概览从 jhipster 生成的文件以及您已修改的文件
-
如果您没有更改 jhipster 生成的文件格式,应该只是 webapp 文件夹和配置文件中的一些文件
如果您仅因为格式而存在差异,我建议您检查代码,然后更新您的单体应用程序的基本代码
目标是在使用 jhipster 生成器重新生成单体应用程序时尽可能减少差异(迁移到微服务时要检查的文件越少越好)
-
在该文件中,您应该将 applicationType 从 monolith 更改为 getaway 和 authenticationType 从你所拥有的到 jwt 例如
.yo-rc.json
"jhipsterVersion": "3.5.1",
"serverPort": "8080",
"applicationType": "gateway",
"jhiPrefix": "jhi",
-
合并新生成的文件后,您现在应该拥有微服务的网关(可能是您需要删除一些类,具体取决于您的单体使用的身份验证类型)
-
就我个人而言,我现在正在努力将网关中存在的一些职责(旧单体所做的所有工作人员)迁移到单独的微服务中
6.1 中提到的服务迁移与向应用添加新功能同时进行,这些新功能将作为新的微服务添加
我的建议是小步/增量,如果你有一个 CI 那就太好了,这样你就可以尽快得到关于你的迁移的反馈;)
祝你好运。 干杯,老兄
【讨论】:
以上是关于jhipster 3 从单体迁移到微服务的主要内容,如果未能解决你的问题,请参考以下文章