Java 在春季实施微服务体系结构时,我们是否创建了不同的项目

Java 在春季实施微服务体系结构时,我们是否创建了不同的项目,java,spring,spring-mvc,spring-boot,microservices,Java,Spring,Spring Mvc,Spring Boot,Microservices,我对微服务架构感到困惑。我无法理解如何在spring中实现微服务架构。在春季,我们对RESTAPI使用@RestController。假设我们有两个rest控制器,如下所示 @RestController @RequestMapping("/user") public class UserService { // this class will hanlder operations related to user } @RestController @RequestMapping("/role

我对微服务架构感到困惑。我无法理解如何在spring中实现微服务架构。在春季,我们对RESTAPI使用
@RestController
。假设我们有两个rest控制器,如下所示

@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
}
两个rest控制器都属于一个项目。我们可以说我们上面的结构是微服务吗?或者我们必须创建两个项目,一个是
UserServiceProject
,另一个是
RoleServiceProject
。在
UserServiceProject
中,我们为用户操作的RESTAPI创建Rest控制器。在
RoleServiceProject
中,我们为角色操作的RESTAPI创建Rest控制器

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


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

微服务分离需要从功能角度(Z轴缩放)而不是技术角度来考虑。当你说每个单独的服务时,这可能并不意味着每个api都应该作为一个不同的服务存在,它可以被认为是一组api,它们构成了对用户的逻辑服务,可以单独开发/测试/部署/管理。 当你有一个单一的应用程序,它可以做任何事情,比如用户管理、库存管理、订单管理等。将这些模块分解成微服务是有意义的,这样整个流程就可以通过这些相互交互的服务来构建。另外,从扩展的角度考虑,是否需要根据需求扩展单个服务


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

我使用的是.NETWebAPI,但是是的,我为每个服务创建了一个单独的项目。每个服务都是自己的独立程序,可以执行特定的任务。然后,当所有内容都是自己的项目时,您可以将每个服务独立地部署到自己的服务器上,或者将所有内容部署到一个服务器上,每个服务都有多个虚拟机运行。如果我们为每个服务创建多个项目,以及如何处理依赖关系,就像用户与角色之间的关系一样,有很多可能性。我们想提供一个像getUserRole(id)这样的操作,然后我们将如何处理这种情况。此操作将添加到哪个服务/项目中?我认为用户服务应该能够完成与用户表/用户功能相关的所有事情。我不会有一个角色服务,它只决定用户在您的系统中的角色。这将是一项规模如此之小的服务,其好处被微服务系统固有的复杂性所抵消。类似的东西被称为纳米服务:“[a]纳米服务是一种反模式,其中服务粒度太细。[a]纳米服务是一种开销(通信、维护等)超过其效用的服务。”@victor我理解。感谢您的宝贵意见。请查看Martin Fowler,获取更多有关微服务的资源。youtube上有很多关于微服务的非常好的讨论,在我刚开始使用微服务的时候,这些讨论确实帮助了我。