用户作为微服务

Posted

技术标签:

【中文标题】用户作为微服务【英文标题】:User as a microservice 【发布时间】:2017-09-22 09:24:57 【问题描述】:

我正在开发作为产品的 PAAS 解决方案。我们在几个微服务中划分了业务流程。流程的一个核心部分与几乎所有微服务密切相关。

创建一个单独的服务来管理数据(例如用户管理)是一种好习惯吗?实施后,只有这个服务才能访问用户和其他相关的数据库表。所有其他服务都必须调用这个新的用户微服务来执行与用户相关的任务。

这种方法将强制我们通过添加非规范化来重构 DB 模式。我们不会得到在多个微服务之间提供服务的基础表。如果多个服务需要数据,将通过微服务进行共享。

【问题讨论】:

看起来很合理,但你必须确保这个瓶颈不会减慢你的系统。像往常一样,根据需要配置并提供冗余。我认为微服务是否是一种方法的争论超出了本网站的范围。 【参考方案1】:

我会说是的。

毕竟,用户凭据、授权认证通常集中到一个逻辑单元中(请注意,这个“逻辑单元”可能是单个服务器或具有统一接口的分布式解决方案。)

这通常包括用户个人资料管理。请注意,有时您还有一个单独的组件或单元。这完全可以是一个单独的微服务。

为什么?因为管理用户配置文件不同于所有其他服务,包括身份验证和授权。

现在,如果这是一个单一的物理部署点,那么这将是一个瓶颈。但如果这是一个分布式服务(即同一个微服务的多个实例,这是另一个讨论的话题),那么这种担忧就减轻了。

即使在单体应用程序中(即写得好),您通常也会将用户身份验证和管理视为独立于其他组件的独立组件。

希望这会有所帮助。

【讨论】:

以上是关于用户作为微服务的主要内容,如果未能解决你的问题,请参考以下文章

具有 OAuth2-ResourceServer 的 Spring 微服务仅返回 String 作为主体而不是我的自定义用户

kong 集成微服务的用户注册+认证

服务微化(真的是可独立替换和升级吗?)

微服务

微服务设计原则

用户注册+与kong集成的微服务的身份验证