奇迹MU战士最厉害的武器和套装是什么?

奇迹MU战士最厉害的武器和套装是什么?,第1张

最厉害的武器自然是龙骨!
套装咩!应该是魔伦的龙王套装!带镶莰的!(头,腿,凯,戒指)现在那些所谓的黑龙什么的套装我不相信有真实的!单说9c
估计mu关了也不会出那些装备!都tm忽悠人的!我见过有这些黑龙跟黑龙一上套装的f个个都开不了几天!

还在寻找mac版iMovie视频剪辑教程吗?今天就与小伙伴们分享iMovie for Mac在实际视频剪辑中的方法技巧。包括美化视频与音频,使用绿幕素材,灵活运用字幕特效,巧用地图背景,背景音乐制作,添加旁白配音,消除视频抖动,以及避免二次压缩这几方面的内容。

imovie Mac 破解版下载地址:>

美化视频与音频

声音饱满,画面精致。这两件事在 iMovie 中一个键就可以搞定,在时间轴中选中待优化的素材,点击视频框左上角的魔棒按钮即可。这个按钮会帮你开启颜色自动颜色平衡,自动颜色校正,自动音频优化三个功能。

一键美化

使用绿幕素材

制作一段绿幕视频,也是一个可以让你的视频瞬间升档的小技巧。你需要准备的只有一张绿色的纸或者布就可以了。下面的演示中,我用手机录制了一段寄居蟹在纸上爬行的视频。

iPhone 拍摄的寄居蟹在绿幕上爬行

绿幕的原理,本质上来说是软件寻找所有绿色部分,然后将其抹掉,露出底下的背景图层。为了完成绿幕,我首先从 iMovie 背景中拖了一幅牛皮纸背景到时间轴中,将背景放置低于绿幕图层。将时间轴对齐效果如下。

时间轴对齐

接着选中绿幕图层,点击视频上方的视频叠层设置图标,选择「蓝/绿屏」,这样就完成了。若绿幕抠图不精确,你可以适当调节柔和度滑块知道满意为止,完成效果如下。

绿幕合成结果

同理,你还可以利用此选单来实现分屏显示和画中画等功能。具体设置方法和绿幕雷同,只需将绿幕图层更换为想要作为画中画显示的图层即可。

分屏显示特效

灵活运用字幕特效

很多人认为 iMovie 提供的特效不够用,其实不然,iMovie 的诸多效果都藏在字幕选项卡里了。本节,我们来看看如何巧用这些字幕选项来实现时间戳,模糊化等特效。

字幕选项卡

为了能在显示中准确显示视频录制时间,有些人可能会在录制时旁边放个表什么的,但其实不必这么麻烦。iMovie 可以自动做这件事。如下图所示,我使用了一个「时间/日期」的字幕,iMovie 自动将该视频录制的准确时间显示在视频中并实时更新。

显示素材时间

若你只想用某些特效,其实只需要将喜欢的特效字幕拖入时间轴,将文字本身删除即可,这样就只剩下特效了。下图中,我选择了几个字幕并删除文字用来展示,可以看到特效和模糊都可以实现。

运用字幕特效

巧用地图背景

做出游视频时,用一小段动画做旅程的过场再合适不过。iMovie 将这一步骤变得非常简单,从左侧的背景中选择你喜欢的地图,拖到时间轴中。

选择感兴趣的地图模版

在时间轴中选中该动画,点击工具栏中的地图图标进入细节设置。选择你喜欢的地图样式,确定起点和终点即可,点击播放就会看到自动生成的动画。

自动生成旅行动画

背景音乐制作

制作视频时,我们常常会选择搭配一个背景音乐,这时候 iMovie 自带的庞大音乐库常常就可以解决问题。选择「音频 - 声音效果」,在这里你可以找到上千个高质量的配音及背景音乐。

自带音频库

有些音频录制时可能杂音较大,或者已有背景音乐因此不需要保留视频原声。这时候右键点击该视频片段,点击分离音频,并将分离出的音频删除即可。

分离并删除原声

