在 2016年的双十一,统计数据表示每秒交易量达到 17.5万,每秒的支付次数在峰值达到 12万次。
在阿里每个业务团队都比较独立,阿里这么多年坐下来,一直强调业务的垂直化。目的在于团队可以只专注做好自己的产品,而不会受到其他团队的干扰,这样有利于快速发展。每个团队都会为明天发展,而有计划地预留些机器以便扩展,但随着市场不确定,可能会有这样情况,有的团队的机器会有空闲,而有的团队的机器使用可能会相对地紧张。
为了应对这种情况,阿里开发了自己容器 T4(基于LxC的虚拟技术),与docker 区别并不大。容器和虚拟机比相对轻量级的虚拟化,可以简单地用 cgroup 来实现对 cpu 和内存资源的分配。虚拟机好处就是容易扩展。虚拟化技术解决不同团队如何在同一台机器上跑不同应用。资源如何分配。而且虚拟机也是 isolated,这样解决不同团队的应用跑在同一台机器可能会相互影响的问题。这样就缓解阿里的团队间资源调配的问题。
我们人类有时候是有私心的,大到团队间,小到个人间。些东西我们是不想公开的。但机器正好相反,提倡共享。由于人的私心,例如我们应用都是通过线程池来访问数据,由于私心我们每一个应用都会有一个属于自己的线程池。这样就造成资源浪费。还有就是代码共享的问题。在阿里有团队专门做中间件。这些中间件提供多数应用所需的代码,但是由于虚拟技术也是隔离的,那么每个应用要使用中间件,就需要 compile 一份在虚拟机中。这样也造成资源浪费。所需我们怎么做,我们希望在机器层面上共享资源。
如果我们同一个 JVM 跑不同应用就能更好地共享资源来。阿里就此修改 JVM 为多租户共享。每一个租户都是一个 tenacy。每一个应用都运行在一个 tenacy 上,然后通过配置来获得 cpu 和内存资源。
那么 tenacy 是如何被分配到 cpu 资源和内存资源的呢?这里我们需要了解 JVM G1 和 cgroup 技术,也就是接触 G1 对 slab 分配阿里实现为每个 tenacy 分配固定资源,
随后会介绍
1. JVM GC 技术,这是重点也是难点,会分享回收策略,有哪些回收器,以及会重点介绍 G1 技术
2 LxC 基础知识
3. cgroup 的基础知识
网友评论