Orleans Architecture Design - 筒仓项目合并还是分开?
Orleans Architecture Design - Silo projects combined or separate?
有一个 IoT 数据 collection 项目和一个 IoT 数据 processing 项目。它们是单独开发和维护的。然而,在奥尔良筒仓(或筒仓集群)中共享它们之间的共同谷物将是有益的。该架构在自托管场景中的外观如何 - 一个整体孤岛,引用两个项目在孤岛内进行通信或两个独立的孤岛进行外部通信?如果在单个 silo 中,silo 可以动态发现 grain .dll 吗?
可能会有更好的答案,但在那之前:
有一些权衡取舍。在性能方面,最好将所有(所有服务的)grains 分布在整个集群中。这样,每个 grain 都可以通过 Orleans 基础设施与其他 grain 进行通信(我猜这是通过 tcp 的二进制序列化消息),而没有任何额外的开销。但是,当每个服务(或项目)都有自己的孤岛时,除了 Orleans 之外,您还需要一个网关——可能是 HTTP 侦听器。但是,在第一个示例中,您的服务是耦合的。你不能部署新版本的服务,只要有一个筒仓 运行 它的旧版本(否则,同一实体可能有 2 个颗粒)。但是,如果您关闭该孤岛,您将关闭其余的服务。这是一个非常重要的问题。
If in a single silo, can a silo dynamically discover grain .dll's
不确定你的意思。当 silo 启动时,它会递归地在其文件夹中搜索 dll,如果找到 grains,则加载它们。
有一个 IoT 数据 collection 项目和一个 IoT 数据 processing 项目。它们是单独开发和维护的。然而,在奥尔良筒仓(或筒仓集群)中共享它们之间的共同谷物将是有益的。该架构在自托管场景中的外观如何 - 一个整体孤岛,引用两个项目在孤岛内进行通信或两个独立的孤岛进行外部通信?如果在单个 silo 中,silo 可以动态发现 grain .dll 吗?
可能会有更好的答案,但在那之前:
有一些权衡取舍。在性能方面,最好将所有(所有服务的)grains 分布在整个集群中。这样,每个 grain 都可以通过 Orleans 基础设施与其他 grain 进行通信(我猜这是通过 tcp 的二进制序列化消息),而没有任何额外的开销。但是,当每个服务(或项目)都有自己的孤岛时,除了 Orleans 之外,您还需要一个网关——可能是 HTTP 侦听器。但是,在第一个示例中,您的服务是耦合的。你不能部署新版本的服务,只要有一个筒仓 运行 它的旧版本(否则,同一实体可能有 2 个颗粒)。但是,如果您关闭该孤岛,您将关闭其余的服务。这是一个非常重要的问题。
If in a single silo, can a silo dynamically discover grain .dll's
不确定你的意思。当 silo 启动时,它会递归地在其文件夹中搜索 dll,如果找到 grains,则加载它们。