以背景音乐为例,我们常常需要背景音乐匹配视频长度并循环播放,且背景音开头和结束应该淡入淡出。从主题音乐中拖入背景音乐到时间轴的音频部分,按住 Alt 不松可以快速复制当前音频以覆盖整个视频长度。最后鼠标指针放置在音轨中间圆点上,拖动即可创造淡入淡出效果。

完善背景音

添加旁白配音

若你仔细观察现在的,很多都是后期配音。后期配音通常可以保障更高的音频质量,且录音成本更低。我们在视频制作中也可以使用后期配音。iMovie 的后期配音功能非常易用,首先将鼠标指针点在希望旁白开始的地方。以下图为例,的线为配音开始处。

选择旁白开始处

点击视频底边栏的麦克风按钮以开始录音,若你觉得背景音干扰你录旁白,可以在设置中勾选「使项目静音」,然后点击录制即可。录制完成后旁白会自动加在刚刚鼠标指针选中的地方。

录制旁白

消除视频抖动

为什么我们会觉得一些视频专业的气息扑面而来?仔细观察下,专业摄影和业余爱好的最大差异就是对画面抖动的控制。为了避免抖动,专业摄影器材往往会配备多种防抖方式,比如三脚架,摇杆,稳定器等。

同理,若你想要让自己精心录制的视频显得专业,你必须重视防抖这个因素。消除视频抖动需要两方面配合,第一点是前期录制。若你的录制设备只有手机,没有额外的稳定器材,也不用担心。现在的手机往往都已经配置了光学防抖和算法防抖,这两套机制的协作会确保我们得到的画面基本不抖动。只需要正确设置即可,为前期做好准备,需要注意以下内容:

机身光学防抖

注意:光学防抖属于手机机身内的硬件防抖,极度重要。但部分手机的光学防抖只能在拍照时启用,视频时无效。若你打算用手机拍视频,务必在购买前确认手机的光学防抖在视频拍摄时可以正常工作。

注意:除光学防抖外,手机或相机内的第二个防抖机制就是算法防抖,这个机制原理很简单,本质就是分析静止不动的画面然后把边缘裁切掉。之所以要单独说一下,正是因为部分机器在 4K 录制下部分机器是无法启动算法防抖的,因为没有足够的画面以供防抖算法切割。

若你的设备在拍摄支持 4K 视频时支持光学和算法防抖,那么大胆拍摄 4K 内容即可。若是在高分辨率下防抖机制无法启用,那么你在视频录制前就应该将机制设置在防抖机制可以启用的最高设置下。

防抖设置

之所以要大费笔墨说防抖的前期设置,正是因为消除视频抖动的另一方面,也就是后期防抖,效果可能不会很理想。但若你的视频已经拍摄完成了,也不妨一试。点击防抖开关,勾选防抖处理和修正果冻效应即可,这里的调节幅度需要你根据实际效果反复尝试。若你的视频本身不存在果冻效应,只勾选防抖处理即可。

避免二次压缩

视频制作完成后,常见的下一步就是将它上传到视频网站上。这一步中,很多人可能没注意到,你精心制作的视频也许会因为不符合网站上传要求而被二次压缩。二次压缩会直接导致两个后果,第一个是视频细节和音频解析例大打折扣,第二个是要排队等待网站压缩服务器二压,视频失去时效性。这都是视频制作者绝不希望见到的,接下来我们看看如何设置 iMovie 以避免二压。

以 Bilibili 为例,其对视频做出如下几个要求。码率不得超过 6mbps,推荐格式 mp4,分辨率不得超过 1920 x 1080,大小不得超过 4G。我们的目标就是直接输出满足要求的视频。

Bilibili 视频上传要求

注意:这里有个常见的误区,Bilibili 这里所描述的码率不是编码码率,而是平均码率,即视频大小除以秒数。以 60M 大小的 15 秒视频为例,平均码率为 60 / 15 = 4mbps,小于上限 6mbps,因此满足要求。

避免二次压缩的设置

iMovie 点击右上角分享按钮,选择「文件」,即会d出上图导出菜单。你需要做如下几个设置以确保最高视频质量,且不被二压:将分辨率设置为 1080p,质量调整到高,压缩选择较好质量,查看左侧的估计大小不超过 4G,用估计大小除以时间确保不超过 6mbps。完成这几步导出即可。

