作者:陈爱珍,新炬网络高级技术专家。
电商促销日背后需要高并发处理技术架构的支撑。在互联网+的大背景下,各行各业都希望能在这种全民购物大狂欢的商业大战中抢占一席之地,但传统企业IT的技术架构如何能像互联网企业一样稳定的应对无法评估的高并发场景?IT系统要面临以下三个问题:
1、 如何能够快速协调到资源进行水平扩展;
2、 如何能够快速构建和部署应用系统;
3、 如何平稳地应对无法评估的高并发场景。
下面我们来谈一谈从如何解决以上三个问题,帮助传统企业IT架构互联网化。
1、大多数传统企业里,昂贵的IT基础资源85%是被浪费掉的,因为无法整合IT资源的计算能力,每个IT资源都是独立的提供,以避免相互干扰,为应对部分业务的高峰,最大化资源的容量,相当于为一个木桶的长板,提高木桶所有的短板。在非高峰期,木桶80%的资源是浪费的。
如上图所示,系统的资源在80%的日常运行情况下,只使用了30%以下,而只有10%的业务高峰下会用到90%的资源,那么这个系统在日常运行时的资源并不能拿出来给其他系统使用,只能浪费。比如CRM系统的业务高峰期是月底月初,需要40台机器的计算能力做为支撑,但是在双十一的时候,并非业务高峰期,只需要20台机器的计算能力做支撑,那么多出的20台机器的计算能力就可以为双十一的电商系统提供资源。如果传统企业能够整合计算能力,使得IT系统内的资源得以充分利用,就可以不必再为这一个双十一这个短时间或突发的应用支持需求而采购专门的硬件资源。那么如何整合这些资源,统一管理和分配,将公司的所有硬件资源抽象按需分配,以达到真正的提高整个IT系统的计算能力?
可以借鉴大型的互联网企业使用Borg,YARN,Mesos,Torca,Corona等底层资源管理系统进行管理。以Mesos的图为例:
如图所示,左边是粗粒的资源分配,右边是细粒的资源分配。左边有三个集群,每个集群三台服务器,分别装三种分布式计算平台,比如上面装三台Hadoop,中间三台是Spark,下面三台是Storm,三个不同的框架分别进行管理。右边是Mesos集群统一管理9台服务器,所有来自Spark、Hadoop或Storm的任务都在9台服务器上混合运行。通过Mesos就可以实现集群满负荷、资源紧张的系统可以使用长时间闲置、资源利用率极低的系统的资源。所以,如果可以整合资源,提高计算能力,并不需要申请或协调新的资源进行水平扩展,而可以直接充分利用使用现在资源,节约资源成本。
2、在低层资源得到水平扩展后,就需要对应用进行水平扩展了。需要能够在扩展的底层资源上快速安装系统软件,快速构建环境和部署应用系统。传统的部署模式下,如果有非常多的服务器,运维工程师需要在每一台服务器上进行相当复杂的操作才能够完成安装->配置->部署。包括安装运行的操作系统,安装依赖的服务比如weblogic,java,一些特定的配置,比如jvm大小,字符集,操作系统内核参数等,过程非常的繁琐,工作量非常大,搭建完成后还是可能因为细微的不同都有可能导致新应用程序的部署失败,运行有问题,又需要花大量的精力去做troubleshooting。那么如何实现把现运行的生产环境进行无差别克隆,在新资源上迅速水平扩展和生产环境一样的应用环境?可以借鉴大型互联网公司使用docker容器。羊年春晚微博红包飞活动,就是从无到有快速部署一个超过1000节点。可以将任何应用打包到Docker镜像中,镜像包含了应用及应用运行需要的环境及所有的依赖关系,再基于镜像运行无数容器,就可以实现从无到有快速安装系统软件,快速构建环境和部署应用系统。
如上图所示,所有的容器都是基于镜像运行,而镜像里已经包含了整个应用运行所需要的环境,只要启动容器就是构建了一个运行的应用。
3、双十一一年只有一次,为了这一次的狂欢,IT部门解决以上两个问题后,还有一个最头痛的问题,就是不知道用户到底有多疯狂,根本没有办法有效的评估出双十一当天的并发量,也许平常的高峰也就500的并发,在双十一那天的秒杀活动,有可能达到翻几十倍或几百倍,没有任何人可以评估出来。先说秒杀。2013年12月25日前后,天猫搞了一个圣诞季积分兑换活动,持续几天。25日上午10时12分,放出了15000个天猫魔盒,从成交记录上看,19秒内全部抢完。5秒内提交订单系统提示排队太多请14秒后重试。重新秒杀,结果出现了服务器错误的页面。反复刷新几次,秒杀就已经结束了。所以在双十一这天,还是可以看到很多企业的网站因为短时间内访问量剧增而不堪重负卡死,甚至是瘫痪。那么究竟应该提供一个怎样的支撑能力才可以平稳应对这个无法评估的高并发场景?关键词:容器集群调度与弹性伸缩。在解决了底层资源和快速构建的问题后,就只需要一个平台,按需要分配资源,一键部署应用,自动处理应用接入,扩容、缩容、下线等操作,除了根据容器的资源情况,如CPU和连接数,还可以接合应用的TPS性能等等来综合考虑,进行弹性伸缩。不需要人为的去关注并发量,全自动的根据实际的负荷情况进行支撑。既顶住了关键时刻的访问需求,也不需要为“未知需求”购买硬件设备而额外花费。可以借鉴大型的互联网企业使用的弹性计算平台实现在集群间快速调度业务的技术方案。
从以上三个问题可以看到,在资源利用率,自动化运维,弹性伸缩方面,传统企业与互联网企业还存大的很大的差距。虽然未来一段时间内,传统IT架构向新IT架构的转型也显得困难重重,但转型是必然的,可以借鉴以互联网企业IT为代表的“新型IT架构”逐步衍化。那么传统企业IT架构如何逐步互联网化呢?建议如下:
1、从外围小系统开始逐步应用新技术
2、核心系统可以使用一半新技术架构,一半新技术架构的模式,新老结合
3、构建私有PaaS平台,资源计算能力,资源利用率最大化
4、构建统一工作平台(编译测试打包上线审批等)、自动部署、统一监控、统一日志、负载均衡、并且全流程处理应用接入,扩容、缩容、下线等操作。