如果使用微服务架构实现以下功能,会使用哪种设计模式?
有一个 API 网关 和某种用户管理 服务。 API 网关将 REST API (HTTP) 调用转换为对适当消息总线的调用。
用户发送 GET 请求,并提供用户 ID 并希望检索与该用户关联的信息(例如,用户名、电子邮件等)。我可以看到这如何自然地转化为 API 网关将消息发布到 MQ,例如
{"type": "GET_USER_INFO", "uid":xxxx}
。
用户管理如何将响应发送回 API 网关,以便 API 网关将请求发送回用户?
我正在使用 Python/Flask/Gunicorn/Pika (RabbitMQ) 来实现这一点,因此任何进一步的实现技巧等都会非常有帮助。
考虑到 REST 网关需要处理安全性,直接从数据存储(DB、Keycloak、OKTA 等)访问用户详细信息是有意义的。不要构建另一个服务来访问该信息。
如果需要/希望与存储该数据的实现解耦,那么映射到后端调用的轻量级库可以完成这项工作。