写在文后

在软件选择上,人们常常喜欢追求最好最专业的。我认为不然,以 Final Cut pro 和 iMovie 为例,这两个软件我都在用,有时候我甚至更喜欢 iMovie 的直观 *** 作。与其相对的,专业软件的 *** 作往往更繁杂且学习成本更高。

iMovie,对于绝大多数人的视频编辑需求应该是完全够用的。若你掌握了其中的技巧,未来想要切换到 Final Cut pro 应该也是比较愉快的过程。Final Cut pro X 中主要提供了完善的插件支持,更专业的较色,更丰富的视频编码,外置麦克风音轨同步等功能,有此类需求的时候你自然会考虑换软件。

1。福运来 by卫风
这本书是起点的女频小说,标签是慢热,穿越,宫廷,温馨,女主虽然是穿越的,但还是没有穿越女主的光辉。南竹是瞎子,但是你常常会忽略这个缺点,无小三,从头到底都是一对一。还是比较喜欢看这类小说的,
简介的话搬文案“阿福觉得自己这辈子,就与顶替二字结下不解之缘。遇到好事时,总是自己被别人顶掉,遇到坏事时,总是自己去顶掉别人。顶来顶去,一路顶进皇宫里==
她的心愿是,少看少听少说,平平安安熬到出宫,找个老实听话男人嫁了,好好过自己的下半辈子。
朴素的愿望一次又一次受到挑战,看到不该看的,听到不该听的——还说了不该说的,大概要嫁的人,也不是一开始设想的样子!但是,人生之所以美丽,或许就是因为,我们都不知道未来……”
2。网游之公子连城 作者满座衣冠胜雪
喜欢微微的是不能错过这部小说,这也是网络小说,也是关于大神的故事,当时作者在写这部小说的时候,很多人还特意组团去游戏参观人物原型——公子连城。如此能够看出这个热度啊。标签是网游、温馨、大神、he
文案:在名叫盛世的服务器里,著名的第一大帮凯旋豪门有四大公子,公子小白、公子连城、公子无忌、公子扶苏,均实力强劲,骁勇善战。 经过一系列野战、帮战、城战、服战,以及形形色色的风风雨雨,凯旋豪门终于脱颖而出。 四公子联袂出征,决战紫禁之巅…… (有性格的南竹,女主也很淡然)
3。镇魂调 作者:时久
挺慢热的小说,需要耐心看,虽有有点点玄幻,但是还是很好看的。南竹的身份很让人吃惊,其中的感情够打动人心。标签是奸臣、温馨、穿越、he
让我小小的借用别人的介绍吧
“以历史上的安史之乱为背景,女猪菡玉为了阻止安史之乱的发生,得人相助,魂魄穿越回20年前,模仿哪咤以莲藕为身重新为人,女扮男装入朝做官,企图进谏玄宗极早防备安禄山,以改变历史遇到了刚刚入朝尚未发迹的杨昭即历史上的大奸臣杨国忠,之后两人的种种纠结”
4.《怪你过分美丽》未再
男女主在各自黑暗的过去认识,后来女主生了一个可爱的孩子,过了七八年吧,两人重逢,男主很有担当,当知道自己有了儿子的时候,就义无反顾地想要尽自己父亲的责任;女主很坚强,把自己的儿子教的很好。后来两人也在慢慢的交往中相爱了,整个过程自然无比,孩子可爱无比,为了这个孩子,我们都要去捧场。标签:未婚生子、孩子、温馨、he
文案
莫向晚未曾想到,年少轻狂所付出的代价将是一生的内疚和责任。非非,这个因荒唐的一夜情而意外出世的孩子,便是拯救她于堕落之中的天使,能够搭救她于少年的沉沦之时,支持她于亲人的背弃之后,陪伴她在孤独冷漠的都市中前行。当动荡的生活终归平静,当她将娱乐圈里那份八面玲珑管理工作,以及谨小慎微的单身妈妈身份都胜任下来的时候,孩子的父亲却不合时宜地出现了……
5南宋生活顾问 作者阿昧
依旧是起点的文章,这是一部穿到平凡家庭的小说,这还是一部展现一个时代风貌的小说。总的来说生活就在男女主锅碗瓢盆中度过,其中让我觉得比较好玩的是男主的害羞~大部分的故事都是两人婚后的故事,但是穿插了两人之前的甜蜜,让我深深觉得这个男人很好玩。
作品标签: 平凡生活 穿越 种田
内容简介:
这是一篇先苦后甜的市井小文,
穿越女主腹黑,本土男主闷骚,生活挺坎坷,却有些小情调。
这里有南宋独特的风土人情,
媳妇是可以相看的,妾是租来的,寡妇再嫁是义举,丢掉孩子叫洗儿……
截取奢靡南宋最为安宁的一段,
用锅碗瓢盆,家长里短为你将陪都临安的风情画卷缓缓展开……
6.夜行歌
这是一部最近我觉得写得最好的武侠小说,算是邪教女主和正派男主的故事,但是两人的故事 开始于魔教,也在魔教进展。最后两人回到了江南,男主的生死相随很好~算是男强女更强的故事吧。标签:武侠、强强、温馨、感人,he
内容简介:
翩跹,一个自小便被囚魔教的白衣少女:谢云书,一个被掳入魔教备受劫难的飞扬少年。她为了复仇,不惜苦练异功,以致历尽岁月洗磨却身形不变;他为了逃出魔掌,只能忍辱负重,甘为影卫,在她身边如影随形。生生死死,两人一起在刀剑上起舞,共荣共辱。
七年之后。她竟成了堂堂北方武林巨擘的妹妹,得尽宠爱。而他本是名震江南的谢家三公子,有望执掌家族,令无数淑媛侧目。因缘际会,儿女缱绻,曾生死相托的两人却从此各分天涯,一去两相望。
又是四年。他翻遍中原,远涉西京,搜尽碧落黄泉……
7.纸婚 作者:叶萱
这是一部现代的小说,共有两部,如果说第一部是两人的磨合吧,那么第二部就是两人修成正果兼磨合的故事,是一部男主政府官员的故事。怎么说呢,这部小说还是挺现实的。
标签:婚姻、孩子、城乡问题
故事简介:
都说婚后一年是“纸婚”,这张纸到底是什么纸?砂纸、宣纸、卫生纸还是牛皮纸?“80后”女生顾小影用她的亲身经历向读者们展示了婚后一年的琐碎生活:嫁给“凤凰男”出身的省委办公厅秘书管桐后,顾小影发现,无论是农村公婆的生活习惯、思维方式,还是管桐作为一名政府官员的业余爱好、行为习惯,甚或两人对待事业与家庭关系的态度,都出现了越来越多的分歧……
在这段充满矛盾与误会的磨合期里,顾小影伤心过、绝望过,可是好在,她从来没有放弃过。一次又一次的争吵一次又一次的和解,她渐渐学会宽容、学会理解、学会沟通,当他们终于手牵手。一路跌跌撞撞地走过这段新婚岁月的时候,顾小影才恍悟:原来,婚姻,不仅是种状态,更是一种智慧。
8人生若只初相见 作者:梅子黄时雨
这部小说当时也是颇有争议的,有人说模仿了匪我思存的故事和文风,怎么说呢,是有一点那个的类似,但是我可以说最后它写出了自己的风格,事实证明后来她的几部小说也都很精彩。这是一个平凡女和高干的故事吧,总的来说,女子的温润留给人更多的印象。标签:现代、高干、温馨
故事简介:知道是没有结果的事情,是的,她一早就知道了她向来冷静自持,偏偏遇到了他人生若只初相见,她便是她,他亦是他-------
再推荐几本,我就不详细写了,但是都是很好看的,当木当泽《迷心记》
禾早《红杏泄春光》;意千重《剩女不淑》
蒋胜男《太太时代》
行烟烟《吾皇万岁万万岁》
岳小妞《重生小媳妇》
如是问 《来吧,医生》
《农夫-山泉有点田》
菊子《赵家情事》

