跳转到主要内容
Chinese, Simplified

在多租户环境中运行的微服务必须解决其他问题。这些微服务必须能够在每个服务中引用和应用租户上下文。同时,我们的目标也是限制开发人员在代码中引入租户意识的程度。

为了实现这一目标,SaaS微服务无论其计算模型如何,都应该引入库、模块和共享结构,以将租户特定的处理推送到代码中。这些构造隐藏了解析和应用租户上下文所需的策略和机制。

图10中的图表展示了如何简化微服务的多租户开发。这里的关键思想是,我们采取了任何依赖租户上下文的方法,并使用了库来应用多租户策略。

这个示例说明了SaaS微服务可能需要访问租户上下文的许多场景。流程从调用微服务开始,请求获取产品列表。在我们服务的代码中,您的服务会记录一条消息。微服务开发人员只需将消息记录到日志包装器中。这个包装器从令牌管理器获取租户上下文,并将该上下文注入到我们的消息中,在本例中,该消息发布到AmazonS3。我们的日志策略以及租户数据在日志中的登录方式由我们选择包含在日志助手中的任何策略管理。

这一主题在这里的其他体验中继续。我们对getProducts()的调用首先从令牌管理器获取租户标识符。然后,它使用此上下文从隔离管理器获取租户范围的凭据,然后使用这些凭据从DynamoDB获取产品数据。

图10:开发多租户微服务

最后,我们的服务使用解析租户标识符和将租户上下文注入度量消息的相同机制来记录度量(可能是执行时间)。

这里概述的实践并不是要将重量级的构造引入到微服务中。这种租赁的抽象遵循将公共概念推入共享代码的一般设计实践。需要注意的是,图中表示的所有概念都在单个微服务的上下文中运行。这些块中的每一个都简单地表示微服务重用的代码。将这些概念分解为单独的服务会增加延迟和复杂性,这通常是不合理的。

原文地址
https://docs.aws.amazon.com/wellarchitected/latest/saas-lens/multi-tenant-microservices.html
本文地址
Article

微信

知识星球

微信公众号

视频号