Spring实现微服务架构时,我们是否创建了差异项目

Waq*_*Ali 3 java spring spring-mvc spring-boot microservices

我对微服务架构感到困惑。我无法理解如何在 spring 中实现微服务架构。在 spring 中,我们使用@RestControllerRest API。假设我们有两个如下所示的休息控制器

@RestController
@RequestMapping("/user")
public class UserService {
// this class will hanlder operations related to user
}

@RestController
@RequestMapping("/role")
public class RoleService {
// this class will hanlder operations related to role
}
Run Code Online (Sandbox Code Playgroud)

两个其余控制器都属于一个项目。可以说我们上面的结构是微服务吗?或者我们必须创建两个项目,一个是UserServiceProject,另一个是RoleServiceProject。在UserServiceProject我们为用户操作的rest API创建Rest Controller。在RoleServiceProject我们为角色操作的休息 API 创建了休息控制器。

正如微服务架构所说,每个服务都应该是可独立部署的。从这个定义我们可以说,如果我们有 2 个服务,我们需要创建两个项目,以便两个项目都可以独立部署。

另请注意,这两个服务共享相同的数据库,并且用户和角色之间也存在关系。

小智 5

微服务分离需要从功能角度(Z轴缩放)而不是技术角度思考。当你说每个单独的服务时,这可能并不意味着每个 api 都应该作为不同的服务放置,它可以被认为是一组 api,它们构成了对用户的逻辑服务,可以单独开发/测试/部署/管理。当您拥有完成用户管理、库存管理、订单管理等所有工作的单体应用程序时,将这些模块分解为微服务是有意义的,以便这些服务相互交互来构建完整的流程。还要从扩展方面考虑,您是否需要根据需求扩展单个服务。

但是在您的情况下,当作为两个不同的服务公开时,用户管理和角色管理可能没有多大用处。用户、角色可能是共存的实体,它们共享相同的数据库和功能来实现。