不臣
超小超大

羽玖

五、异步、 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),接着再看更方便。

相关小说

三生三世十里桃花之月颜恋——d561 连载中
三生三世十里桃花之月颜恋——d561
冰123456789颜
简介:颜无忧“小童,你看这是我为你种的十里枫林。”司童“那又怎么样?”颜无忧抱着司童说“你说过,若是我想娶你,聘礼必须是为你种十里枫林”司童推开颜无忧“你必须是完好无损的在我面前,才答应嫁给你。可你看看你这一身伤痕。我怎么可能答应嫁给你?”颜无忧一听立马手一挥,把身上的伤痕全部用仙气治好了。一脸满是期待的望着司童“小童,我以十里枫林为聘,无忧山庄为嫁妆。你,可愿嫁我?”颜无忧一脸期待双眼又含着一丝紧张的看着司童,司童看着眼前的颜无忧没有上神的样子,而是一副一个普通的男子对一个心爱的女子表达爱意,求娶女子。司童上前抱住颜无忧说道“我愿意。”
0.6万字2年前
在万花谷当杀手 连载中
在万花谷当杀手
风月不知醒
简介:重峦叠嶂之中有个万花谷,专养刺客营生。秋小蛮从小被培养成只许成功不许失手的大刺客,江湖人称“玉面神投手”。她遵守师训,只收善人的钱办事,令恶人闻风丧胆。在惩凶除恶的过程中,有人重金买她杀了有着“铁面战神”之称的王爷祁渊。而在十多年前就是他身为半妖的母后害她一家人家破人亡流离失所。祁渊为了追查母后下落找到狼仙山,为了救自己母后使其恢复原貌,他服药以身淬炼,不料控制不住妖血,失了神智乱杀无辜。王爷在世人心中的地位降低,成为人人喊打喊杀的妖孽。2022年4月20日修改简介。
11.3万字2年前
乱古苍 连载中
乱古苍
执爱上萝莉
简介:仙魔神妖,皆为脚下蝼蚁,天地苍茫,化我掌心三寸既然要我出世屠戮,那么天道就得先死,我来成为天道!!!!
1.9万字2年前
天道宠儿修仙计 连载中
天道宠儿修仙计
修仙小妹
简介:3000年后的一位全职大佬一心求死,但却被零零一系统绑定了,只好勉强修仙了
0.1万字2年前
西游之天蓬怒 连载中
西游之天蓬怒
天涯居士天帝
简介:身穿神话世界,意外成为了天兵,等他努力成为天河元帅的时候,才知道自己是倒霉的天蓬,这让他更加小心了,可是谁知道各方大神都在算计他,这让他愤怒了,且看朱鹏能不能改变自己的命运。
15.2万字2年前
少年歌行之无双传说 连载中
少年歌行之无双传说
SDSNTLYW
简介:来看无双的骚操作......搞错了。来看无双如何开创自己的传奇吧。本文all无双“雷无桀~”“嗯?我在呐,小无双!”“雷!无!桀!”“我在啊,小无双,怎么啦?”“雷无桀。”“我在,小无双,别害怕!”“雷无桀!”“我来了!小无双我会保护好你的,谁也不能欺负你!”笨蛋!你也要保护好自己啊!我是最强的,但……我喜欢被我所爱之人--雷无桀所保护,喜欢被你所宠爱。
4.6万字2年前