1. iModelBank 架构

iModelBank 提供了两个主要的程序包:

  • @bentley/imodel-bank-server - 可以为单个 iModel 启动 iModelBank 服务实例的程序包

  • @bentley/imodel-bank-licensing-server - iModelBank 运行所需的许可服务

这两个程序包还依赖其他的一些程序包,例如 @bentley/imodel-bank-common-utils,而且它们都有自己的 Native AddOn(它们是特定于平台的,我们同时提供 Windows 和 Linux 版本)。尽管可以开箱即用地运行 iModelBank 服务,但是仅通过设置 iModel 和配置文件,可能您就需要编写一些其他代码来将它们集成到您自己的环境当中。

我们还提供了其他一些程序包作为示例,可以和 iModelBank 一起部署,通过下面这张图片您可以看到这些程序包:

  • @bentley/imodel-bank-gateway - 该程序包执行身份验证和请求的路由

  • @bentley/imodel-bank-local-orchestrator - 该程序包将启动并关闭其他微服务

  • @bentley/imodel-bank-local-imodel-manager - 该程序包管理iModel的创建、删除和查询

1.1. Gateway

Gateawy(网关)是集群的入口点(这是集群中唯一可从外部访问的服务)。我们可以直接暴露 iModelBank 的实例,但在那种情况下,当您想要在 iModel 之间切换时,您需要为每一个实例配置 SSL 认证证书以及为客户端配置主机名。对整个 iModelBank 的部署来说,只有一个 URL 是更方便的。

在 iModelBank Gateway 的实例程序中,身份验证是由非常简单的基本身份验证方案实现,因此它不适合在生产环境使用。您可能需要向群集中可能部署的其他服务添加其他转发。如果您收到大量请求,单个网关实例可能不够,因此您可能需要部署多个网关实例,并在它们之前安装负载均衡器。

1.2. Local Orchestrator

Orchestrator 是我们提供的另一个示例,它是业务流程的简化示例。它充当 Orchestrator 系统和其他服务(网关和 iModel manager)之间的抽象层。它可以启动或停止其他服务的实例,因此它是您应该启动的第一个服务。

如果它收到启动请求,并且已经有一个实例在运行,它将返回该实例,否则它将尝试启动这个实例。根据 orchestrator.orchestratorType 设置的值,它要么将新实例作为子进程启动,要么将实例作为 Kubernetes 中单独的 pod 进行部署(当前仅支持 iModelBank 服务实例的部署)。当网关尝试将请求路由到新服务或尝试关闭整个群集时,网关会调用 Orchestrator 服务。当 iModel manager 收到删除 iModel 的请求时,也会调用 Orchestrator 服务,因此可以关闭可能正在为该 iModel 运行的 iModelBank 实例。

1.3. iModel Manager

与 iModelHub 不同,iModelBank 在每一个 iModel 上运行一个实例,而每个实例并不知晓其他的 iModel。如果要有多个 iModel,您需要某种方式来创建这些 iModel,然后对其进行查询。iModelManager 是一个作为如何在不破坏 iModelHub API 的情况下进行工作的示例。它缺少与项目管理系统的集成,它在查询 iModel 的时候会扫描所有的目录,而不是在数据库中存储信息,并且仅支持从空模板(您无法上传自己的基准文件)创建 iModel。

1.4. iModelBank 的架构拓展

上图显示了 iModelBank 可能需要的其他服务。绿色方框中的服务由我们提供,黄色方框中的服务在我们提供的 iModelBank 中有实现好的示例程序,但它们还不适用于生产环境中。其他的所有服务或者组件都应该实现好并且一起部署,但其实这都取决于您如何计划地使用我们的 iModelBank。

白色方框中的服务并非都是必需的,例如,如果您不打算运行 iModel.js 的代理,则可能不需要 messaging 服务。上图并不包括可能与 iModelBank 一起使用的所有服务,例如,您可能需要用于管理上下文或管理授权的网站。上图还省略了 Orchestrator 服务,因为这将取决于您要把服务部署在何处,以及您可能与 iModelBank 一起部署的服务。您可以在我们的扩展页面中阅读有关上述服务的更多信息。

results matching ""

    No results matching ""