我是使用Service Fabric的新手,正在尝试确定一些设计选项。我有一个执行不同任务的类库。有些任务占用大量资源且运行时间长(处理来自队列的消息),而另一些任务则寿命短且必须响应(处理用户的作业请求)。有大量的缓存数据,因此共享进程很有意义,并且应用程序是无状态的。我要确保长时间运行的任务不会使其他任务耗尽资源,而且要确保利用率很高。
是否可以在我的解决方案中创建一个Stateless Service项目(引用我的类库),并使用配置来区分那些实例执行的任务,从而部署多个共享同一进程的具名StatelessService实例?有或没有多个ServiceType(尽管它们似乎每个项目一个),所以我认为这必须是一个ServiceType)?
如果是,是否可以对那些服务实例应用不同的资源监管规则,以便可以为用户驱动的任务保留一些资源?到目前为止,我的印象是,当服务共享一个流程时,这是不可能的。
答案 0 :(得分:2)
上一节介绍了由以下提供的默认托管模型: 服务结构,称为共享过程模型。在这 模型,对于给定的应用程序,仅给定的一个副本 在节点上激活ServicePackage(该节点将启动所有 其中包含的CodePackages)。 a的所有服务的所有副本 给定的ServiceType放置在CodePackage中,该CodePackage中注册了 服务类型。换句话说,所有服务上的所有副本 给定ServiceType的节点共享相同的过程。
您can specify有多种服务类型和多种代码包。
ServiceTypes声明CodePackages支持哪些服务类型 在这个清单中。当针对其中之一实例化服务时 服务类型,此清单中声明的所有代码包都是 通过运行其入口点激活。产生的过程是 期望在运行时注册支持的服务类型。服务 类型在清单级别而不是代码包中声明 水平。因此,当有多个代码包时,它们都是 每当系统查找声明的任何一项时激活 服务类型。