刚往房互网递了简历,这主动去公司递简历好吗咋样啊?

2018年日子确实不太好过。

日前知乎被曝出紧急大裁员。有员工甚至上午去谈话下午就理东西走人,整个过程被指非常突然“完全没有准备”。对此知乎将其归结為“结构优化”。

如果真如“知乎员工”所言一年以上员工采取N+1赔偿方案,这是劳动法规定的最低赔偿标准(N是你在这家企业的工作姩限,1则是一个可变的代通知金

《劳动合同法》第四十七条中规定每满一年支付一个月工资,六个月以上不满一年的按一年计算;不滿六个月的支付半个月工资。

此外针对部分企业所谓的紧急辞退“当天谈话、第二天走人”被指不合法规。如果用人单位主动终止合同需要提前一个月通知员工,否则应该增加补偿金

如果有想要学习C/C++的小伙伴,可以关注小编【C/C++企鹅群】wx公众号:CPP_cx 小编也有5年编程经验叻,免费送一套比较系统的资料、教程和工作经验就当是福利吧!

除了知乎,11月以来趣店、锤子、斗鱼纷纷被曝大规模裁员...这还没有算上那些苟延残喘的互金主动去公司递简历好吗。

为何这些主动去公司递简历好吗选在年末裁员原因有多方面:一方面,可能企业因经營需要必须缩减开支、减员节流而年末工作基本完成这时裁员对主动去公司递简历好吗业务影响较小;也有评论认为和明年社保调整有┅定关联,特别是民营企业和私人企业

图片来源:《知乎被曝大裁员》网友评论

企业有企业的苦衷,但被辞退的员工也应该知道如何维護自己的权益

就在昨天,虎扑论坛上一个帖子突然火了阅读超65万,评论近千条名为@Ammmou的网友发帖,自称是国内某家上市互联网主动去公司递简历好吗的员工主动去公司递简历好吗正在疯狂裁员,技术部门裁了一半这时,“终于有一个老哥站出来发声了”、“看一下這主动去公司递简历好吗邮件和老哥回复什么水平给大家普及一下关于被裁员什么需要注意的。

之后他附上了主动去公司递简历好嗎HR的邮件和这位程序员的回复。

HR辞退通知(点击看大图)

程序员回怼邮件(点击看大图)

在这封回复邮件中这位员工对主动去公司递简曆好吗人力的条款逐一回复,有理有据帖子下的高赞评论也是一股脑赞赏,纷纷表示此贴很有参考价值简直是教科书水平。

一般来说如果企业紧急裁员且没有提前一个月通知员工的话,应该相应增加补偿比如赔偿(N+1)个月的薪水,有些主动去公司递简历好吗甚至给到N+6的補偿

其次,也有分析指出赔偿的薪水和平时到手薪水不同,是指在劳动合同解除或者终止前十二个月的平均工资这个收入包含每个朤税前收入总和,还有住房公积金、医疗补助等以及所有过去12个月的奖金。但这个薪酬也有限额所以高薪人群走法律途径有时并不划算。

《劳动合同法》规定劳动者月工资高于用人单位所在直辖市、设区的市级人民政府公布的本地区上年度职工月平均工资三倍的,向其支付经济补偿的标准按职工月平均工资三倍的数额支付向其支付经济补偿的年限最高不超过十二年。

其实不只互联网行业国内外许哆制造业、通信业巨头都在年末展开大裁员。比如福特汽车、通用汽车、富士康、三星电子等都相继宣布了人员削减计划

如果有想要学習C/C++的小伙伴,可以关注小编【C/C++企鹅群】wx公众号:CPP_cx 小编也有5年编程经验了,免费送一套比较系统的资料、教程和工作经验就当是福利吧!

最新公布裁员消息的就是三星电子。由于手机在中国销量持续下滑三星位于天津的手机制造工厂将于12月31日正式停产并关闭。

据第一财經记者了解三星方面对具体的补偿方案暂时还没给出消息,不过员工被要求从两个方案中选择其一:一是转调至位于天津的三星集团其怹工厂;另外则是选择离职

一般来说,转调会有一定的搬迁补助比照此前三星深圳工厂的人员遣散模式,工资补偿可能达到N+6

实际上茬裁员方面,制造业巨头往往要比一些互联网企业更按规章办事或许由于制造业自身基数大,动辄裁撤上千人(裁员比例不一定有互联網行业高)需要主动去公司递简历好吗谨慎处理。但实际上不论是大企业还是小企业都不希望支出过多。为了减少补偿金支出他们還会通过“变相裁员”来达到目的。

不怕队友坑就怕HR裁员套路深。即使身经百战的职场人士有时面对HR的套路,也难免会感到头痛

此湔《工人日报》就采访了数位资深HR,从他们的表述来看许多劳动者在被裁掉时,并没有意识到自己“被套路”了几个回合下来就自己主动辞职了。

“对于不值得的支出企业一分钱也不愿意花。”有些HR坦言在其10余年从业经历中,从未遇到一起员工提起仲裁情况不想賠钱的主动去公司递简历好吗中,私企占比最大其次是国企,相对最合法合规的是外企

套路一:工资减半 调岗劝退

在绩效考核方面加夶员工的考核力度。有券商员工表示“当月没有新增有效客户,工资减半;三个月无新增客户自动离职。”在这么强的考核压力下囿些员工的工资水平大幅下降,员工自动离职或被谈话劝退

套路二:克扣福利 “潜规则”盛行

比如将员工薪酬体系从之前的“基本工资+朤度绩效+年终奖”,变为“基本工资+季度绩效+年终奖”并分摊在下个季度的每个月发放。明面上不裁员用苛刻的考核甚至克扣各种福利,逼迫员工主动离职

套路三:批评教育 找茬解聘

比如就请假未走流程、打卡时间不合格等问题,找理由批评教育甚至解聘而大部分員工也不愿意太较劲,一方面影响今后找工作另一方面打官司也耗不起。

甚至有HR在接受媒体采访时直言:“我们不喜欢太懂法的员工囿过劳动纠纷的,在我们行业内就叫有案底了而我们在做背景调查时,会筛掉这样的员工”

如果有想要学习C/C++的小伙伴,可以关注小编【C/C++企鹅群】wx公众号:CPP_cx 小编也有5年编程经验了,免费送一套比较系统的资料、教程和工作经验就当是福利吧!

或许为了缓解企业年末裁員的情况,12月5日国务院印发《关于做好当前和今后一个时期促进就业工作的若干意见》。意见提出对于不裁员或少裁员的参保企业,鈳以返还其上一年度实际缴纳失业保险费的50%

原标题:性能之殇:从冯·诺依曼瓶颈谈起

来源:内容由「机器之心」翻译自 lvwenhan作者 JohnLui,谢谢

本文作者根据自己的认知,讨论了人们为提高性能做出的种种努力包括硬件层面的 CPU、RAM、磁盘,操作系统层面的并发、并行、事件驱动软件层面的多进程、多线程,网络层面的分布式等

  1. 天才冯·诺依曼与冯·诺依曼瓶颈
  2. 分支预测、流水线与多核 CPU
  3. 通用电子计算机的胎记:事件驱动
  4. Unix 进程模型的局限
  5. 现代计算机最亲密的伙伴:局部性与乐观
  6. 分布式计算、超级计算机与神经网络共同的瓶颈

(一)天才冯·诺依曼与冯·诺依曼瓶颈

电子计算机与信息技术是最近几十年人类科技发展最快的領域,无可争议地改变了每个人的生活:从生活方式到战争方式从烹饪方式到国家治理方式,都被计算机和信息技术彻底地改变了如果说核武器彻底改变了国与国之间相处的模式,那么计算机与信息技术则彻底改变了人类这个物种本身人类的进化也进入了一个新的阶段。

简单地说生物进化之前还有化学进化。然而细胞一经诞生中心法则的分子进化就趋于停滞了:38 亿年来,中心法则再没有新的变动所有的蛋白质都由 20 种标准氨基酸连成,连碱基与氨基酸对应关系也沿袭至今所有现代生物共用一套标准遗传密码。正如中心法则是化學进化的产物却因为开创了生物进化而停止了化学进化,人类是生物进化的产物也因为开创了文化进化和技术进化而停止了生物进化——进化已经走上了更高的维度。 ——《进化的阶次 | 混乱博物馆》

本文的目标是在我有限的认知范围内讨论一下人们为了提高性能做出嘚种种努力,这里面包含硬件层面的 CPU、RAM、磁盘操作系统层面的并发、并行、事件驱动,软件层面的多进程、多线程网络层面的分布式,等等等等事实上,上述名词并不局限于某一个层面计算机从 CPU 内的门电路到显示器上浏览器中的某行字,是层层协作才得以实现的;計算机科学中的许多概念都跨越了层级:事件驱动就是 CPU 和操作系统协作完成的。

冯·诺依曼 1903 年 12 月 28 日出生于奥匈帝国布达佩斯1957 年 2 月 8 日卒於美国,终年 53 岁在他短暂的一生中,他取得了巨大的成就远不止于世人熟知的「冯·诺依曼架构」。

约翰·冯·诺伊曼,出生于匈牙利的美国籍犹太人数学家,现代电子计算机与博弈论的重要创始人,在泛函分析、遍历理论、几何学、拓扑学和数值分析等众多数学领域及计算机学、量子力学和经济学中都有重大贡献。 ——约翰·冯·诺伊曼的维基百科

除了对计算机科学的贡献,他还有一个称号不被大众所熟知:「博弈论之父」博弈论被认为是 20 世纪经济学最伟大的成果之一。(说到博弈论我相信大多数人第一个想到的肯定跟我一样,那就昰「纳什均衡」)

冯·诺依曼由于在曼哈顿工程中需要大量的运算,从而使用了当时最先进的两台计算机 Mark I 和 ENIAC在使用 Mark I 和 ENIAC 的过程中,他意识到了存储程序的重要性从而提出了存储程序逻辑架构。

「冯·诺依曼架构」定义如下:

  • 存储器是按地址访问、线性编址的空间
  • 指令由操作码囷地址码组成

冯·诺依曼架构第一次将存储器和运算器分开,指令和数据均放置于存储器中,为计算机的通用性奠定了基础虽然在规范中計算单元依然是核心,但冯·诺依曼架构事实上导致了以存储器为核心的现代计算机的诞生。

注:请各位在心里明确一件事情:存储器指嘚是内存即 RAM。磁盘理论上属于输入输出设备

该架构的另一项重要贡献是用二进制取代十进制,大幅降低了运算电路的复杂度这为晶體管时代超大规模集成电路的诞生提供了最重要的基础,让我们实现了今天手腕上的 Apple Watch 运算性能远超早期大型计算机的壮举这也是摩尔定律得以实现的基础。

冯·诺依曼架构为计算机大提速铺平了道路,却也埋下了一个隐患:在内存容量指数级提升以后CPU 和内存之间的数据传輸带宽成为了瓶颈。

我们再来算算时间这颗 CPU 最大睿频 4.4GHz,就是说 CPU 执行一个指令需要的时间是 0.273 秒即 0.22ns(纳秒),而内存的延迟是 68.1ns换句话说,只要去内存里取一个字节就需要 CPU 等待 300 个周期,何其的浪费 CPU 的时间啊

CPU L1 L2 L3 三级缓存是使用和 CPU 同样的 14 纳米工艺制造的硅半导体,每一个 bit 都使鼡六个场效应管(通俗解释成三极管)构成成本高昂且非常占用 CPU 核心面积,故不能做成很大容量

除此之外,L1 L2 L3 三级缓存对计算机速度的提升来源于计算机内存的「局部性」相关内容我们之后会专门讨论。

(二)分支预测、流水线与多核 CPU

CPU 硬件为了提高性能逐步发展出了指令流水线(分支预测)和多核 CPU,本文我们就将简单地探讨一下它们的原理和效果

在一台纯粹的图灵机中,指令是一个一个顺序执行的而现实世界的通用计算机所用的很多基础算法都是可以并行的,例如加法器和乘法器它们可以很容易地被切分成可以同时运行的多个指令,这样就可以大幅提升性能

指令流水线,说白了就是 CPU 电路层面的并发

RISC 机器的五层流水线示意图

下图形象地展示了流水线式如何提高性能的。

指令流水线通过硬件层面的并发来提高性能却也带来了一些无法避免的缺点。

  • 设计难度高一不小心就成为了高频低能的奔㈣
  • 并发导致每一条指令的执行时间变长
  • 优化难度大,有时候两行代码的顺序变动就可能导致数倍的性能差异这对编译器提出了更高的要求
  • 如果多次分支预测失败,会导致严重的性能损失

指令形成流水线以后就需要一种高效的调控来保证硬件层面并发的效果:最佳情况是烸条流水线里的十几个指令都是正确的,这样完全不浪费时钟周期而分支预测就是干这个的:

分支预测器猜测条件表达式两路分支中哪┅路最可能发生,然后推测执行这一路的指令来避免流水线停顿造成的时间浪费。但是如果后来发现分支预测错误,那么流水线中推測执行的那些中间结果全部放弃重新获取正确的分支路线上的指令开始执行,这就带来了十几个时钟周期的延迟这个时候,这个 CPU 核心僦是完全在浪费时间

幸运的是,当下的主流 CPU 在现代编译器的配合下把这项工作做得越来越好了。

还记得那个让 Intel CPU 性能跌 30% 的漏洞补丁吗那个漏洞就是 CPU 设计的时候,分支预测设计的不完善导致的

多核 CPU 的每一个核心拥有自己独立的运算单元、寄存器、一级缓存、二级缓存,所有核心共用同一条内存总线同一段内存。

多核 CPU 的出现标志着人类的集成电路工艺遇到了一个严酷的瓶颈,没法再大规模提升单核性能只能使用多个核心来聊以自慰。实际上多核 CPU 性能的提升极其有限,远不如增加一点点单核频率提升的性能多

多核 CPU 的优势很明显,僦是可以并行地执行多个图灵机可以显而易见地提升性能。只不过由于使用同一条内存总线实际带来的效果有限,并且需要操作系统囷编译器的密切配合才行

题外话: AMD64 技术可以运行 32 位的操作系统和应用程序,所用的方法是依旧使用 32 位宽的内存总线每计算一次要取两佽内存,性能提升也非常有限不过好处就是可以使用大于 4GB 的内存了。大家应该都没忘记第一篇文章中提到的冯·诺依曼架构拥有 CPU 和内存通信带宽不足的弱点(注:AMD64 技术是和 Intel 交叉授权的专利,i7

多核 CPU 劣势其实更加明显但是人类也没有办法,谁不想用 20GHz 的 CPU 呢谁想用这八核的 i7 吖。

  • 内存读写效率不变甚至有降低的风险
  • 操作系统复杂度提升很多倍,计算资源的管理复杂了太多了
  • 依赖操作系统的进步:微软以肉眼鈳见的速度在这十几年间大幅提升了 Windows 的多核效率和安全性:XP 只是能利用,7 可以自动调配一个进程在多个核心上游走2008R2 解决了依赖 CPU0 调度导致死机的 bug(中国的银行提的 bug 哦),8 可以利用多核心启动10 优化了杀进程依赖 CPU0 的问题。

Intel 的超线程技术是将 CPU 核心内部再分出两个逻辑核心只增加了 5% 的裸面积,就带来了 15%~30% 的性能提升

Intel 肯定怀念摩尔定律提出时候的黄金年代,只依靠工艺的进步就能一两年就性能翻番。AMD 肯定怀念 K8 嘚黄金一代1G 战 4G,靠的就是把内存控制器从北桥芯片移到 CPU 内部提升了 CPU 和内存的通信效率,自然性能倍增而今天,人类的技术已经到达叻一个瓶颈只能通过不断的提升 CPU 和操作系统的复杂度来获得微弱的性能提升,呜呼哀哉

不过我们也不能放弃希望,AMD RX VAGA64 显卡拥有 2048 位的显存位宽理论极限还是很恐怖的,这可能就是未来内存的发展方向

(三)通用电子计算机的胎记:事件驱动

Event-Driven(事件驱动)这个词这几年随著 Node.js? 的大热也成了一个热词,似乎已经成了「高性能」的代名词殊不知事件驱动其实是通用计算机的胎记,是一种与生俱来的能力本攵我们就要一起了解一下事件驱动的价值和本质。

通用电子计算机中的事件驱动

首先我们定义当下最火的 x86 PC 机为典型的通用电子计算机:可鉯写文章可以打游戏,可以上网聊天可以读 U 盘,可以打印可以设计三维模型,可以编辑渲染视频可以作路由器,还可以控制巨大嘚工业机器那么,这种计算机的事件驱动能力就很容易理解了:

假设 Chrome 正在播放 Youtube 视频你按下了键盘上的空格键,视频暂停了这个操作僦是事件驱动:计算机获得了你单击空格的事件,于是把视频暂停了

假设你正在跟人聊 QQ,别人发了一段话给你计算机获得了网络传输嘚事件,于是将信息提取出来显示到了屏幕上这也是事件驱动。

事件驱动本质是由 CPU 提供的因为 CPU 作为 控制器 + 运算器,他需要随时响应意外事件例如上面例子中的键盘和网络。

异常控制流是 CPU 的核心功能它是以下听起来就很牛批的功能的基础:

CPU 时间片的分配也是利用异常控制流来实现的,它让多个进程在宏观上在同一个 CPU 核心上同时运行而我们都知道在微观上在任一个时刻,每一个 CPU 核心都只能运行一条指囹

这里的虚拟内存不是 Windows 虚拟内存,是 Linux 虚拟内存即逻辑内存。

逻辑内存是用一段内存和一段磁盘上的存储空间放在一起组成一个逻辑内存空间对外依然表现为「线性数组内存空间」。逻辑内存引出了现代计算机的一个重要的性能观念:

内存局部性天然的让相邻指令需要讀写的内存空间也相邻于是可以把一个进程的内存放到磁盘上,再把一小部分的「热数据」放到内存中让其作为磁盘的缓存,这样可鉯在降低很少性能的情况下大幅提升计算机能同时运行的进程的数量,大幅提升性能

虚拟内存的本质其实是使用 缓存 + 乐观 的手段提升計算机的性能。

系统调用是进程向操作系统索取资源的通道这也是利用异常控制流实现的。

键盘点击、鼠标移动、网络接收到数据、麦克风有声音输入、插入 U 盘这些操作全部需要 CPU 暂时停下手头的工作来做出响应。

进程的创建、管理和销毁全部都是基于异常控制流实现的其生命周期的钩子函数也是操作系统依赖异常控制流实现的。线程在 Linux 上和进程几乎没有功能上的区别

C++ 编译成的二进制程序,其异常控淛语句是直接基于异常控制流的Java 这种硬虚拟机语言,PHP 这种软虚拟机语言其异常控制流的一部分也是有最底层的异常控制流提供的,另┅部分可以由逻辑判断来实现

基于异常控制流的事件驱动

操作系统本身就是事件驱动的,所以 epoll 并不是什么新发明而只是把本来不给用戶空间用的 api 暴露在了用户空间而已。

网络 IO 是一种纯异步的 IO 模型所以 Nginx 和 Node.js? 都基于 epoll 实现了完全的事件驱动,获得了相比于 select/poll 巨量的性能提升洏磁盘 IO 就没有这么幸运了,因为磁盘本身也是单体阻塞资源:即有进程在写磁盘的时候其他写入请求只能等待,就是天王老子来了也不荇磁盘做不到呀。所以磁盘 IO 是基于 epoll 实现的非阻塞 IO但是其底层依旧是异步阻塞,即便这样性能也已经爆棚了。Node.js 的磁盘 IO 性能远超其他解釋型语言过去几年在 web 后端霸占了一些对磁盘 IO 要求高的领域。

(四)Unix 进程模型的局限

Unix 自诞生起就是多用户、多任务的分时操作系统其引叺的「进程」概念是计算机科学中最成功的概念之一,几乎所有现代操作系统都是这一概念的受益者但是进程也有局限,由于 AT&T 是做电话茭换起家所以 Unix 进程在设计之初就是延续的电话交换这个业务需求:保证电话交换的效率,就够了

服务器操作系统,他们的内存模型也昰高度类似 Unix 的

Unix 进程模型介绍

进程是操作系统提供的一种抽象,每个进程在自己看来都是一个独立的图灵机:独占 CPU 核心一个一个地运行指令,读写内存进程是计算机科学中最重要的概念之一,是进程使多用户、多任务成为了可能

操作系统使用上下文切换让一个 CPU 核心上鈳以同时运行多个进程:在宏观时间尺度,例如 5 秒内一台电脑的用户会认为他的桌面进程、音乐播放进程、鼠标响应进程、浏览器进程昰在同时运行的。

以下就是 Linux 上下文切换的过程:

假设正在运行网易云音乐进程你突然想搜歌,假设焦点已经位于搜索框内

  • 当前进程是網易云音乐,它正在优哉游哉的播放着音乐
  • 你突然打字CPU 接到键盘发起的中断信号(异常控制流中的一个异常),准备调起键盘处理进程
  • 將网易云音乐进程的寄存器、栈指针、程序计数器保存到内存中
  • 将键盘处理进程的寄存器、栈指针、程序计数器从内存中读出来写入到 CPU 內部相应的模块中
  • 执行程序计数器的指令,键盘处理程序开始处理键盘输入
  • 寄存器:CPU 核心里的用于暂时存储指令、地址和数据的电路和內核频率一样,速度极快
  • 栈指针:该进程所拥有的栈的指针
  • 程序计数器:简称 PC它存储着内核将要执行的下一个指令的内存地址。程序计數器是图灵机的核心组成部分还记得冯·诺依曼架构吗,它的一大创造就是把指令和数据都存在内存里,让计算机获得了极大的自由度。

Unix 进程模型的局限

Unix 进程模型十分的清晰,上下文切换使用了一个非常简单的操作就实现了多个进程的宏观同时运行是一个伟大的杰作。泹是它却存在着一个潜在的缺陷这个缺陷在 Unix 诞生数十年之后才渐渐浮出了水面。

进程切换过程中需要分别写、读一内存这个操作在 Unix 剛发明的时候没有发现有什么性能问题,但是 CPU 裹挟着摩尔定律一路狂奔2000 年,AMD 领先 Intel 两天发布了第一款 1GHz 的微处理器「AMD Athlon 1GHz」此时一个指令的执荇时间已经低到了 1ns,而其内存延迟高达 60ns这导致了一个以前不曾出现的问题:

上下文切换读写内存的时间成了整个系统的性能瓶颈。

我们將在下一篇文章探讨 SDN(软件定义网络)在这里我们先来看一下「软件定义一切」这个概念。当下不仅有软件定义网络,还有软件定义存储甚至出现了软件定义基础架构(这不就是云计算嘛)。是什么导致了软件越来越强势开始倾入过去只有专业的硬件设备才能提供嘚高性能高稳定性服务呢?我认为就是通用计算机的发展导致的,确切地说是 CPU 和网络的发展导致的。

当前的民用顶级 CPU 的性能已经爆表因为规模巨大,所以其价格也要显著低于同性能的专用处理器:自建 40G 软路由的价格大约是 40G 专用路由价格的二十分之一

(五)DPDK、SDN 与大页內存

上文我们说到,当今的 x86 通用微处理器已经拥有了十分强大的性能得益于其庞大的销量,让它的价格和专用 CPU 比也有着巨大的优势于昰,软件定义一切诞生了!

说到软路由很多人都露出了会心的微笑,因为其拥有低廉的价格、超多的功能、够用的性能和科学上网能力现在网上能买到的软路由,其本质就是一个 x86 PC 加上多个网口大多是基于 Linux 或 BSD 内核,使用 Intel 低端被动散热 CPU 打造出的千兆路由器几百块就能实現千兆的性能,最重要的是拥有 QOS、多路拨号、负载均衡、防火墙、VPN 组网、科学上网等强大功能传统路由器抛开科学上网不谈,其他功能吔不是几百块就搞得定的

软路由便宜,功能强大但是也有弱点。它最大的弱点其实是性能:传统 *UNIX 网络栈的性能实在是不高

软路由的 NAT 延迟比硬路由明显更大,而且几百块的软路由 NAT 性能也不够跑到千兆都难,而几百块的硬路由跑到千兆很容易那怎么办呢?改操作系统啊

软件定义网络,其本质就是使用计算机科学中最常用的「虚拟机」构想将传统由硬件实现的 交换、网关、路由、NAT 等网络流量控制流程交由软件来统一管理:可以实现硬件不动,网络结构瞬间变化避免了传统的停机维护调试的烦恼,也为大规模公有云计算铺平了道路

虚拟机的思想自底向上完整地贯穿了计算机的每一个部分,硬件层有三个场效应管虚拟出的 SRAM、多个内存芯片虚拟出的一个「线性数组内存」软件层有 jvm 虚拟机,PHP 虚拟机(解释器)自然而然的,当网络成为了更大规模计算的瓶颈的时候人们就会想,为什么网络不能虚拟呢

最开始,SDN 还是基于硬件来实施的Facebook 和 Google 使用的都是 OpenFlow 协议,作用在数据链路层(使用 MAC 地址通信的那一层也就是普通交换机工作的那一层),它可以统一管理所有网关、交换等设备让网络架构实时地做出改变,这对这种规模的主动去公司递简历好吗所拥有的巨大的数据中惢非常重要

Intel DPDK 全称为 Intel Data Plane Development Kit,直译为「英特尔数据平面开发工具集」它可以摆脱 *UNIX 网络数据包处理机制的局限,实现超高速的网络包处理

当下,一台 40G 核心网管路由器动辄数十万而 40G 网卡也不会超过一万块,而一颗性能足够的 Intel CPU 也只需要几万块软路由的性价比优势是巨大的。

实际仩阿里云和腾讯云也已经基于 DPDK 研发出了自用的 SDN,已经创造了很大的经济价值

DPDK 使用自研的数据链路层(MAC 地址)和网络层(ip 地址)处理功能(协议栈),抛弃操作系统(LinuxBSD 等)提供的网络处理功能(协议栈),直接接管物理网卡在用户态处理数据包,并且配合大页内存和 NUMA 等技术大幅提升了网络性能。有论文做过实测10G 网卡使用 Linux 网络协议栈只能跑到 2G 多,而 DPDK 分分钟跑满

上篇文章我们已经说到,Unix 进程在网络數据包过来的时候要进行一上下文切换,需要分别读写一内存当系统网络栈处理完数据把数据交给用户态的进程如 Nginx 去处理还会出現一上下文切换,还要分别读写一内存夭寿啦,一共 1200 个 CPU

而用户态协议栈的意思就是把这块网卡完全交给一个位于用户态的进程去处悝CPU 看待这个网卡就像一个假肢一样,这个网卡数据包过来的时候也不会引发系统中断了不会有上下文切换,一切都如丝般顺滑当然,实现起来难度不小因为 Linux 还是分时系统,一不小心就把 CPU 时间占完了所以需要小心地处理阻塞和缓存问题。

NUMA 来源于 AMD Opteron 微架构其特点是将 CPU 矗接和某几根内存使用总线电路连接在一起,这样 CPU 在读取自己拥有的内存的时候就会很快代价就是读取别 U 的内存的时候就会比较慢。这個技术伴随着服务器 CPU 核心数越来越多内存总量越来越大的趋势下诞生的,因为传统的模型中不仅带宽不足而且极易被抢占,效率下降嘚厉害

NUMA 利用的就是电子计算机(图灵机 + 冯·诺依曼架构)天生就带的涡轮:局部性。涡轮:汽车发动机加上涡轮,可以让动力大增油耗降低

为了实现虚拟内存管理机制,前人们发明了内存分页机制这个技术诞生的时候,内存分页的默认大小是 4KB而到了今天,绝大多数操莋系统还是用的这个数字但是内存的容量已经增长了不知道多少倍了。

TLB(Translation Lookaside Buffers)转换检测缓冲区是内存控制器中为增虚拟地址到物理地址嘚翻译速度而设立的一组电子元件,最近十几年已经随着内存控制器被集成到了 CPU 内部每颗 CPU 的 TLB 都有固定的长度。

如果缓存未命中(TLB miss)则偠付出 20-30 个 CPU 周期的带价。假设应用程序需要 2MB 的内存如果操作系统以 4KB 作为分页的单位,则需要 512 个页面进而在 TLB 中需要 512 个表项,同时也需要 512 个頁表项操作系统需要经历至少 512TLB Miss 和 512缺页中断才能将 2MB 应用程序空间全部映射到物理内存;然而,当操作系统采用 2MB 作为分页的基本单位时只需要一TLB Miss 和一缺页中断,就可以为 2MB 的应用程序空间建立虚实映射并在运行过程中无需再经历 TLB Miss 和缺页中断。

大页内存 HugePage 是一种非常有效的减少 TLB miss 的方式让我们来进行一个简单的计算。

2013 年发布的 Intel Haswell i7-4770 是当年的民用旗舰 CPU其在使用 64 位 Windows 系统时,可以提供 1024 长度的 TLB如果内存页的大小昰 4KB,那么总缓存内存容量为 4MB如果内存页的大小是 2MB,那么总缓存内存容量为 2GB显然后者的 TLB miss 概率会低得多。

DPDK 支持 1G 的内存分页配置这种模式丅,一性缓存的内存容量高达 1TB绝对够用了。

不过大页内存的效果没有理论上那么惊人DPDK 实测有 10%~15% 的性能提升,原因依旧是那个天生就带嘚涡轮:局部性

(六)现代计算机最亲密的伙伴:局部性与乐观

冯·诺依曼架构中,指令和数据均存储在内存中,彻底打开了计算机「通用」的大门。这个结构中,「线性数组」内存天生携带了一个涡轮:局部性。

空间局部性是最容易理解的局部性:如果一段内存被使用那么之后,离他最近的内存也最容易被使用无论是数据还是指令都是这样。举一个浅显易懂的例子:

循环处理一个 Array当处理完了 [2] 之后,丅一个访问的就是 [3]他们在内存里是相邻的。

如果一个变量所在的内存被访问过那么接下来这一段内存很可能被再访问,例子也非常簡单:

在一个 function 内一个内存地址很可能被访问、修改多

「乐观」作为一种思考问题的方式广泛存在于计算机中从硬件设计、内存管悝、应用软件到数据库均广泛运用了这种思考方式,并给我们带来了十分可观的性能收益

第一篇文章中的 L1 L2 L3 三级缓存和第二篇文章中的分支预测与流水线,均是乐观思想的代表

虚拟内存依据计算机内存的局部性,将磁盘作为内存的本体将内存作为磁盘的缓存,用很小的性能代价带来了数十倍并发进程数是乐观思想的集大成者。

Java 经典面试题 LRU 缓存实现也是乐观思想的一种表达。

同样鸟哥的 yac 也是这一思想的强烈体现。

设计 Yac 的经验假设

  1. 对于一个应用来说, 同名的 Cache 键, 对应的 Value, 大小几乎相当.
  2. 不同的键名的个数是有限的.
  3. Cache 的读的次数, 远远大于写的次数.
  4. Cache 鈈是数据库, 即使 Cache 失效也不会带来致命错误.
  1. key 的长度最大不能超过 48 个字符. (我想这个应该是能满足大家的需求的, 如果你非要用长 Key, 可以 MD5 以后再存)
  2. Value 的朂大长度不能超过 64M, 压缩后的长度不能超过 1M.
  3. 当内存不够的时候, Yac 会有比较明显的踢出率, 所以如果要使用 Yac, 那么尽量多给点内存吧.

乐观锁在并发控淛和数据库设计里都拥有重要地位其本质就是在特定的需求下,假定不会冲突冲突之后再浪费较长时间处理,比直接每请求都浪费較短时间检测总体的性能高。乐观锁在算法领域有着非常丰富而成熟的应用

分布式计算的核心思想就是乐观,由 95% 可靠的 PC 机组成的分布式系统起可靠性也不会达到 99.99%,但是绝大多数场景下99% 的可靠性就够了,毕竟拿 PC 机做分布式比小型机便宜得多嘛下一篇文章我会详细介紹分布式计算的性能之殇,此处不再赘述

出来混,早晚是要还的

乐观给了我们很多的好处,总结起来就是一句话:以微小的性能损失換来大幅的性能提升但是,人在河边走哪有不湿鞋。每一个 2015 年 6 月入 A 股的散户都觉得大盘还能再翻一番,岂不知一周之后就是股灾叻。

乐观的代价来自于「微小的性能损失」就跟房贷市场中「微小的风险」一样,当大环境小幅波动的时候他确实能承担压力,稳住系统但是怕就怕突然雪崩:

  • 虚拟内存中的内存的局部性突然大幅失效,磁盘读写速度成了内存读写速度系统卡死
  • 分布式数据库的六台機器中的 master 挂了,系统在一秒内选举出了新的 master你以为系统会稳定运行?master 挂掉的原因就是压力过大这样就会导致新的 master 瞬间又被打挂,然后┅台一台地继续服务彻底失效。例如:「故障说明」对六月六日 LeanCloud 多项服务发生中断的说明

(七)分布式计算、超级计算机与神经网络共哃的瓶颈

分布式计算是这些年的热门话题各种大数据框架层出不穷,容器技术也奋起直追各类数据库(Redis、ELasticsearch、MongoDB)也大搞分布式,可以说昰好不热闹分布式计算在大热的同时,也存在着两台机器也要硬上 Hadoop 的「面向简历编程」接下来我就剖析一下分布式计算的本质,以及峩的理解和体会

分布式计算来源于人们日益增长的性能需求与落后的 x86 基础架构之间的矛盾。恰似设计模式是面向对象对现实问题的一种妥协

x86 服务器,俗称 PC 服务器、微机服务器近二十年以迅雷不及掩耳盗铃之势全面抢占了绝大部分的服务器市场,它和小型机比只有一个優势其他的全是缺点,性能、可靠性、可扩展性、占地面积都不如小型机但是一个优势就决定了每年 2000 多亿美元的 IDC 市场被 x86 服务器占领了 90%,这个优势就是价格毕竟有钱能使磨推鬼嘛。

现有的分布式计算无论是 Hadoop 之类的大数据平台,还是 HBase 这样的分布式数据库无论是 Docker 这种容器排布,还是 Redis 这种朴素分布式数据库其本质都是因为 x86 的扩展性不够好,导致大家只能自己想办法利用网络来自己构建一个宏观上更强性能更高负载能力的计算机

x86 分布式计算,是一种新的计算机结构

基于网络的 x86 服务器分布式计算,其本质是把网络当做总线设计了一套噺的计算机体系结构:

  • 每一台机器就等于一个运算器加一个存储器
  • master 节点就是控制器加输入设备、输出设备

x86 分布式计算的弱点

上古时代,小型机的扩展能力是非常变态的到今天,基于小型机的 Oracle 数据库系统依旧能做到惊人的性能和可靠性实际上单颗 x86 CPU 的性能已经远超 IBM 小型机用嘚 PowerPC,但是当数量来到几百颗x86 服务器集群就败下阵来,原因也非常简单:

  • 小型机是专门设计的硬件和专门设计的软件只面向这种规模(唎如几百颗 CPU)的计算
  • 小型机是完全闭源的,不需要考虑扩展性特定的几种硬件在稳定性上前进了一大步
  • x86 的 IO 性能被架构锁死了,各种总线、PCI、PCIe、USB、SATA、以太网为了个人计算机的便利性,牺牲了很多的性能和可靠性
  • 小型机使用总线通信可以实现极高的信息传递效率,极其有效的监控以及极高的故障隔离速度
  • x86 服务器基于网络的分布式具有天然的缺陷:
  • 操作系统决定了网络性能不足
  • 网络需要使用事件驱动处理仳总线电路的延迟高几个数量级
  • PC 机的硬件不够可靠,故障率高
  • 很难有效监控隔离故障速度慢

x86 分布式计算的基本套路

Google 系大数据处理框架

的數据存储系统,这三大组件组成了 Google 的分布式计算模型

Hadoop、Spark、Storm 是目前最重要的三大分布式计算系统,他们都是承袭 Google 的思路实现并且一步一步發展到今天的

MapReduce 的基本原理也十分简单:将可以并行执行的任务切分开来,分配到不同的机器上去处理最终再汇总结果。而 GFS 是基于 Master-Slave 架构嘚分布式文件系统其 master 只扮演控制者的角色,操控着所有的 slave 干活

Redis 有两个不同的分布式方案。Redis Cluster 是官方提供的工具它通过特殊的协议,实現了每台机器都拥有数据存储和分布式调节功能性能没有损失。缺点就是缺乏统一管理运维不友好。Codis 是一个非常火的 Redis 集群搭建方案其基本原理可以简单地描述如下:通过一个 proxy 层,完全隔离掉了分布式调节功能底层的多台机器可以任意水平扩展,运维十分友好

MongoDB 官方提供了一套完整的分布式部署的方案,提供了 mongos 控制中心config server 配置存储,以及众多的 shard(其底层一般依然有两台互为主从强数据一致性的 mongod)这彡个组件可以任意部署在任意的机器上,MongoDB 提供了 master 选举功能在检测到 master 异常后会自动选举出新的 master 节点。

人们费这么大的劲研究基于网络的 x86 服務器分布式计算目的是什么?还不是为了省钱想用一大票便宜的 PC 机替换掉昂贵的小型机、大型机。虽然人们已经想尽了办法但还是囿一些顽固问题无法彻底解决。

无论怎样设计master 失效必然会导致服务异常,因为网络本身不够可靠所以监控系统的容错要做的比较高,所以基于网络的分布式系统的故障恢复时间一般在秒级而小型机的单 CPU 故障对外是完全无感的。

现行的选举机制主要以节点上的数据以及節点数据之间的关系为依据通过一顿猛如虎的数学操作,选举出一个新的 master逻辑上,选举没有任何问题如果 master 因为硬件故障而失效,新嘚 master 会自动顶替上并在短时间内恢复工作。

而自然界总是狠狠地打人类的脸:

  1. 硬件故障概率极低大部分 master 失效都不是因为硬件故障
  2. 如果是鋶量过大导致的 master 失效,那么选举出新的 master 也无济于事:提升集群规模才是解决之道
  3. 即使能够及时地在一分钟之内顶替上 master 的工作那这一分钟嘚异常也可能导致雪崩式的 cache miss,从磁盘缓存到虚拟内存从 TLB 到三级缓存,再到二级缓存和一级缓存全部失效。如果每一层的失效会让系统響应时间增加五倍的话那最终的总响应时长将是惊人的。

无论是 Master-Slave 模式还是 Proxy 模式整个系统的流量最终还是要落到一个特定的资源上。当嘫这个资源可能是多台机器但是依旧无法解决一个严重的问题:系统规模越大,其本底性能损失就越大

这其实是我们所在的这个宇宙涳间的一个基本规律。我一直认为这个宇宙里只有一个自然规律:熵增。既然我们这个宇宙是一个熵增宇宙那么这个问题就无法解决。

超级计算机可以看成一个规模特别巨大的分布式计算系统他的性能瓶颈从目前的眼光来看,是超多计算核心(数百万)的调节效率问題其本质是通信速率不够快,信息传递的太慢让数百万核心一起工作,传递命令和数据的工作占据了绝大多数的运行时间

深度学习這几年大火,其原因就是卷积神经网络(CNN)造就的 AlphaGo 打败了人类计算机在这个无法穷举的游戏里彻底赢了。伴随着 Google 帝国的强大推力深度學习,机器学习乃至人工智能,这几个词在过去的两年大火特别是在中美两国。现在拿手机拍张照背后都有机器学习你敢信

机器学習的瓶颈,本质也是数据交换:机器学习需要极多的计算而计算速度的瓶颈现在就在运算器和存储器的通信上,这也是显卡搞深度学习仳 CPU 快数十倍的原因:显存和 GPU 信息交换的速度极快

分布式系统的性能问题,表现为多个方面但是归根到底,其原因只是一个非常单纯的矛盾:人们日益增长的性能需求和数据一致性之间的矛盾一旦需要强数据一致性,那就必然存在一个限制性能的瓶颈这个瓶颈就是信息传递的速度。

同样超级计算机和神经网络的瓶颈也都是信息传递的速度。

那么信息传递速度的瓶颈在哪里呢?

我个人认为信息传遞的瓶颈最表层是人类的硬件制造水平决定的,再往底层去是冯·诺依曼架构决定的,再往底层去是图灵机的逻辑模型决定的。可是图灵机是计算机可行的理论基础呀所以,还是怪这个熵增宇宙吧为什么规模越大维护成本越高呢,你也是个成熟的宇宙了该学会自己把自巳变成熵减宇宙了。

王俊凯兀自抱着王源在角落里缠綿虽说是寿星的正牌男友,但在这样众星云集的奢华宴会上也实在有些说不过去

没多久经纪人Jam就悄悄靠过来冲两人咳嗽了一声:

王俊凱放开王源白皙的脸,皱眉扭过头来看着眼前的Jam:“你嗓子不舒服阴阳怪气的咳什么?”

“………”Jam一脸生无可恋没好气的开口:“凱爷这宴会还没结束你倒是把源少还给我啊——我这儿还有几个人要让他见见呢~”

“什么人——搞这么晚,我陪他去”王俊凯张口回应。

Jam上下打量了一眼王俊凯身上的黑色卫衣眼神里暗示意味明显,“你这身穿着不合适啦《时代周刊》的主编法里德刚到会场,上面特意交待要好好打个招呼怠慢不得啊。”

王俊凯看了眼王源心下似在衡量轻重,沉吟了一会儿开口:“王源儿你快过去吧我让安晨带峩去房间休息一下,别搞太晚”

王源星星眼里满是不舍,凑过去亲了口王俊凯的侧脸温柔的说,“恩我就去一会儿,你在房间等我”

王俊凯坐了十多个小时的飞机,一路风尘仆仆况且下了飞机就往会场赶,此刻身体上倒真有些疲惫只是因为时差的缘故精神状态倒是依旧很好。反正宴会的主角不是自己此刻倒也乐得轻松,和几个相熟的年轻伙伴打了招呼就跟着助理往王源休息的房间走。

兜兜轉转好一会儿大概是为了避开媒体和狗仔,王源的房间位置很隐蔽到了门口,安晨把Jam事先准备的房卡递给王俊凯交待了几句就离开叻。

王俊凯漫不经心的走进房间超VIP的房间很大,设备齐全一眼就瞥见偌大的客厅里四处摆放的礼物,精美的包装和规格不一的大小一看就价值不菲王俊凯脱掉套在外面的黑色卫衣扔在长沙发上,凑近了便看到那些包装纸上隐隐约约的知名LOGO茶几上摆放的几个别致的黑銫礼盒似乎已经被主人拆封,王俊凯揭开盒子一看就发现了里面的车钥匙

啧啧啧——这些品牌倒也是下血本了,这般倾囊相送倒也真是看得起我家源儿

王俊凯来到卧室,床上依旧凌乱不堪他会心一笑,凑过去想要把王源随意乱扔在床上的衣服捡起来叠好就看到床头櫃上的照片,是自己与他的合照

照片上王源笑的灿烂无比,精致眉眼里洋溢着幸福被自己搂在怀里。

而自己则趁王源冲着镜头笑得时候侧身吻上他的脸颊

王俊凯看着照片眼睛里是少见的温柔神色,刚收拾了王源凌乱的床铺就听到了门口的敲门声

“小凯,是我——”門口响起千玺的声音

王俊凯赶忙起身给他开门。

没想到门刚一打开就看到千玺招呼着侍者推进来一个几层格子的推车推车上是一个做笁精致的生日蛋糕,中间的隔层放着一些餐具和香槟最下面摆放着漂亮的玫瑰花。王俊凯眼神有些疑惑等到侍者离开,王俊凯才上前問“千玺,这是怎么回事”

千玺露出好看的笑,“Special service——刚才宴会主办方一听说你来了就联系了Laduree品牌命人送来了这份特别版的马卡龙苼日蛋糕。本来设计师说是要装在一个红色涂鸦箱上送过来的不过Jam说打开来效果更好,所以才配上香槟和玫瑰让侍者直接送到房间里来”

“呵呵,主办方也是有心了”王俊凯不置可否的笑。

“大哥二源在那些老外面前可是吃香得很,他那么二的性子你不看紧点我都怕他吃亏”千玺说到这里带着几分调侃语气。

“我看他倒是早不服管了今晚上我没来之前他和Simon还有Alexander玩得不要太高兴。”王俊凯说这话嘚语气里带着点酸味儿眼里却是笑意浓。

“啧啧——你这话要让二源听到他不知道得有多怨刚还在跟我说想你呢。”

“真的”王俊凱笑得不要太明显。

“唉不该和你说这个,看把你得意的”千玺拍了拍王俊凯的肩,“行了我就是上来看看你,我还有事儿就先赱了啊,过几天北京见”

“好啦——千总你还是一如既往日理万机。”王俊凯冲他挥挥手

王俊凯躺在沙发上赖了一会儿,眼睛扫过推車上五彩缤纷的蛋糕试探性的伸手挖了一块儿尝了尝,甜腻腻的蛋糕味儿充盈口腔立马不自觉的皱眉。起身到厨房倒了一杯咖啡缓了緩直到甜味儿消散,才决定先去洗个澡

果然这么久还是不太喜欢甜品,还是一整块儿留给王源吃才对

两人的世界变大了,那么多不熟悉的人披着金光闪闪的外衣要把世界上最奢侈的物质堆砌到他们面前却不知凯源私下里简单到像是最寻常的白开水,搂着对方躺在床仩看一部电影都能笑的一脸幸福

你是我最奢侈的礼物,我都拥有了你还有什么能令我动心?

王源说是去一下就回结果被Jam抓着不知道見了多少人,仿佛身怕他错过任何一个走上巅峰的机会这囫囵吞枣的填塞,来去迅疾的人际关系网是演艺圈的常态。王源感激Jam的煞费苦心心里却有一面明镜,最初纯净的梦想始终如一不卑不亢,不会因为任何名利的诱惑而丧失本真

再多的灯光和掌声,都有一个王俊凯始终站在他身侧提醒——王源儿,不能忘记最初的梦想和舞台

所以王源待人接物礼貌亲切,却都保持着安全的距离圈内很多一線明星,看王源都有一种扑朔迷离之感他这么红却这么亲切,以为已经是朋友真要说点什么却仿佛隔着距离,明明站得很近心的距离卻很遥远

这个小小少年,看着让人舒心

倾国玲珑,靠近的时候却似镜中花水中月竟是一场空。

“源少辛苦啦——好好休息,明天峩不催你起床了”房间门口,Jam一脸暧昧的冲他挥挥手

他今天心情很好,王源的表现令他很满意《时代周刊》的法里德对王源大为赞賞,已经敲定王源做一次独立的专访而且法里德私下授意,似乎打算让王源拍摄下一期《时代周刊》的封面如果成真,王源将成为中國第一个18岁就登上《时代周刊》封面的偶像明星

“你最好别叫我。”王源调皮的冲他吐舌头一把关上房门。

房间内暖气开得很足王源刚刚亲自和Jam一起送法里德走,站在酒店大堂门口的时候天空已经飘起了雪

11月中旬的纽约,下了入冬以来的第一场雪不大,但是因为迋源还穿着单薄的黑色西装雪纷纷扬扬洒落在肩头的时候不禁一阵凉意。王源哆嗦了一下才接过门童递来的伞法里德客气的挥挥手示意王源赶快进去,不用送王源却还是礼貌的看着他上了车。


王源却在这时没动他眼睛清亮,透露着难得一见的天真性情嚷到:“Jam下膤了~”

声音里尽是顽皮,他伸出骨节修长的手举到空中“我好喜欢雪,小时候在重庆几乎见不到雪有也是那种雨夹雪,大了在外面倒昰常常看到雪却和今天的雪不一样。”

“我知道啦因为凯爷来了嘛。” Jam到底也是和他一起工作很久知道雪对于王源有着特殊的意义,此刻便也没再催促他站在旁边为他撑伞,陪着他看了一会儿雪才开口:“好了快进去,我们还要在美国留一阵子反正这几日的工莋都是和凯爷一起,之后有的是时间”

王源被他看穿了心思,有点脸红的摸了摸鼻梁才迈步往回走。

进了房间王源倒是没看到王俊凯触目所及却是推车上那个五彩缤纷的蛋糕。他淡淡的扫了一眼已经明白了这一车东西的用意。他笑着脱掉外衣朝卧室走心里却泛着漣漪——你们不懂王俊凯,这不是他会给我的浪漫

一路走进卧室,就看到王俊凯戴着白色耳机坐在床上眼神专注的凝望着落地窗外的膤景。

王源悄悄自背后靠过去伸手突然摘掉他的耳机,凑上去圈住他的脖颈脸挨过去贴紧王俊凯的脸磨蹭,一出口就是撒娇般的呢喃“等久了没?我刚在外面送客身上好冷。”

王俊凯笑着摸了摸王源环在他胸前的手感觉到王源贴过来的皮肤冰凉,“恩到凯哥怀裏来,给你暖暖~”

王源听了这话便笑得眼睛弯弯的

王俊凯抱着王源坐在床上,王源坐在他怀中头刚好枕在他颈窝。王俊凯闻到一股淡淡的古龙水味儿他凑到他耳边说,“刚才在宴会厅没注意你还擦了古龙水?”

“恩今天CK的负责人也来了,阿禾说我马上要拍他们的春夏广告给厂商面子也要喷点。”王源边说边打开床头柜递给王俊凯一只晶莹剔透的瓶子,“CK One Electric好早就送来了,还是两瓶让我和你┅起用。”

王俊凯接过那只瓶子丢到一边凑过去吻他的唇,“就这一次平时不准用。我不喜欢你身上有这些味道”

他的薄荷少年,怹要为他在繁华的世界里保留少年芳华

王源笑着回吻他,“好”

王源第二日起了大早,也不叫醒王俊凯亲了亲他的额头便下床朝客廳走。

昨夜倒时差王俊凯在床上翻来覆去睡不着,王源却是困极起先王源还抱着他说情话,两个人漫无边际聊着最近的工作和生活矗到王源的眼皮开始打架,王俊凯看着王源那副困到不行却舍不得先睡的样子就让他枕在自己小腹上:

“困了就先睡,我给你唱首《雪囚》你听着,别说话”

“恩…”王源的声音已经开始沙哑。

“好冷…雪已经积得那么深……Merry X'masto you……我深爱的人……”王俊凯的歌声很轻却每一句都入了王源的耳,王源在歌声里入眠睡得分外踏实。王俊凯唱着唱着见王源已经睡着,便止了声托着王源的身子小心翼翼的摆正,给他盖好被子后就下床拿起纸笔在纽约雪色纷飞的深夜,开始写歌词

他心里灵感上涌,也不困直到凌晨4点,才再度上床睡觉

王源刚到客厅就看到矮桌上散放着的乐谱和歌词。

他小心翼翼的捧起那一堆被主人随意摆放的纸页不自觉跟着王俊凯的乐谱哼着調子。音符断断续续却悠扬婉转,带着深沉却飘然出世的感觉王源扫了眼纸上的歌词,眼底的笑意渐渐扩大

王俊凯是唱跳俱佳、自巳写歌作词的创作型歌手。这么些年王源心底对于王俊凯的才华是有崇拜的,他看着他在音乐的道路上执着前行一步一步,不偏不倚做到极致。

王俊凯一发新歌就占据着头条王座。

他的骄傲全是努力换来的荣光,一分一寸都容不得他人侵犯和污蔑。

王源没他那份专一却也有模有样的学会了他的坚持。走到现在和他比肩的位置便是王源对王俊凯最大的敬意。我敬你爱你在我心底你是我最强夶的爱人,一路走来我比任何人都尊重你所有的选择

王源这种由内而发的温柔,是王俊凯心底的光源

他细心的把这些收好放置在一旁,刚想要去卫生间就被王俊凯从身后抱了个满怀。

“醒了干嘛不叫我”王俊凯睡眼惺忪的只穿着条内裤就跑到客厅,此刻裸露的胸膛緊紧的贴合在王源身上虽然王源早习惯他偶尔心血来潮的突袭,可两个人毕竟不是小时候还未发育完全的身体王俊凯的身材挺拔,手臂强而有力的包裹住他王源不自觉红了脸。

“你才睡多久穿好衣服再出来行不行啊?”没好气的推了推他后者却纹丝不动的赖在他身上,已经1米87的身高却依旧厚着脸皮嚷到:“就我们两个穿什么衣服。源源我时差还没倒过来,你不陪我再躺一会儿啊”

“源哥我肚子饿了行不行?找点吃的先”王源笑得一脸无奈。

王俊凯凑过去亲了口他的脸颊黏在他身上说,“好啊我陪你找吃的,找了你再陪我躺回去”

“你也不嫌折腾~”王源小声嘟哝了句,心底却甜得要命

清晨的纽约还在下雪,屋里却满室旖旎温暖如春。

两个人下午財有工作简单漱了个口,在冰柜里面翻腾出酒店准备的三明治加热的间隙王俊凯把王源抱坐在流理台上,王源圈住他的脖子凑过去和怹接吻等到热好后王俊凯便就着王源的指尖咬了几口,吃完还略微色气的舔了舔王源的指腹一个三明治吃得暧昧不已。

之后两个人还嫃的又躺了回去王俊凯惯性把王源抱在怀里,亲了亲他的额头闭着眼似是又要入睡。

王源伸手拨了拨他额前的刘海手指抚上他英挺嘚眉,嘴唇凑到他眉间一点点吻上去忽然觉得好幸福,在异国的雪天躺在酒店温暖的床上,和王俊凯腻在一起

从小到大,身边的人來去迅疾一路走来,只有这个人始终在自己身边。王源对世界建立的安全感是王俊凯自小一点一滴经营起来的,这种无论身处世界嘚哪个角落都知道他会在下一刻朝你飞奔而来的笃定,于王源而言是一种不可缺失的依赖。

我一路陪着你披荆斩棘走向王座你亦要親眼看着我戴上王冠的那一天。

“看——”王俊凯忽然揽住他伸手指向窗外

“恩,等雪积得深一点我就带你去堆雪人。”


我要回帖

更多关于 主动去公司递简历好吗 的文章

 

随机推荐