首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Windows服务--高可用性方案和设计方法

Windows服务--高可用性方案和设计方法
EN

Stack Overflow用户
提问于 2010-04-07 12:14:57
回答 3查看 3.6K关注 0票数 7

假设我在windows服务器机器中运行了一个独立的windows服务。如何确保高可用性?

1)。您可以提出的所有设计级别指南是什么?

2)。如何使它像初级/二级一样高可用性,例如,目前市场上可用的集群解决方案

3)。如何在发生故障的情况下处理交叉关注点

如果你能想到其他的话,请在这里加上。

注:问题仅与windows和windows服务有关,请尝试遵守以下规则:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-06 12:59:25

要使服务至少保持运行,您可以安排在服务崩溃时自动重新启动服务(请参阅服务属性的恢复选项卡)。这里有更多的详细信息,包括设置这些属性的批处理脚本- 如果windows服务崩溃,请重新启动它

高可用性不仅仅是让服务保持在外部--服务本身需要考虑到高可用性(即在整个过程中使用良好的编程实践、适当的数据结构、对资源库和发布),以及整个压力测试,以确保它能够在预期的负载下保持正常运行。

对于幂等命令,可以通过多次重新调用命令来容忍间歇性故障(例如锁定的资源)。这允许服务保护客户端不受故障的影响(在一定程度上)。还应该对客户端进行编码,以预测失败。客户端可以通过多种方式处理服务失败--日志记录、提示用户、重试X次、记录致命错误和退出都是可能的处理程序--哪个处理程序适合您,取决于您的需求。如果服务具有“会话状态”,当服务失败(即重新启动进程)时,客户端应该知道并处理此情况,因为这通常意味着当前会话状态已经丢失。

一台机器将容易受到硬件故障的影响,所以如果您要使用一台机器,那么确保它有多余的组件。HDD特别容易失败,至少镜像驱动器或RAID阵列也是如此。PSU是下一个弱点,因此冗余PSU也是值得的,就像UPS一样。

至于群集,Windows支持服务群集,并使用网络名称(而不是单个计算机名称)管理服务。这允许客户端连接到任何运行该服务的机器,而不是硬编码的名称。但是,除非采取其他措施,否则这是资源故障转移--将请求从服务的一个实例定向到另一个实例。转换态通常是丢失的。如果您的服务正在写入数据库,则还应该对其进行群集,以确保可靠性,并确保更改可用于整个集群,而不仅仅是本地节点。

这真的只是冰山一角,但我希望它能给你一些想法,开始进一步的研究。

Microsoft集群服务(MSCS)

票数 7
EN

Stack Overflow用户

发布于 2010-05-05 02:58:06

如果你分解了你想要解决的问题,我想你可能会自己想出一些答案。正如贾斯汀在评论中提到的,没有一个答案。这完全取决于您的服务做什么和客户如何使用它。您也没有指定关于客户机-服务器交互的任何细节。HTTP?TCP?UDP?另一个?

下面是一些让你开始思考的事情。

1)如果服务或服务器发生故障,您会做什么?

  • 在不同的服务器上运行多个服务实例如何?

2)好的,但是现在客户是如何了解多个服务的?

  • 您可以将列表硬编码到每个客户端(不推荐)
  • 您可以使用DNS循环执行所有请求。
  • 您可以使用负载平衡装置。
  • 您可以拥有一个了解所有其他服务的单独服务,并且可以将客户端定向到可用的服务。

3)那么,如果一项服务失败了怎么办?

  • 客户端应用程序是否知道,如果连接到的服务出现故障,应该如何处理?如果没有,则需要更新它们以处理这种情况。

这应该让你从如何开始高可用性的基本概念开始。如果您提供有关您的体系结构的具体细节,您可能会得到更好的响应。

票数 0
EN

Stack Overflow用户

发布于 2010-05-06 11:27:00

如果服务不公开任何用于客户端连接的接口,则可以:

  • 广播或公开“我活着”消息,或向数据库/注册表/tcp/任何您活着的东西发送信号
  • 拥有第二个服务(监视器),检查这些“我还活着”的信号,并尝试重新启动服务,以防它关闭

但是,如果您有一个客户端通过named管道/tcp/etc连接到此服务,则客户端将不得不在数据库中运行该服务时检查机器的地址,或者有一些更有价值的东西,比如用于重定向通信量的智能交换机。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2592292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档