Azure Service Fabric无状态服务的配置和资源管理选项?

时间:2019-04-14 11:51:42

标签: azure azure-service-fabric

我是使用Service Fabric的新手,正在尝试确定一些设计选项。我有一个执行不同任务的类库。有些任务占用大量资源且运行时间长(处理来自队列的消息),而另一些任务则寿命短且必须响应(处理用户的作业请求)。有大量的缓存数据,因此共享进程很有意义,并且应用程序是无状态的。我要确保长时间运行的任务不会使其他任务耗尽资源,而且要确保利用率很高。

  1. 是否可以在我的解决方案中创建一个Stateless Service项目(引用我的类库),并使用配置来区分那些实例执行的任务,从而部署多个共享同一进程的具名StatelessService实例?有或没有多个ServiceType(尽管它们似乎每个项目一个),所以我认为这必须是一个ServiceType)?

  2. 如果是,是否可以对那些服务实例应用不同的资源监管规则,以便可以为用户驱动的任务保留一些资源?到目前为止,我的印象是,当服务共享一个流程时,这是不可能的。

1 个答案:

答案 0 :(得分:2)

  1. 默认的shared process model指定了以下内容:
  

上一节介绍了由以下提供的默认托管模型:   服务结构,称为共享过程模型。在这   模型,对于给定的应用程序,仅给定的一个副本   在节点上激活ServicePackage(该节点将启动所有   其中包含的CodePackages)。 a的所有服务的所有副本   给定的ServiceType放置在CodePackage中,该CodePackage中注册了   服务类型。换句话说,所有服务上的所有副本   给定ServiceType的节点共享相同的过程。

can specify有多种服务类型和多种代码包。

  

ServiceTypes声明CodePackages支持哪些服务类型   在这个清单中。当针对其中之一实例化服务时   服务类型,此清单中声明的​​所有代码包都是   通过运行其入口点激活。产生的过程是   期望在运行时注册支持的服务类型。服务   类型在清单级别而不是代码包中声明   水平。因此,当有多个代码包时,它们都是   每当系统查找声明的任何一项时激活   服务类型。

  1. 资源governance是在服务清单中配置的,而不是在实例级别上配置的。