小编Joh*_*ibe的帖子

同时为monoliths和微服务设计java项目

我想知道你如何将java中的项目模块划分为monolith,以及以后将模块转换为微服务的可能性?
我的个人命名如下:

com.company.shopapp.product
...product.domain (ddd, services, repositories, entities, aggregates, command handlers - everything with package scope)
...product.api (everything with public scope)
...product.controller (CQRS endpoints for commands in web perspective - (package scope))
...product.query(CQRS - package scope)

com.company.shopapp.sales
- domain
- api 
- controller
- query 
Run Code Online (Sandbox Code Playgroud)

我们这里的基本上是产品管理上下文和销售上下文作为包.

模块仅使用公共接口(api包)相互通信.在我的项目中,我使用"..api.ProductFacade"来集中通信点.

当我的"销售"模块增长时,我将通过将"..api.ProductFacade"接口实现为"rest"或"soap"客户端将其转换为微服务,另一方面,我将基于ProductFacade接口创建Endpoint/RestController.包"com.company.shopapp.product.api"将转换为扩展库并添加到两个项目中.

编辑:我可以使用@Feign库开箱即用. https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-feign.html#spring-cloud-feign-inheritance

整个想法感觉很好,但也许您有更好的方法来设计项目并确保将其分解为微服务不会破坏整个应用程序.

java scope domain-driven-design package microservices

5
推荐指数
1
解决办法
519
查看次数