我有问题使用微服务之间的实体,我有microservice1有团队实体我需要在microservice2中使用团队实体,我的意思是我需要在microservice2中导入TeamRepository.java,怎么能做到这一点jhipster?在其他jijster微服务中使用实体
0
A
回答
1
你不能这样做,你不应该这样做。您不能试图共享JPA实体和Spring存储库,它完全违背了微服务的目的,就像试图构建分布式整体,这是一种反模式。
每个微服务都有自己的数据库,如果microservice2需要访问一些microservice1数据,它必须通过microservice1 REST API来完成。有关详细信息,请参阅https://github.com/jhipster/generator-jhipster/issues/3649。
或者,如果您有这样的需求,它可能是一个强烈的信号,您必须重构您的服务并重新考虑其边界。这是微服务架构中最难的部分。
1
这是一个有广泛答案的问题,因为有几种方法可行。
最简单的方法是调用第一个应用程序的端点,它通过REST API公开您的团队实体。这直接意味着,每当您的第二个服务需要对团队实体进行操作时,它都会通过HTTP检索一个或多个服务。目前这主要是覆盖在UAA配置(使用认证JHipster UAA)
随着UAA,你可以定义非常相似JPA档案库里的东西:
@AuthorizedFeignClient(name = "microservice1")
public interface TeamClient {
@RequestMapping(value = "/api/teams/", method = RequestMethod.GET)
List<Team> findTeams();
@RequestMapping(value = "/api/teams/{id}", method = RequestMethod.GET)
Team findTeam(@PathVariable("id") Long id);
}
看起来你定义库的方式,但是可以通过地狱式的方式与REST合作。它还为您处理安全问题,因此您可以确保只有定义的用户或服务才能访问您的资源。更多关于这个解决方案的信息here
这个策略的优点是它的简单性和现成的可用性来自Spring和JHipster的实现。缺点是,当您的设计迫使您经常使用这些请求时,性能可能会非常低,从而导致巨大的网络负载。
解决此问题的其他方法是使用事件驱动系统,如Spring Cloud Bus,Event-Sourcing,CQRS等......但是,这些选项不是由JHipster直接支持的,需要一些时间才能进入,因为它是不是微不足道的。
相关问题
- 1. 使用其他微服务进行其他调用
- 2. 微服务的其他服务
- 3. JHipster微服务实体
- 4. 春微服务:响应与信息来自其他微服务
- 5. Spring Cloud微服务,与其他微服务一起使用密码保护的微服务
- 6. 微服务在实践中
- 7. 使用其他实体
- 8. 微服务如何可以与JHipster中的其他微服务对话
- 9. 春季启动微处理服务 - 从影响其他微服务
- 10. 建议实体/业务对象验证,其中验证是依赖于其他实体/服务
- 11. 在微服务设计中封装ORM实体
- 12. 跟踪谁在微服务中创建或更改实体
- 13. 其他服务
- 14. 向实体框架支持的域服务添加其他实体
- 15. 使用Axis生成调用其他Web服务的Web服务实现
- 16. 测试使用其他服务的角度服务使用$ http
- 17. JPA:许多其他实体类使用的公共实体
- 18. 微服务 - 安全实施
- 19. 使用$ resource与其他服务
- 20. 使用AngularJS服务从其他模块
- 21. 其他Web服务使用ZEND
- 22. AngularJS使用JAX-RS其他Web服务
- 23. NodeJS中的微服务体系结构
- 24. GWT RPC:使用其他服务实现的方法失败
- 25. 微服务:数据库和微服务实例
- 26. 使用Spring的其他Web服务不在weblogic中调用12.2.1
- 27. 微调器使用IF其他
- 28. TableController和“其他”实体
- 29. 如何通过RIA服务获得实体及其子实体
- 30. 微服务依赖于其他人做任何事