Service|Service Fabric 生命周期与运行状况
开发、部署和测试
【Service|Service Fabric 生命周期与运行状况】在开发阶段,服务开发人员使用 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等数据展示方式,以健康度为例,如下图所示:
文章图片
chapter-6-1.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
可以看到新增的健康事件以及状态。
文章图片
chapter-6-2.png 可以看到整个集群都处于健康状态,新增的健康事件类型也可以在
Explorer
中查到。我们可以随时按如下所示在 Explorer
中检查实体的运行状况,或者通过平台的运行状况 API 查询。还可以通过添加自己的运行状况报告或使用运行状况 API 来自定义运行状况报告和修改实体的运行状况,健康状态如下图所示:
文章图片
chapter-6-3.png 当然你也可以通过SDK进行Metrics埋点,这样可以在
Explorer
中查看相关的内容,如下图所示:
文章图片
chapter-6-4.png
推荐阅读
- 活着就是生命的全部意义
- 生命过客——第10章|生命过客——第10章 初为人母
- 生命的活力!2019-05-04好事
- 生命中最迷人的部分轻拿轻放
- 日更82/365珍视生命中的每一刻
- 克里希那穆提《生命书》新译(8月15日)(心与念的二元分裂)
- Java|Java spi(service provider interface)
- 积极探索|积极探索 绽放生命 ???——心心相印计划:青少年心理工作研讨小组全国大型公益行动第二次活动包头市青山区分校圆满成功
- 感恩生命中的所有遇见
- 努力让自己变得更具生命力