目前,我们将资源密集型处理作为具有web角色的云服务运行。服务包仅包含频繁更改的.NET程序集。还有对C++ DCOM服务器的依赖,总共大约有1千兆字节的代码和数据。该DCOM服务器被打包到存档中并放入blob存储中。当角色实例启动它的DCOM时,OnStart()下载存档,将其解压到本地文件系统中并注册DCOM服务器,然后.NET代码使用DCOM服务器。
它可以工作,但伸缩速度非常慢--在向Azure管理服务发送横向扩展操作和运行角色OnStart()之间大约需要2-5分钟(然后运行OnStart()大约需要一分钟)。我听说HyperV容器在向外扩展方面近乎神奇--它们几乎是瞬间扩展的。我还听说Azure Service Fabric使用容器来托管服务实例。因此,我假设Azure Service Fabric可以用来解决扩展速度慢的问题。
问题是-如何处理OnStart()中长时间运行的代码。让每个服务实例运行这种代码就会击败容器--它们会快速伸缩,然后就会被初始化代码卡住。
Azure Service Fabric可以做类似双阶段初始化的事情吗?在这种情况下,在部署服务时,等同于OnStart()的东西首先在单个实例中运行,然后快速“克隆”一个完全初始化的实例,以按需扩展服务?对于所描述的场景,它还能做得更好吗?
发布于 2016-07-13 04:48:15
在Service Fabric中,依赖项理想情况下将作为应用程序包的一部分(可选的容器化)携带,这意味着它们将在尝试启动实际服务之前被复制到机器上-而且应用程序映像应该已经在service Fabric集群中上载,这意味着它通常在本地或至少从同一组机器中复制(而不是通过网络或存储帐户恰好位于的任何位置)。
https://stackoverflow.com/questions/37729747
复制相似问题