专栏名称: 细说云计算
关注云平台的网络技术、存储技术,以及少量架构技术。
目录
相关文章推荐
美团技术团队  ·  可信实验白皮书系列04:随机轮转实验 ·  2 天前  
架构师之路  ·  爸爸!除了你,沈括,沈万三... ... ·  3 天前  
字节跳动技术团队  ·  掘金 AI 编程社区- 人人都是 AI 编程家竞赛 ·  昨天  
51好读  ›  专栏  ›  细说云计算

Java云托管服务的开支削减策略

细说云计算  · 公众号  · 架构  · 2017-09-20 23:36

正文

请到「今天看啥」查看全文


更糟糕的是,迁移过程会导致服务中断:需要停掉现在的虚拟机,一步步重新部署或迁移应用,其中不可避免会有相关的棘手问题需要解决。

可见虚拟机在资源使用方面不够灵活高效,并且针对动态负载的调整能力很有限。这种缺乏弹性的方式导致了额外的开支。

如何高效地进行双向扩展

如果横向扩展无助于资源的高效利用,我们就需要深入虚拟机内部,理解垂直扩展是如何实现的。

垂直扩展可以在现有基础上优化任何应用实例的内存和 CPU 使用。如果配置得当,这种方法对单体应用和微服务都同样有效。

在虚拟机内通过动态增加或减少资源来进行垂直扩展同时又不中断服务是一项艰巨的任务。虚拟机提供了内存膨胀(memory balloning)的技术,但它并不是自动化的,需要用工具监控宿主系统和客户系统中的内存压力,然后进行相应的向上或向下扩展。而实际情况是这个方法并不太好用,自动化的内存共享才更实用。

得益于开创性的同宿主内容器间资源自动分享,基于 cgroups 的容器技术拥有更高级别的灵活性。在设定范围内,空闲的资源会自动分配给相同硬件节点内的其他容器。

不同于虚拟机,容器内的资源无需重启应用实例即可轻松实现扩展。

结果就是,同一容器实时更改体量大小要比迁移至更大的虚拟机更加容易、经济和迅速。

从虚拟机迁移至容器

容器分为两种:应用容器和系统容器。应用容器(如 Docker 或 rkt)一般运行在单个进程中,而系统容器(LXD、OpenVZ)则更像是完整的操作系统,可以运行全功能的初始化系统如 systemd、SysVinit 和 openrc,这些初始化系统允许在单一容器中的进程孵化出其他进程如 openssh、crond 或 syslogd 等。这两种容器都支持垂直扩展来让资源分配更有效率。







请到「今天看啥」查看全文