我们在 spring 中实现微服务架构时是否创建不同的项目

Do we create difference projects when implementing micro services architecture in spring

我对微服务架构感到困惑。我无法理解如何在 spring 中实现微服务架构。在 spring 中,我们使用 @RestController 来表示休息 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
}

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

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

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

微服务分离需要从功能角度(Z轴缩放)而不是技术角度思考。当你说每个单独的服务时,这可能并不意味着每个 api 应该作为不同的服务放置,它可以被认为是一组 api 构成对用户的逻辑服务,可以单独developer/tested/deployed/managed。 当您拥有可执行用户管理、库存管理、订单管理等所有功能的单体应用程序时,将这些模块分解为微服务是有意义的,这样完整的流程就可以通过这些服务之间的交互来构建。还要从扩展的角度考虑,是否需要根据需求扩展各个服务。

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