【问题标题】:A microservices architecture design problem? [closed]微服务架构设计问题? [关闭]
【发布时间】:2020-06-23 16:54:49
【问题描述】:

问题背景:

目前,我们正在为集团的业务系统设计统一的权限中台系统。由于设计的系统数量众多,相应的权限划分业务规则都很好。从之前的“分布在各个业务系统”,现在计划“统一在权限中心分配用户行为”。 在做架构设计的时候,一个架构图大致分为以下几种:

Architecture diagram

问题:

  1. 较低级别的服务不直接相互依赖。上层聚合服务统一对外提供服务。这种架构可以在一定程度上减少底层服务之间的耦合。但是聚合服务的存在变成了“大集合”等系统;这一步应该如何优化?
  2. 聚合服务统一后,成为业务的主要入口,因此是单点。这一步应该如何优化?
  3. 在这种架构下,上层聚合服务感觉就像一个网关。是否仍然需要入口网关?

谢谢~????

【问题讨论】:

  • 不幸的是,您提出了太多依赖于意见和推测的问题 - 不适合 Stack Overflow。
  • 感谢您的提醒。下次我会注意这个的。

标签: java php architecture microservices


【解决方案1】:
  1. 在服务器端接收请求需要入口网关,您可以使用 ELB 或任何入口控制器。
  2. 您需要对所有微服务中的每个请求进行身份验证,但不需要将所有请求发送到聚合服务。
  3. 您可以编写身份验证服务来对用户进行身份验证并从角色微服务获取角色以继续 RBAC。
  4. 一旦聚合服务认证用户比不需要向聚合微服务发送请求,token创建时间可以设置token的TTL。

  5. 但是,请求可以直接通过入口网关发送到任何微服务,目标服务可以使用 TTL 从 REDIS 中检查令牌,如果令牌过期则发送撤销通知,删除 REDIS 中的密钥,否则继续使用任何微服务基于角色。

  6. 是的,你需要入口网关,聚合微服务可以当作微服务,而不是所有微服务的上层。

【讨论】:

  • 首先感谢您的回答。您的意思是聚合服务应该与微服务属于同一级别。它存在于一些需要调用多个服务的场景,而不是作为所有业务请求的入口点。我说的对吗?
  • 这不是处理微服务的好主意,为什么你需要在某个时候调用多个服务? ,您可以使用消息代理服务,如 KAFKA、RABBITMQ,可以将消息发送到需要交换的微服务。聚合服务仅用于身份验证。
猜你喜欢
  • 1970-01-01
  • 2017-09-11
  • 2018-04-28
  • 1970-01-01
  • 2020-05-06
  • 2022-11-15
  • 1970-01-01
相关资源
最近更新 更多