返回

揭秘小红书规模化混部技术揭秘,让算力成本再降一半

后端

在线服务潮汐:谁窃取了你的算力资源?

在内容社区和社交电商领域,小红书深受用户的喜爱。但随着平台规模的不断壮大,小红书也遇到了一个亟待解决的难题——潮汐现象

潮汐现象:资源的浪费与难题

潮汐现象是指在早晚高峰时段,用户访问量激增,服务器负载高企。而在午间和夜间时段,资源利用率却大幅下降,服务器闲置严重。这种资源分配的不均衡,导致了算力资源的巨大浪费。

资源碎片化:闲置漏洞

除了潮汐现象,小红书还面临着另一个挑战:资源碎片化 。云平台提供的实例规格众多,从32核256G到1核2G不等。根据业务需求选择对应规格的实例固然可行,但往往会导致资源碎片化。当业务不需要那么多内存时,选择大规格实例会导致内存闲置,造成资源浪费。

集群CPU利用率提升攻坚战

为了解决这两个问题,小红书容器团队于2019年3月启动了集群CPU利用率提升攻坚战 。经过四年的技术攻坚,团队取得了显著成果:集群CPU利用率从2019年初的30%提升到现在的45%,算力成本实现数百万核时的优化。

四大法宝:破解算力难题

法宝一:闲置资源再利用

通过硬件隔离和超分技术,小红书将闲置的、富余的资源充分利用起来,提高了资源利用率。

法宝二:整机腾挪分时复用

利用动态负载均衡和混合云部署,将闲置的服务器在不同时间段发挥作用,实现了服务器的“忙时”工作模式。

法宝三:常态混部

将不同的业务服务混部部署在同一台服务器上,既提高了服务器利用率,又降低了成本。

法宝四:统一调度

通过大规模混部和弹性伸缩,小红书实现了对所有资源的统一管理和合理分配,保障了业务的稳定运行。

成果显著:算力优化

经过四年的技术攻坚,小红书容器团队取得了如下显著成果:

  • 集群CPU利用率提升到45%
  • 算力成本优化数百万核时
  • 业务稳定性大幅提升

总结:技术创新助力业务发展

小红书容器团队通过四年的技术攻坚,取得了显著的成果。集群CPU利用率大幅提升,算力成本实现数百万核时的优化,业务稳定性大幅提升。这些成果的取得,离不开团队成员的不懈努力,也离不开公司对技术创新的支持。小红书容器团队将继续努力,为业务提供更加稳定、高效、低成本的云计算服务。

常见问题解答

1. 潮汐现象对业务的影响是什么?

潮汐现象会导致早晚高峰时段服务响应延迟,影响用户体验。

2. 如何解决潮汐现象?

可以通过整机腾挪分时复用、常态混部等技术手段来解决潮汐现象。

3. 资源碎片化的影响是什么?

资源碎片化会导致内存闲置,造成资源浪费。

4. 如何解决资源碎片化问题?

可以通过闲置资源再利用、超分技术等手段来解决资源碎片化问题。

5. 小红书容器团队的攻坚战取得了哪些成果?

小红书容器团队的攻坚战取得了显著的成果,包括集群CPU利用率提升、算力成本优化和业务稳定性提升。

代码示例

// 硬件隔离
@SpringBootApplication
public class IsolationApplication {
    public static void main(String[] args) {
        SpringApplication.run(IsolationApplication.class, args);
    }
}

// 超分技术
@SpringBootApplication
public class MultiTenancyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MultiTenancyApplication.class, args);
    }
}

// 动态负载均衡
@SpringBootApplication
public class LoadBalancerApplication {
    public static void main(String[] args) {
        SpringApplication.run(LoadBalancerApplication.class, args);
    }
}

// 混合云部署
@SpringBootApplication
public class HybridCloudApplication {
    public static void main(String[] args) {
        SpringApplication.run(HybridCloudApplication.class, args);
    }
}

// 常态混部
@SpringBootApplication
public class ColocationApplication {
    public static void main(String[] args) {
        SpringApplication.run(ColocationApplication.class, args);
    }
}

// 统一调度
@SpringBootApplication
public class SchedulingApplication {
    public static void main(String[] args) {
        SpringApplication.run(SchedulingApplication.class, args);
    }
}