想设计亿万级高并发架构,你要先知道高并发是什么?

面对流量高峰,不同的企业是如何通过技术手段解决高并发难题的呢

0、引言

软件系统有三个追求:高性能、高并发、高可用,俗称三高。三者既有区别也有联系,门门道道很多,全面讨论需要三天三夜,本篇讨论高并发。

高并发(High Concurrency)。并发是 *** 作系统领域的一个概念,指的是一段时间内多任务流交替执行的现象,后来这个概念被泛化,高并发用来指大流量、高请求的业务情景,比如春运抢票,电商双十一,秒杀大促等场景。

很多程序员每天忙着搬砖,平时接触不到高并发,哪天受不了跑去面试,还常常会被面试官犀利的高并发问题直接KO,其实吧,高并发系统也不高深,我保证任何一个智商在线的看过这篇文章后,都能战胜恐惧,重拾生活的信心。

本文先介绍高并发系统的度量指标,然后讲述高并发系统的设计思路,再梳理高并发的关键技术,最后结合作者的经验做一些延伸探讨。

1、高并发的度量指标

既然是高并发系统,那并发一定要高,不然就名不副实。并发的指标一般有QPS、TPS、IOPS,这几个指标都是可归为系统吞吐率,QPS越高系统能hold住的请求数越多,但光关注这几个指标不够,我们还需要关注RT,即响应时间,也就是从发出request到收到response的时延,这个指标跟吞吐往往是此消彼长的,我们追求的是一定时延下的高吞吐。

