不臣
超小超大

羽玖

五、异步、 throttle 和 批量处理

异步、throttle(节流阀) 和批量处理都需要对并发请求数做队列处理的。

异步在业务上一般来说就是收集请求,然后延时处理。在技术上就是可以把各个处理程序做成并行的,也就可以水平扩展了。但是异步的技术问题大概有这些,a)被调用方的结果返回,会涉及进程线程间通信的问题。b)如果程序需要回滚,回滚会有点复杂。c)异步通常都会伴随多线程多进程,并发的控制也相对麻烦一些。d)很多异步系统都用消息机制,消息的丢失和乱序也会是比较复杂的问题。

throttle 技术其实并不提升性能,这个技术主要是防止系统被超过自己不能处理的流量给搞垮了,这其实是个保护机制。使用throttle技术一般来说是对于一些自己无法控制的系统,比如,和你网站对接的银行系统。

批量处理的技术,是把一堆基本相同的请求批量处理。比如,大家同时购买同一个商品,没有必要你买一个我就写一次数据库,完全可以收集到一定数量的请求,一次操作。这个技术可以用作很多方面。比如节省网络带宽,我们都知道网络上的MTU(最大传输单元),以态网是1500字节,光纤可以达到4000多个字节,如果你的一个网络包没有放满这个MTU,那就是在浪费网络带宽,因为网卡的驱动程序只有一块一块地读效率才会高。因此,网络发包时,我们需要收集到足够多的信息后再做网络I/O,这也是一种批量处理的方式。批量处理的敌人是流量低,所以,批量处理的系统一般都会设置上两个阀值,一个是作业量,另一个是timeout,只要有一个条件满足,就会开始提交处理。

所以,只要是异步,一般都会有throttle机制,一般都会有队列来排队,有队列,就会有持久化,而系统一般都会使用批量的方式来处理。

这和电子商务的订单系统很相似,就是说,我的系统收到了你的购票下单请求,但是我还没有真正处理,我的系统会跟据我自己的处理能力来throttle住这些大量的请求,并一点一点地处理。一旦处理完成,我就可以发邮件或短信告诉用户你来可以真正购票了。

从业务和用户需求上来说可能还是有一些值得我们去深入思考的地方:还有一种方法是使用抢占式的方式进行负载均衡,由下游的计算服务器去任务服务器上拿任务。让这些计算服务器自己决定自己是否要任务。这样的好处是可以简化系统的复杂度,而且还可以任意实时地减少或增加计算服务器。但是唯一不好的就是,如果有一些任务只能在某种服务器上处理,这可能会引入一些复杂度。不过总体来说,这种方法可能是比较好的负载均衡。四、后端系统负载均衡

前面说了数据分区,数据分区可以在一定程度上减轻负载,但是无法减轻热销商品的负载,对于火车票来说,可以认为是大城市的某些主干线上的车票。这就需要使用数据镜像来减轻负载。使用数据镜像,你必然要使用负载均衡,在后端,我们可能很难使用像路由器上的负载均衡器,因为那是均衡流量的,因为流量并不代表服务器的繁忙程度。因此,我们需要一个任务分配系统,其还能监控各个服务器的负载情况。

任务分配服务器有一些难点:

负载情况比较复杂。什么叫忙?是CPU高?还是磁盘I/O高?还是内存使用高?还是并发高?还是内存换页率高?你可能需要全部都要考虑。这些信息要发送给那个任务分配器上,由任务分配器挑选一台负载最轻的服务器来处理。

任务分配服务器上需要对任务队列,不能丢任务啊,所以还需要持久化。并且可以以批量的方式把任务分配给计算服务器。

任务分配服务器死了怎么办?这里需要一些如Live-Standby或是failover等高可用性的技术。我们还需要注意那些持久化了的任务的队列如何转移到别的服务器上的问题。还有一种方法是使用抢占式的方式进行负载均衡,由下游的计算服务器去任务服务器上拿任务。让这些计算服务器自己决定自己是否要任务。这样的好处是可以简化系统的复杂度,而且还可以任意实时地减少或增加计算服务器。但是唯一不好的就是,如果有一些任务只能在某种服务器上处理,这可能会引入一些复杂度。不过总体来说,这种方法可能是比较好的负载均衡。四、后端系统负载均衡

