如何将2台服务器作为单独的进程运行?

时间:2019-01-24 07:32:18

标签: java spring-boot microservices

我有2个服务,每个服务都有一个控制器。

@Service
public class Service1
{
}

@RestController
@RequestMapping("/api")
public class Controller1
{
}

...

@Service
public class Service2
{
}

@RestController
@RequestMapping("/api")
public class Controller2
{
}

我想在自己的进程中运行每个服务或控制器。如何在不创建两个应用程序的情况下做到这一点?

这类似于我想要的,请参见下图: enter image description here

2 个答案:

答案 0 :(得分:0)

考虑所附的组件图,我建议您研究微服务架构。您将能够按域(电影,客户,评论)区分职责,甚至可以建立单独的访问规则(例如,对电影目录的匿名访问和对客户数据的安全访问)。每个数据存储(DB1,DB2等)将仅链接到负责的服务。此外,您将能够根据使用情况精确扩展必要的服务,例如5个电影服务,2个客户数据服务和3个评论服务。

Gradle或Maven可以轻松地使您构建带有多个子模块的大型项目。您的某些模块将是应用程序模块,而其中一些将是共享模块(模型,utils等)。

此外,我建议为每个项目设置一个单独的仓库,以简化变更管理和审查-这在很大程度上将非常有帮助。

Gradle结构示例:

根模块

  • 模型
  • 实用程序
  • 电影服务
  • 客户服务
  • 评论服务

每个服务子模块将包含其自己的@SpringBootApplication以及控制器,服务和存储库。当然,您需要将Spring Boot Gradle插件添加到每个服务子模块中。

更新: 展望未来,明智的做法是将Docker配置添加到每个服务子模块,并将每个应用程序作为Docker容器运行。 Docker将大大简化开发过程。

答案 1 :(得分:0)

如果您可以做这样的事情,那将是模棱两可的。 例如,当您调用localhost:8080 / app->哪个控制器应该响应?也许您需要使用一些标准来实现一个调度程序,应该调用哪个控制器。我不明白这种分离的好处是什么。您可以将应用程序划分为库,然后将它们添加为依赖项。