比如有100万次请求,99万次请求都在10毫秒内响应,其他次数10秒才响应,平均时延不高,但时延高的用户受不了,所以,就有了TP90/TP99指标,这个指标不是求平均,而是把时延从小到大排序,取排名90%/99%的时延,这个指标越大,对慢请求越敏感。

除此之外,有时候,我们也会关注可用性指标,这可归到稳定性。

一般而言,用户感知友好的高并发系统,时延应该控制在250毫秒以内。

什么样的系统才能称为高并发?这个不好回答,因为它取决于系统或者业务的类型。不过我可以告诉你一些众所周知的指标,这样能帮助你下次在跟人扯淡的时候稍微靠点儿谱,不至于贻笑大方。

通常,数据库单机每秒也就能抗住几千这个量级,而做逻辑处理的服务单台每秒抗几万、甚至几十万都有可能,而消息队列等中间件单机每秒处理个几万没问题,所以我们经常听到每秒处理数百万、数千万的消息中间件集群,而像阿某的API网关,每日百亿请求也有可能。

2、高并发的设计思路

高并发的设计思路有两个方向:

垂直方向扩展,也叫竖向扩展

水平方向扩展,也叫横向扩展

垂直方向:提升单机能力

提升单机处理能力又可分为硬件和软件两个方面:

硬件方向,很好理解,花钱升级机器,更多核更高主频更大存储空间更多带宽

软件方向,包括用各快的数据结构,改进架构,应用多线程、协程,以及上性能优化各种手段,但这玩意儿天花板低,就像提升个人产出一样,996、007、最多24 X 7。

水平方向:分布式集群

为了解决分布式系统的复杂性问题,一般会用到架构分层和服务拆分,通过分层做隔离,通过微服务解耦。

这个理论上没有上限,只要做好层次和服务划分,加机器扩容就能满足需求,但实际上并非如此,一方面分布式会增加系统复杂性,另一方面集群规模上去之后,也会引入一堆AIOps、服务发现、服务治理的新问题。

因为垂直向的限制,所以,我们通常更关注水平扩展,高并发系统的实施也主要围绕水平方向展开。

3、高并发的关键技术

玩具式的网络服务程序,用户可以直连服务器,甚至不需要数据库,直接写磁盘文件。但春运购票系统显然不能这么做,它肯定扛不住这个压力,那一般的高并发系统是怎么做呢?比如某宝这样的正经系统是怎么处理高并发的呢?

其实大的思路都差不多,层次划分 + 功能划分。可以把层次划分理解为水平方向的划分,而功能划分理解为垂直方向的划分。

首先,用户不能直连服务器,要做分布式就要解决“分”的问题,有多个服务实例就需要做负载均衡,有不同服务类型就需要服务发现。

集群化:负载均衡

