DZone>Web Dev Zone>如何像老板一样使用Heroku Dynos进行扩展
如何像老板一样使用Heroku Dynos进行扩展
现在你已经在Heroku上运行了,John Vester帮助你探索扩展你的应用程序或服务以满足终端用户需求的选项。
CORE -
21年9月3日 - Web Dev Zone -教程
喜欢 (3)
评论
保存
鸣叫
19.46K浏览次数
加入DZone社区,获得完整的会员体验。
在技术领域找到自己的定位是令人兴奋的,同时也是充实的。当你的应用程序或服务被提供给客户时,你也会感受到那种完成某种程度的教育、赢得一场比赛或制作一些艺术精品供他人欣赏的快感。
但是,如果客户太喜欢你的创作,会发生什么?
在上面的视频链接中,Vertabiz提供的产品瞬间变得成功。起初这很好!但几秒钟后,他们意识到他们缺乏满足客户需求的能力。
虽然上面链接中的广告与运输和物流有关,但在服务层面也存在同样的问题。知道什么时候扩大规模(和缩小规模)以保持领先于需求,不仅可以节省客户体验,而且还可以产生财务回报。
在这篇文章中,我将探讨Heroku生态系统中的扩展选项。
我如何知道我何时需要扩展?
在Vertabiz的视频中(上面),当他们看到订单数量超过他们的预期时,团队意识到需要扩大其容量。为了使客户在网络应用中获得流畅的体验,应该在现有服务达到100%的利用率之前增加容量。
知道 "何时扩展 "的概念与建立一个可扩展的架构同样重要。毕竟,过快地扩大规模将消耗比所需更多的成本,而事后扩大规模将影响性能并有可能失去客户。当需求减少,不需要采用额外的能力时,也存在同样昂贵的情况。
Heroku提供了以下选项,以帮助深入了解何时需要为您的应用程序或服务改变容量。
- 参考Heroku仪表板中的指标选项卡,提供应用程序的历史需求的图形表示,这可以证明对当前容量的改变是合理的
- 使用Loader.io插件,它可以帮助了解您的应用在哪里需要额外的容量
- 使用Heroku产品市场上的Monitor插件来关注性能。
纵向扩展与横向扩展
根据应用程序的设计,有可能以两种不同的方式进行扩展,以满足消费者的需求。
- 垂直扩展--增加到一个更大的Dyno类型。可以把它看作是升级到一个更强大的系统来处理请求。
- 横向扩展- 增加相同Dyno类型的Dynos数量。
在大多数情况下,简单地横向增加实例并不能解决问题;也就是说,除非应用架构为这种情况做好了准备,正如十二要素应用的"流程"方面所指出的。这就是经常引入负载均衡器或API网关的地方。
在Heroku,请求的路由是生态系统的一部分*--* 只是Heroku节省时间和资源的另一种方式。你可以在这里阅读更多关于这个的内容。
用Heroku手动扩展
使用Heroku自动扩展的手动方法只是意味着有人要利用Heroku仪表板或Heroku命令行界面(CLI)来解决与特定应用程序或服务的需求有关的问题。
使用Heroku网络仪表板
在上面的例子中,如果我想为在Heroku中运行的一个服务增加Dyno配置的处理能力(垂直扩展),将利用以下步骤。
1.导航到Heroku仪表板上的资源标签。
2.2.单击 "改变Dyno类型 "按钮,进行适当的选择。
3.3.遵循屏幕上的任何其他指示。
4.4.保存请求。
5.5.Heroku将为你处理其余的事情。
如果我想使用相同的用户界面横向扩展我现有的Heroku(专业)应用程序,将选择步骤一中的铅笔图标。随后的屏幕将允许根据需要增加Dynos的数量。
使用Heroku CLI
使用CLI是手动扩展Heroku应用程序或服务的另一个选择。然而,这种选择确实依赖于你对所需结果的了解。
举例来说,要增加Dyno实例的数量,可以执行以下CLI。
heroku ps:scale web=3
要改变Dyno类型,可以执行以下CLI。
heroku ps:type worker=standard-2x
请记住,对Dyno类型的改变不会改变实例的数量。
当然,精明的DevOps工程师可以使用外部进程来执行Heroku CLI,通过让预定的进程执行CLI命令,在Heroku中实现Dyno的自动扩展。
用Heroku进行自动扩展
如果你在性能层运行Heroku,或者让Dynos在Private Spaces(在隔离的网络上运行的专用环境)中运行,那么自动扩展是Heroku提供的服务水平中的一部分。
对于这些情况,Heroku桌面的资源选项卡包括一个启用自动缩放的按钮,它引入了以下对话框。
由于该功能仅限于Heroku生态系统中更高级的层级,以下链接提供了关于该功能的优秀文档。
其他自动缩放选项
对于在Heroku其他层级上运行的应用程序,在Heroku市场上有一些附加产品。
我曾使用过其中的一些附加产品,它们被分成以下自动缩放类别。
- 计划模式--基于计划的自动缩放
- 智能模式--基于请求/响应时间的自动缩放
预定的自动缩放模式
在预定的自动缩放模式中,Heroku中运行的Dynos数量的变化被支持应用程序或服务的工程团队所了解。该方式有两个子类别。
- 用户界面- 附加组件利用专门的UI来扩展Dynos
- 调度器- 附加组件利用CLI来实现自动扩展
用户界面
用户界面子类别包含Heroku市场的附加组件,这些附加组件主要是为在Heroku中运行的应用程序或服务设置时间表。这些选项包括一个目的性很强的用户界面,以使终端用户更容易操作。
以下附加组件允许Dynos按计划进行自动伸缩。
值得注意的是,AutoIdle只是一个 "缩减到零 "的选项,建议用于非生产环境。其主要目的是为目前不使用的非生产型Dynos节省资金。
调度器
可以采用基于调度器的附加组件来传递CLI命令,并可以根据需要来扩大和缩小规模。
这种方法利用了以下Heroku CLI命令(在上面的使用Heroku CLI部分指出)。
Shell
heroku ps:scale web=3
heroku ps:type worker=standard-2x
以下附加产品允许CLI命令在计划的基础上执行。
这些解决方案通常依赖于Heroku生态系统中底层系统上运行的基本Cron功能。
智能自动缩放模式
预定自动缩放模式的局限性在于,应用程序或服务的需求模式是完全已知的。这意味着,可以预测较高和较低的需求水平。这可能并不总是已知的*--*介绍中的Vertabiz视频就是一个例子场景。
自动缩放的智能模式根据你的应用程序或服务中实现的当前请求/响应时间来改变Dynos的数量。以下附加产品提供了这个功能。
- Adept Scale
- Rails Autoscale(仅限于Ruby)。
使用智能自动缩放选项可以确保在没有任何人工干预的情况下处理需求的意外变化。这对于那些需求超过本文所述选项的任何预期水平的情况很有帮助。
结论
在我的出版物中,我一直提到我向所有IT专业人士提出的以下任务声明。
"将你的时间集中在提供特性/功能上,以扩大你的知识产权的价值。在其他方面利用框架、产品和服务。"
- J. Vester
当你的应用程序或服务达到需要扩大和缩小容量以保持积极的消费者满意度时,就需要利用自动扩展解决方案。在我从事IT行业的30多年中,我见证了美妙的解决方案是如何因为负面的性能现实而失去吸引力的。
目前,Heroku的每种Dyno类型都有以下实例数量范围。
虽然自动缩放会产生成本,但正确实施的水平将从人工尝试扩展你的应用程序或服务中获得整体节约。使用上述选项,沿途失去客户的概率将大大降低。
祝你有一个非常好的一天!
主题。
heroku, 自动缩放, 垂直缩放, 水平缩放
DZone贡献者所表达的观点属于他们自己。
在DZone上受欢迎
访谈