开发、部署和测试
在开发阶段,服务开发人员使用 Reliable Actors
或 Reliable Services
编程模型开发不同类型的服务。服务开发人员以声明的方式描述包含一个或多个代码、配置和数据包的服务清单文件中的开发服务类型,随后,应用程序开发人员构建使用不同服务类型的应用程序。
应用程序开发人员以声明的方式,通过引用构成服务的服务清单并相应地重写并参数化构成服务的不同配置与部署设置,描述了应用程序清单中的应用程序类型。
当应用开发完成,并且按照 Service Fabric 部署格式描述完成后,就可以通过sfctl
工具或者运维SDK提供的API将应用部署到 Service Fabric 集群。
应用部署到本地开发群集或测试群集后,服务开发人员使用 FailoverTestScenarioParameters
和 FailoverTestScenario
类或 Invoke ServiceFabricFailoverTestScenario cmdlet
运行内置的故障转移测试方案。故障转移测试方案在重要转换和故障转移中运行指定的服务,以确保其仍然可用并正在工作。
然后,服务开发者使用 ChaosTestScenarioParameters
和 ChaosTestScenario
类或 Invoke-ServiceFabricChaosTestScenario cmdlet
,运行内置的 Chaos
测试方案。 任意混合测试方案会将多个节点、代码包和副本错误包括到群集中。类似Netflix的ChaosMonkey,这些分散的工具都被整合到了 Service Fabric 的工具链中。
运行状况监视
部署在 Service Fabric 上的应用可以利用 SDK 提供的客户端来报告当前应用运行的状态,Service Fabric 能够收集这些状态,利用运行状况实体和层次结构,有效地报告、调试和监视群集和应用程序。运行状况模型为群集中许多移动片段的运行状况提供准确而精细的报告。而 Service Fabric 按照层级构建了整个集群的健康、Metrics等数据展示方式,以健康度为例,如下图所示:
![](https://img.haomeiwen.com/i6205088/67cc635f4a803e44.png)
从集群到分区,在细化到节点,每个实体都可以汇报健康状态,我们以ciao-vote-service
为例,尝试使用 SDK 汇报健康状态,以下内容在微软文档中没有过多描述,但是可以通过反编译的Jar看出端倪,并进行验证。
public VoteServiceImpl() {
Executors.newSingleThreadScheduledExecutor().scheduleAtFixedRate(() -> {
try {
StatelessServicePartition partition = this.getPartition();
HealthInformation healthInformation = new HealthInformation("System.FM", "State", HealthState.Ok);
partition.reportPartitionHealth(healthInformation);
} catch (Throwable ex) {
}
try {
StatelessServicePartition partition = this.getPartition();
HealthInformation healthInformation = new HealthInformation("System.FM", "Test", HealthState.Ok);
partition.reportPartitionHealth(healthInformation);
} catch (Throwable ex) {
}
}, 1000, 3000, TimeUnit.MILLISECONDS);
}
上述代码在服务构造的时候开启定时任务,周期性的汇报健康状态,其中HealthInformation
第一个参数是sourceId,第二个是property,我们分别发送两个健康事件。部署ciao-vote-service
后,打开Explorer
可以看到新增的健康事件以及状态。
![](https://img.haomeiwen.com/i6205088/5df8e0dd1f45b3b3.png)
可以看到整个集群都处于健康状态,新增的健康事件类型也可以在Explorer
中查到。我们可以随时按如下所示在 Explorer
中检查实体的运行状况,或者通过平台的运行状况 API 查询。还可以通过添加自己的运行状况报告或使用运行状况 API 来自定义运行状况报告和修改实体的运行状况,健康状态如下图所示:
![](https://img.haomeiwen.com/i6205088/9e0d8ed77c8988f3.png)
当然你也可以通过SDK进行Metrics埋点,这样可以在Explorer
中查看相关的内容,如下图所示:
![](https://img.haomeiwen.com/i6205088/fac2d72d1acac9a7.png)
网友评论