负载均衡就是把负载(request)均衡分配到不同的服务实例,利用集群的能力去对抗高并发,负载均衡是服务集群化的实施要素,它分3种:

DNS负载均衡,客户端通过URL发起网络服务请求的时候,会去DNS服务器做域名解释,DNS会按一定的策略(比如就近策略)把URL转换成IP地址,同一个URL会被解释成不同的IP地址,这便是DNS负载均衡,它是一种粗粒度的负载均衡,它只用URL前半部分,因为DNS负载均衡一般采用就近原则,所以通常能降低时延,但DNS有cache,所以也会更新不及时的问题。

硬件负载均衡,通过布置特殊的负载均衡设备到机房做负载均衡,比如F5,这种设备贵,性能高,可以支撑每秒百万并发,还能做一些安全防护,比如防火墙。

软件负载均衡,根据工作在ISO 7层网络模型的层次,可分为四层负载均衡(比如章文嵩博士的LVS)和七层负载均衡(NGINX),软件负载均衡配置灵活,扩展性强,阿某云的SLB作为服务对外售卖,Nginx可以对URL的后半部做解释承担API网关的职责。

所以,完整的负载均衡链路是 client <-> DNS负载均衡 -> F5 -> LVS/SLB -> NGINX

不管选择哪种LB策略,或者组合LB策略,逻辑上,我们都可以视为负载均衡层,通过添加负载均衡层,我们将负载均匀分散到了后面的服务集群,具备基础的高并发能力,但这只是万里长征第一步。

数据库层面:分库分表+读写分离

前面通过负载均衡解决了无状态服务的水平扩展问题,但我们的系统不全是无状态的,后面通常还有有状态的数据库,所以解决了前面的问题,存储有可能成为系统的瓶颈,我们需要对有状态存储做分片路由。

数据库的单机QPS一般不高,也就几千,显然满足不了高并发的要求。

所以,我们需要做分库分表 + 读写分离。

就是把一个库分成多个库,部署在多个数据库服务上,主库承载写请求,从库承载读请求。从库可以挂载多个,因为很多场景写的请求远少于读的请求,这样就把对单个库的压力降下来了。

如果写的请求上升就继续分库分表,如果读的请求上升就挂更多的从库,但数据库天生不是很适合高并发,而且数据库对机器配置的要求一般很高,导致单位服务成本高,所以,这样加机器抗压力成本太高,还得另外想招。

读多写少:缓存

缓存的理论依据是局部性原理。

一般系统的写入请求远少于读请求,针对写少读多的场景,很适合引入缓存集群。

在写数据库的时候同时写一份数据到缓存集群里,然后用缓存集群来承载大部分的读请求,因为缓存集群很容易做到高性能,所以,这样的话,通过缓存集群,就可以用更少的机器资源承载更高的并发。

缓存的命中率一般能做到很高,而且速度很快,处理能力也强(单机很容易做到几万并发),是理想的解决方案。

CDN本质上就是缓存,被用户大量访问的静态资源缓存在CDN中是目前的通用做法。

缓存也有很多需要谨慎处理的问题:

一致性问题:(a)更新db成功+更新cache失败 -> 不一致 (b)更新db失败+更新cache成功 -> 不一致 ©更新db成功+淘汰缓存失败 -> 不一致

缓存穿透:查询一定不存在的数据,会穿透缓存直接压到数据库,从而导致缓存失去作用,如果有人利用这个漏洞,大量查询一定不存在的数据,会对数据库造成压力,甚至打挂数据库。解决方案:布隆过滤器 或者 简单的方案,查询不存在的key,也把空结果写入缓存(设置较短的过期淘汰时间),从而降低命失

缓存雪崩:如果大量缓存在一个时刻同时失效,则请求会转到DB,则对DB形成压迫,导致雪崩。简单的解决方案是为缓存失效时间添加随机值,降低同一时间点失效淘汰缓存数,避免集体失效事件发生

但缓存是针对读,如果写的压力很大,怎么办?

高写入:消息中间件

同理,通过跟主库加机器,耗费的机器资源是很大的,这个就是数据库系统的特点所决定的。

相同的资源下,数据库系统太重太复杂,所以并发承载能力就在几千/s的量级,所以此时你需要引入别的一些技术。

