- Service Mesh实战:用Istio软负载实现服务网格
- 周遥
- 432字
- 2020-08-27 21:03:20
1.2 集群化时期
为了满足日益增长的业务需求,工程师们不断上线性能更加强悍的服务器。直到有一天,老板实在招架不住高昂的成本了。这里的成本不仅指购买机器的成本,更多的是这些机器的维护成本——由于高端机器的维护都需要受过专业培训的人员,普通工程师难以胜任;另一方面,受摩尔定律的限制,单核CPU的发展也跑不过业务的发展。
这个时候工程师们就想起了“三个臭皮匠,顶个诸葛亮”的老话(当然是开玩笑)。
1.2.1 从高端设备到普通PC
虽然IBM小型机的价格非常昂贵,但那个时代有种硬件相对来说要便宜许多,而且也拥有与小型机一样的计算功能(注意是功能而不是能力),那就是Intel X86普通PC,即常见的“电脑”,虽然单从计算能力上来讲,普通PC相比IBM小型机简直相差万里,但是它们的计算架构却是一致的。例如小型机可能动辄就是128GB的内存,普通PC最多也就8GB,因此单从计算能力上,普通PC在服务领域是没有任何使用场景的;不过随着一种被称为“负载均衡(Load Balance)”设备的出现(例如经典的F5Networks BIG系列,如图1.3所示),工程师们得以汇集微小的力量于一体。
图1.3 “经典的F5 BIG-IP硬件负载均衡设备”
1.2.2 硬件负载均衡设备
负载均衡设备虽然五花八门,但其工作的基本原理大同小异,都是通过网关的形式将流量反向代理并转发给下游的,下游是多个功能一致的X86服务器,以此组成一个集群。负载均衡设备往往会对外暴露一个统一的接口,让外界用户感觉是在向同一个主机发起请求,然而实际上,后端的服务器已经集群化了。集群化的好处是可以随时水平扩展,因为每台机器的功能都是一样的,也就是说如果需要将原来的压力缩小一半,只需要将机器的数量扩充一倍即可。
“负载均衡”设备一般还会支持健康检测,当有新的服务器加入时,可以动态将流量分配给它们;同时在某台服务器出现故障时,又能够及时将其从流量下发列表中摘除,避免无效的流量转发。
同时负载均衡设备还是服务的入口与出口门户,即网关。利用这个优势,它们可以对流量进行清洗与预处理工作,例如安全流量打标与防DDos攻击等。
负载均衡使得PC能够将微小的力量结合起来,形成一个集群,并第一次引入了水平扩展的概念,实现了动态扩缩,相对于之前笨重的单机部署,可以说是质的突破。
1.2.3 资源配置问题
之前小型机无论多么强大,运算能力都受硬件限制,而硬件的采购、部署周期又非常长,因此为了保险,早先很多公司的运维都会预留好机器资源以供业务发展不时之需。
这样做的问题在于,会出现大量的闲置硬件资源。比如,企业预估业务在年底能够达到80GB内存的需求量,而年初采购时业务实际只有20GB的需求,根据上面的策略,企业仍然会将80GB内存的机器买回调试好以期待其用武之地。那么,也就是说60GB的内存很多时候就真的是在空转了。如果业务发展顺利,那还好,虽然等待时间有些长,但终归还是用上了,但是出现不及所期那就惨了,因为硬件在使用后厂商一般是不允许退货的,也就是说不能以这60GB多余内存用不上为由,希望厂商回收。
而且,随着业务的多样化,特别是电商类场景,经常需要组织一些大的促销,业务压力往往会急剧上升,单机即便性能高,也有极限,在达到瓶颈后很难有所作为。
1.2.4 积少成多的优势
使用集群则不一样,可以施展化整为零的功夫。虽然一台普通PC内存一般为8GB(实际上2010年的时候一般只有2GB左右),但工程师可以用10台PC组合成一个服务集群,形成80GB的服务能力。这样在年初的时候,只需采购3台回来组成集群就够用了,到了年底的时候,可以再采购剩下的部分或者业务将出现瓶颈的时候再采购,要知道采购部署一台普通PC可比IBM之类的小型机轻松多了。
当初小型机甚至大型机之所以有市场,是因为那个时候的普通PC硬件及软件技术没有达到企业高稳定性、高容错性的需求,也就是说普通PC可能没用几天就会不是这里坏就是那里有故障,IBM等优秀的公司很好地帮助企业渡过了那个难关,也确实为计算机历史做出了贡献。不过随着X86及Linux开源生态的发展,普通PC变得愈加稳定,再加上HP、DELL等一系列优秀的服务器生产厂商的加入,普通PC作为服务器已经不再是什么新鲜事了(当然这里的普通PC还是不能与家用的画等号的,一些细小的部分是针对企业应用专门优化的,例如双CPU双通道内存主板)。
1.2.5 集群化架构
回到之前谈论的集群部署架构,通过普通PC的堆砌,工程师们成功将架构进化成了如图1.4所示的样子。
现在性能问题是解决了,如果业务规模再上升,就可以通过单纯的堆砌机器来解决。集群思想不仅适合服务器,后端的数据库也适用,在这样的思想上产生了“一主一备”“一主多备”等经典的部署结构,并出现了分库分表中间件。
图1.4 “集群化后的部署架构”
1.2.6 软件负载设备
早先时候的负载均衡设备都是基于硬件的,后来工程师们为了节省成本,编写软件使用普通PC开发了廉价的负载均衡设备,例如LVS(Linux Virtual Server)这样的产品,与硬件的功能一致,只不过使用了软件的形式来工作,这些产品的诞生标志着负载正式进入“软负载”时代。
但渐渐地,工程师们发现,很多功能都被重复建设了,例如其中的“聊天室”与“论坛”都会涉及用户信息功能(例如登录、用户基本信息采集等);另外,由于应用分开部署,都需各自设计一套,从前端的信息录入到后端的存储结构。图1.4只有4个系统,问题也许还不太明显;但今天,一个复杂的系统包含成百上千个应用是常见的事,这样的功能重复显然对企业来说是严重的资源浪费。