|
|
51CTO旗下网站
|
|
移动端

2.2.4.2 资源消耗值计算

《Microsoft Azure 管理与开发(下册)平台服务PaaS》本书由世纪互联蓝云Microsoft Azure 开发技术支持团队的资深工程师们编写,主要阐述MicrosoftAzure PaaS 服务的开发应用,涉及计算服务、集成认证服务、数据存储服务、大数据服务等方面的内容。本节为大家介绍资源消耗值计算。

作者:世纪互联蓝云公司来源:电子工业出版社|2018-07-12 17:08

2.2.4.2 资源消耗值计算

群集的资源指标分为两大类,物理指标和逻辑指标。物理指标是指内存、硬盘、CPU等物理资源;而逻辑指标是一些虚拟的指标,例如RPS 或者队列,逻辑指标通常是由应用程序创建,并由应用程序来报告负载的。在应用程序中很少报告物理资源指标,因为应用程序是以托管的形式运行的,很难在应用中测量。所以Service Fabric 会提供一些默认的指标。

1. 默认指标

当不指定任何指标时,Service Fabric 会采用默认的最简单的方式来计算负载,就是通过服务计数的形式来统计负载。Service Fabric 采用三个默认指标:Primiary Count、ReplicaCount 和Count。用这三个指标来计算节点中运行的主副本,辅助副本和总数。在ServiceFabric 中,不同的服务类型计数方法也不一样,可参考表2.2.4-1。

表2.2.4-1

Service Fabric 会依据这样的规则来统计每节点上的这三个指标,默认群集会依据这些指标对资源进行分配,服务的分布看着都很平均,但是实际上这种情况很难做到高效地利用,因为这种方式将所有的服务都看作是等效的,但实际情况是不同的服务性能占用差距也比较大。

2. 自定义指标

在前面的章节中,介绍了如何在群集中为节点定义自定义指标的总容量。当定义完总的容量后,需要在服务程序中报告服务对该指标的使用情况。报告的方式有两种,一种是静态的负载报告,另外一种动态的。

静态负载报告,是指服务在启动时,就会占用,在服务运行期间不再变换。例如以下C#代码示例,代码中会定义服务的主副副本分别占用多少负载。

  1. StatefulServiceDescription serviceDescription = new 
  2. StatefulServiceDescription();  
  3. StatefulServiceLoadMetricDescription rpcMetric = new 
  4. StatefulServiceLoadMetricDescription();  
  5. rpcMetric.Name = "MemoryInMb";  
  6. rpcMetric.PrimaryDefaultLoad = 20;  
  7. rpcMetric.SecondaryDefaultLoad = 5;  
  8. rpcMetric.Weight = ServiceLoadMetricWeight.High  
  9. serviceDescription.Metrics.Add(rpcMetric);  
  10. await fabricClient.ServiceManager.CreateServiceAsync(rpcMetric); 

而在实际应用中,很多情况下,服务消耗的负载都是动态的,例如RPS,服务的每秒请求数不可能总是保持一致,通常的做法是定期统计并报告负载情况。所以需要附上定期的报告负载数据,如下C#代码示例:

  1. this.ServicePartition.ReportLoad(new List<LoadMetric> { new LoadMetric("  
  2. RPC", 1000) }); 


喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

程序员密码学

《程序员密码学》涉及密码学的各个研究方向,分组密码、散列函数、公钥密码以及相关的攻击,同时也讲解了密码学算法实现上常用的ASN.编码、...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