比如说消息中间件技术,也就是MQ集群,它是非常好的做写请求异步化处理,实现削峰填谷的效果。

消息队列能做解耦,在只需要最终一致性的场景下,很适合用来配合做流控。

假如说,每秒是1万次写请求,其中比如5千次请求是必须请求过来立马写入数据库中的,但是另外5千次写请求是可以允许异步化等待个几十秒,甚至几分钟后才落入数据库内的。

那么此时完全可以引入消息中间件集群,把允许异步化的每秒5千次请求写入MQ,然后基于MQ做一个削峰填谷。比如就以平稳的1000/s的速度消费出来然后落入数据库中即可,此时就会大幅度降低数据库的写入压力。

业界有很多著名的消息中间件,比如ZeroMQ,rabbitMQ,kafka等。

消息队列本身也跟缓存系统一样,可以用很少的资源支撑很高的并发请求,用它来支撑部分允许异步化的高并发写入是很合适的,比使用数据库直接支撑那部分高并发请求要减少很多的机器使用量。

避免挤兑:流控

再强大的系统,也怕流量短事件内集中爆发,就像银行怕挤兑一样,所以,高并发另一个必不可少的模块就是流控。

流控的关键是流控算法,有4种常见的流控算法。

计数器算法(固定窗口):计数器算法是使用计数器在周期内累加访问次数,当达到设定的限流值时,触发限流策略,下一个周期开始时,进行清零,重新计数,实现简单。计数器算法方式限流对于周期比较长的限流,存在很大的弊端,有严重的临界问题。

滑动窗口算法:将时间周期分为N个小周期,分别记录每个小周期内访问次数,并且根据时间滑动删除过期的小周期,当滑动窗口的格子划分的越多,那么滑动窗口的滚动就越平滑,限流的统计就会越精确。此算法可以很好的解决固定窗口算法的临界问题。

漏桶算法:访问请求到达时直接放入漏桶,如当前容量已达到上限(限流值),则进行丢弃(触发限流策略)。漏桶以固定的速率进行释放访问请求(即请求通过),直到漏桶为空。分布式环境下实施难度高。

令牌桶算法:程序以r(r=时间周期/限流值)的速度向令牌桶中增加令牌,直到令牌桶满,请求到达时向令牌桶请求令牌,如获取到令牌则通过请求,否则触发限流策略。分布式环境下实施难度高。

4、高并发的实践经验

接入-逻辑-存储是经典的互联网后端分层,但随着业务规模的提高,逻辑层的复杂度也上升了,所以,针对逻辑层的架构设计也出现很多新的技术和思路,常见的做法包括系统拆分,微服务。

除此之外,也有很多业界的优秀实践,包括某信服务器通过协程(无侵入,已开源libco)改造,极大的提高了系统的并发度和稳定性,另外,缓存预热,预计算,批量读写(减少IO),池技术等也广泛应用在实践中,有效的提升了系统并发能力。

为了提升并发能力,逻辑后端对请求的处理,一般会用到生产者-消费者多线程模型,即I/O线程负责网络IO,协议编解码,网络字节流被解码后产生的协议对象,会被包装成task投入到task queue,然后worker线程会从该队列取出task执行,有些系统会用多进程而非多线程,通过共享存储,维护2个方向的shm queue,一个input q,一个output q,为了提高并发度,有时候会引入协程,协程是用户线程态的多执行流,它的切换成本更低,通常有更好的调度效率。

另外,构建漏斗型业务或者系统,从客户端请求到接入层,到逻辑层,到DB层,层层递减,过滤掉请求,Fail Fast(尽早发现尽早过滤),嘴大屁眼小,哈哈。

漏斗型系统不仅仅是一个技术模型,它也可以是一个产品思维,配合产品的用户分流,逻辑分离,可以构建全方位的立体模型。

5、小结

莫让浮云遮望眼,除去繁华识真颜。我们不能掌握了大方案,吹完了牛皮,而忽视了编程最本质的东西,掌握最基本最核心的编程能力,比如数据架构和算法,设计,惯用法,培养技术的审美,也是很重要的,既要致高远,又要尽精微。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/13401928.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存