前面说了数据分区,数据分区可以在一定程度上减轻负载,但是无法减轻热销商品的负载,对于火车票来说,可以认为是大城市的某些主干线上的车票。这就需要使用数据镜像来减轻负载。使用数据镜像,你必然要使用负载均衡,在后端,我们可能很难使用像路由器上的负载均衡器,因为那是均衡流量的,因为流量并不代表服务器的繁忙程度。因此,我们需要一个任务分配系统,其还能监控各个服务器的负载情况。

任务分配服务器有一些难点:

负载情况比较复杂。什么叫忙?是CPU高?还是磁盘I/O高?还是内存使用高?还是并发高?还是内存换页率高?你可能需要全部都要考虑。这些信息要发送给那个任务分配器上,由任务分配器挑选一台负载最轻的服务器来处理。

任务分配服务器上需要对任务队列,不能丢任务啊,所以还需要持久化。并且可以以批量的方式把任务分配给计算服务器。

任务分配服务器死了怎么办?这里需要一些如Live-Standby或是failover等高可用性的技术。我们还需要注意那些持久化了的任务的队列如何转移到别的服务器上的问题。

不臣提示您:看后求收藏(同创文学网http://www.tcwxx.com),接着再看更方便。

相关小说

忘却凡尘 连载中
忘却凡尘
露妍灿灿
简介:一个修剑和笛,一个修剑和琴。
2.1万字1年前
超级全能抽奖系统 连载中
超级全能抽奖系统
青霖雾染井青
简介:获得系统,还不飞上天?呀呀呀,老子天下第一,你算啥。什么天才,什么炼丹高手,炼器高手……我啥都第一。
0.2万字2年前
天仙胭脂 连载中
天仙胭脂
冰心幽兰
简介:胭脂是天庭王母身边御用天然护肤的仙子。时值年一度的护肤品展销大会,也是仙界其他仙子竞争王母娘娘身边御用护肤红人的一个平台。胭脂仙子和她的对手水粉仙子在展销大会开始之前发生了口角,导致胭脂仙子的参赛作品——七彩胭脂,在混乱之中掉到了凡间,没办法,大会要开始了,胭脂仙子动了下凡去寻找的想法。哪知道这正和水粉仙子的用意,胭脂仙子下凡之后,水粉仙子却夺得了这次比赛的冠军,并告诉王母娘娘,胭脂仙子爱上了一个凡人私自下凡去了。因为气愤胭脂仙子的不告而别,王母娘娘在胭脂仙子身上下了一些禁制,导致胭脂仙子一到人间,就失去了原本的法力,忘记了自己的来历,开始在三界中流浪,受尽万般折磨。在三界六道之中,轮回投胎了几世,可她心里始终有个执念,那就是寻找她的七彩玲珑胭脂宝盒。终有一天,皇天不负苦心人,她不但找回了自己的七彩玲珑胭脂宝盒,也找回了自己的法力和记忆。她重新回到天庭找水粉仙子算账,夺回了自己拥有的一切,也恢复了和王母娘娘之间比较和谐美好的友谊。
16.8万字2年前
我的白衣美人师尊 连载中
我的白衣美人师尊
一帘清雨
简介:[请勿转载]为规者必揪,且赔偿
0.8万字2年前
九天仙云记 连载中
九天仙云记
陈冰斗罗
简介:我神洲大地,浩之荡荡,地大物博,只恨天公不作美,降妖物于人间,为祸苍生。白领林云,在游戏世界纵横一方,只为守护游戏外的几十亿民众。世间苍生,大道茫茫。
3.3万字1年前
顾江-d518 连载中
顾江-d518
顾望流云
简介:天下争端,不过尔虞我诈,谁可逃?
5.6万字1年前