返回介绍

10.4 怎样启动一个集群化的解决方案

发布于 2024-01-25 21:44:08 字数 977 浏览 0 评论 0 收藏 0

启动一个集群化系统的最简单的方式就是从一台既运行作业服务器又运行作业处理器(和CPU是一对一的关系)的机器开始。如果你的任务是CPU密集型的,每一个CPU跑一个作业处理器;如果你的任务是I/O密集型的,每一个CPU跑几个作业处理器。如果你的任务是RAM密集型的,请小心不要耗尽RAM。让你的单机解决方案在一个处理器上工作正常,接着再增加更多。让你的代码以不可预料的方式失效(例如,在你代码中做1/0,对你的工作者使用kill -9 <pid>,从插座上拔掉电源,这样让整个机器挂掉)来检查你的系统是否健壮。

显然,你想要做比这更重量级的测试—— 一个充满了编码错误和人工异常的单元测试集就好。Ian喜欢抛出非预期的事件,就像让一个处理器运行一个作业集,而一个外部进程正系统化地杀掉重要的进程并且通过任何你所使用的监控进程来确认所有这些进程都干净地重启了。

一旦你有了一个运行的作业处理器,就增加第二个。要检查你没有使用太多的RAM。你是否以从前两倍的速度来处理任务?

现在引入了第二台机器,仅仅只有一个作业处理器跑在新机器上,在协作机器上没有作业处理器。它处理作业的速度是否与协作机器有处理器时一样快?如果不是,为什么?是延迟的问题吗?你做了不同的配置吗?也许你有不同的机器硬件,类似于CPUs、RAM和缓存大小?

现在加入另外9台计算机来测试看看你是否以比从前快10倍的速度来处理任务。如果不是,那么为什么呢?是否发生了网络冲突减慢了你的整体处理速率?

当机器启动时,为了可靠地启动集群组件,我们倾向于使用cron任务,Circus或supervisord,或者有时使用Upstart(正在被systemd所代替)。Circus比supervisord更新,但两者都是基于Python的。cron陈旧,但是如果你只是启动一个类似于能启动所需子进程的监控进程那样的脚本的话,它是非常可靠的。

一旦你有了一个可靠的集群,你可能就想要引入一个类似Netflix的ChaosMonkey那样的随机杀手工具来故意杀掉你的部分系统来测试它们的弹性。你的进程和硬件最终会挂掉,但你不需要在经历痛苦之后才知道,你至少可以在遭受你所预料会发生的错误中存活下来。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文