Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Architecture 多租户体系结构中的自定义用户主题_Architecture - Fatal编程技术网

Architecture 多租户体系结构中的自定义用户主题

Architecture 多租户体系结构中的自定义用户主题,architecture,Architecture,我正在设计一个多租户web应用程序,该应用程序将由以下独立组件组成: 核心RESTful API(Spring引导) 管理门户网站(Angular) 前端web UI(每个租户将不同,技术/语言待定) 前端web UI需要支持自定义用户主题。换句话说,用户将能够创建自己的主题并将其上传到应用程序(通过管理门户),然后在呈现前端web UI时使用该应用程序 这方面的一个很好的例子是Shopify——如果用户A和B访问他们各自的店面(即shopA.Shopify.com和shopB.Shopif

我正在设计一个多租户web应用程序,该应用程序将由以下独立组件组成:

  • 核心RESTful API(Spring引导)
  • 管理门户网站(Angular)
  • 前端web UI(每个租户将不同,技术/语言待定)
前端web UI需要支持自定义用户主题。换句话说,用户将能够创建自己的主题并将其上传到应用程序(通过管理门户),然后在呈现前端web UI时使用该应用程序

这方面的一个很好的例子是Shopify——如果用户A和B访问他们各自的店面(即
shopA.Shopify.com
shopB.Shopify.com
),他们的商店将使用各自的自定义主题呈现。然而,两个店面仍然使用相同的核心API进行交互(据我所知)

目前,对于高层架构,我有如下想法:

在本例中,核心API和管理UI可以作为单个实例托管,但每个租户都有自己的前端UI实例,以支持自定义主题。但是,如果可能的话,我真的希望尽量避免使用单独的前端UI实例,因为我相信从可伸缩性的角度来看,管理它会变得更加困难,并且可能会增加主机的成本

我一直在探索以下替代方法:

  • 拥有一个本地存储所有主题的UI实例,以及基于当前租户的交换机。我担心的是,我的目标是大量用户,因此可能有1000个主题
  • 将主题存储在中心位置(如S3),每当向租户的前端发出请求时,获取相关的主题文件。我关心的是在每个请求中检索主题的速度/带宽影响。我可以研究一些缓存层来帮助缓解这一问题
  • 通过使用几个UI实例,每个UI实例承载多个用户(即共享主机),使用混合方法。不过,这在路由请求时增加了一些轻微的复杂性

问题:像Shopify等公司是如何解决这个问题的?

好的,我想知道。