引言
大家好,我是ChinaManor,直译过来就是中国码农的意思,我希望自己能成为国家复兴道路的铺路人,大数据领域的耕耘者,平凡但不甘于平庸的人。
今天我们来说说:
从生活中的一个小例子来看网站系统的发展,这个例子是HSF的作者毕玄写的。
超市收银
一家小超市,一个收银员,同时还兼着干点其他的事情,例
如,打扫卫生、摆货。
来买东西的人多起来了,排队很长,顾客受不了,于是增加
了一个收银台,雇了一个收银员。
忙的时候收银员根本没时间去打扫卫生,超市内有点脏,于
是雇了一个专门打扫卫生的。
随着顾客不断增加,超市也经过好几次装修,由以前的一层
变成了两层,这个时候所做的事情就是不断增加收银台、收银员
和打扫卫生的人。
在超市运转的过程中,老板发现一个现象,有些收银台排很
长的队,有些收银台排的人不多,了解后知道是因为收银台太多
了,顾客根本看不到现在各个收银台的状况。对于这个现象,一
种简单的方法就是继续加收银台。但一方面,超市没地方可加收
银台了,另一方面,作为老板,当然不需要雇太多的人,于是开
始研究怎样让顾客了解到收银台的状况,简单地加了一个摄像头
和一个大屏幕,在大屏幕上显示目前收银台的状况,这样基本解
决了这个问题。
排队长度差不多后,又出现了一个现象,就是有些收银台速
度明显比其他的慢,原因是排在这些收银台的顾客买的东西特别
多,于是又想了一招,就是设立专门的10件以下的通道,这样买
东西比较少的顾客就不用排太长的队了,这一招施展后,顾客的
满意度明显提升,销售额也好了不少,后来就继续用这招应对团
购状况、VIP 状况。
在解决了上面的一些烦心事后,老板关注到了一个存在已
久的现象,就是白天收银台很闲,晚上则很忙,于是从节省成
本上考虑,决定实行部分员工只在晚上上班的机制,白天则关
闭一些收银台,顾客仍然可以通过大屏幕看到哪些收银台是关
闭的,避免走到没人的收银台去,实行这招后,成本大大降
低了。
这个生活中的例子及其解决的方法,其实和互联网网站发展
过程中的一些技术是非常类似的,只是在技术层面用其他名词来
表达了而已,例如,有集群、分工、负载均衡、根据QoS分配资
源等。
集群:所有的收银员提供的都是收银功能,无论顾客到哪 一个收银员面前,都可完成付款,可以认为所有的收银员就构成了一个集群,都希望能做到顾客增加的时候只需增 加收银员就行。在现实生活中有场地的限制,而在互联网应用中,能否集群化还受限于应用在水平伸缩上的支撑程 度,而集群的规模通常会受限于调度、数据库、机房等。
分工:收银员和打扫卫生的人分开,这种分工容易解决, 而这种分工在互联网中是一项重要而复杂的技术,没有现实生活中这么简单,涉及的主要有按功能和数据库的不同 拆分系统等,如何拆分以及拆分后如何交互是需要面临的两个挑战。因此,会有高性能通信框架、SOA平台、消息 中间件、分布式数据层等基础产品的诞生。
负载均衡:让每个收银台排队差不多长,设立小件通道、 团购通道、VIP通道等,这些可以认为都是集群带来的负载均衡的问题,从技术层面上说,实现起来自然比生活中复 杂很多。
根据QoS分配资源:部分员工仅在晚上上班的机制要在现实
生活中做到不难,而对互联网应用而言,就是一件复杂而 且极具挑战的事。
参照生活中的例子来说,在面对用户增长的情况下,想出这
些招应该不难,不过要掌握以上四点涉及的技术就相当复杂了,
而且互联网中涉及的其他很多技术还没在这个例子中展现出来,
例如缓存、CDN等优化手段;运转状况监测、功能降级、资源劣
化、流控等可用性手段,自建机房、硬件组装等成本控制手段。
因此,构建一个互联网网站确实是不容易的,技术含量十足,当
然,经营一家超市也不简单。
从超市的运维可以抽象出系统设计的一些思路,服务拆分之
后,如何取得我需要的服务?在“电视机”上,把每个集群能提
供的服务显示出来。你不需要关心哪个人为你服务,当你有需要
的时候,请先看头顶的电视机,它告诉你哪个服务在哪个区域。
当你直接去这个区域的时候,系统会给你找到一个最快速的服务
通道。
HSF的设计思想
这就是HSF的设计思想,服务的提供者启动时通过HSF框架
向ConfigServer(类似超市的电视机)注册服务信息(接口、版
本、超时时间、序列化方式等),这样ConfigServer上面就定义
了所有可供调用的服务(同一个服务也可能有不同的版本);服
务调用者启动的时候向ConfigServer注册对哪些服务感兴趣(接
口、版本),当服务提供者的信息变化时,ConfigServer向相应
的感兴趣的服务调用者推送新的服务信息列表;调用者在调用时
则根据服务信息的列表直接访问相应的服务提供者,而无须经过
ConfigServer。我们注意到ConfigServer并不会把服务提供者的IP地
址推送给服务的调用者,HSF框架会根据负载状况来选择具体的
服务器,返回结果给调用者,这不仅统一了服务调用的方式,也
实现了“软负载均衡”。平时ConfigServer通过和服务提供者的心
跳来感应服务提供者的存活状态。
总结
以上便是从超市收银来看网站系统的发展
愿你读过之后有自己的收获,如果有收获不妨一键三连一下~