《静儿的服务治理私房菜》网络模型的分类和职业规划思考

1.3 网络编程模型与服务治理

  服务治理和服务划分密不可分。服务之间既然进行了划分,那么服务之间就要进行通信。当今服务整个链路中最耗时的不是链路节点本身,而是节点间的通信。理解网络编程模型可以更好的进行服务治理。

  网络编程模型的选择与服务治理关心的性能指标,各种参数的配置,维护的上下游之间是怎样的关系都密切相关。

  1.3.1 网络模型的分类

  偶尔自己炖个汤,一条活鱼分成几个部分,头部用来炖汤。将鸡切块配上豆腐,冬瓜等时蔬入锅葱姜一起先炒后加水炖,只放水豆豉,不放其他调料。将鱼头放入笊篱中,入锅一起炖,千滚豆腐万滚鱼,炖到鱼头烂入锅中,将笊篱中剩下的鱼骨拿出即可。

  世界上最遥远的距离是鱼与飞鸟的距离,一个翱翔天际,一个却深潜海底。我却偏偏想让它们在一起。

  大家可能直觉的认为服务治理是一个更为宏观的概念,与网络模型的概念,和鱼和飞鸟一样风马牛不相及。其实服务治理很大方面是要处理服务与服务的衔接和通信。了解网络编程模型对服务治理有重大意义。

  在Java支持异步I/O之前的很长一段时间里,高性能服务端开发领域一直被C++和C长期占据。

  先来看看UNIX网络编程对I/O模型的分类,UNIX提供了5种I/O模型。

  1. 阻塞I/O模型

  最常用的I/O模型就是阻塞I/O模型,缺省情形下,所有文件操作都是阻塞的。我们以套接字接口为例来讲解此模型:在进程空间中调用recvfrom,其系统调用直到数据包到达且被复制到应用进程的缓冲区中或者发生错误时才返回,在此期间一直会等待,进程在从调用recefrom开始到它返回的整段时间内都是被阻塞的,因此被称为阻塞I/O模型。

  2. 非阻塞I/O模型

  recvfrom从应用层到内核时,如果该缓冲区没有数据的话,就直接返回一个EWOULDBLOCK错误,一般都对非阻塞I/O模型进行轮询检查这个状态,看内核是不是有数据到来。

  3. I/O复用模型

  Linux提供select/poll,进程通过将一个或多个fd传递给select或poll系统调用,阻塞在select操作上,这样select/poll可以帮我们侦测多个fd是否处于就绪状态。select/poll是顺序扫描fd是否就绪,而且支持数量有限,因此它的使用受到了一些制约。Linux还提供了一个epoll系统调用,epoll使用基于事件驱动方式代替顺序扫描,因此性能更高。当有fd就绪时,立即回调函数rollback。

  4. 信号驱动I/O模型

  首先开启套接口信号驱动I/O功能,并通过系统调用sigaction执行一个信号处理函数(此系统调用立即返回,进程继续工作,它是非阻塞的)。当数据准备就绪时,就为该进程生成一个SIGIO信号,通过信号回调通知应用程序调用recvfrom来读取数据,并通知主循环函数处理数据。

  5. 异步I/O

  告知内核启动某个操作,并让内核在整个操作完成后(包括将数据从内核复制到用户自己的缓冲区)通知我们。这种模型与信号驱动模型的主要区别是:信号驱动I/O由内核通知我们何时可以开始一个I/O操作;异步I/O模型由内核通知我们I/O操作何时已经完成。

  再来整理一下这五种网络编程模型。

  根据不同的业务场景和技术发展水平,选择合适的网络编程模型。模型的不同,会涉及性能不同的网络闪断、客户端重复接入,客户端安全认证,消息编解码查看,半包读写等情况。生产环境中发生问题,往往会导致跨节点的服务调用中断,严重的可能会导致整个集群环境都不可用,这些都是服务治理要考虑的问题。

静儿心语:

  水豆豉有些辣。书上说感受辣的和痛的是一组神经,我却偏偏喜欢。大概我从未爱过你的人,只是爱上你给的痛。

思考时间:

  最近在梳理近两年的规划。从硬实力到软实力。要做的事情太多了。硬实力上:我需要学习spring boot相关的源码,linux底层技术和C语言。越底层的东西才是经典的内功。

  我技术是很差的。

  我的简历投出去有两种,一种是根本不会给我打电话约面试的:如我找的猎头而不是内推,还有百度和亚马逊。百度和亚马逊是C语言为主。纯JAVA的不需要牛人,名额也很有限。

  其他公司基本上是看到我的简历就会很快给我打电话的。如阿里和腾讯。腾讯名额很少,Java我实在话觉得面试官面不出来这个人的实力。阿里是能面出来的,但是我基本上技术面试能过的也就是杭州的职位。不是说杭州不好哈,主要是杭州HC多,更缺人。北京相对会更严一些。我现在靠短期努力也就是将将能拿到offer这种的,根本没有谈薪资的资本。

  说实在话,现在虽然在美团也挺好的。但是我根本就没打算来美团,这是我最后没办法的最后的后备方案。我来这边面试,是因为刚刚我在乐视做的工作被分到其他部门去了,虽然领导说我可以自己选自己可以干什么,做架构师也行,做项目也行。但是我还是觉得自己没有实际的价值了,挺尴尬的。所以我只是听说美团的抢人大战挺有意思,不体验一把可惜了(侧面体现出我们求贤若渴,如果想来请联系我,要求:Java后台开发,211以上本科,2年以上工作经验)。我还专门挑完全没有熟人的部门面的。不过还是被熟人发现了。主要也是自己说的,人家问我之前人人网领导是谁,我就说了。于是我的简历就到前领导那边了。其实我是很想完全靠自己的,所以最后也不是和前领导一个组。

  但是来美团只能说是卧薪尝胆。我不是说美团不好。我觉得我之前的同事很多都来美团了,都干管理很多年了,都很厉害。但是我是一个纯搞技术的,做了十年的开发,都不打算以管理为主业的。我周围的同事都没有我这样的,大多工作7,8年就开始做管理的。还有一些3,4年就开始做管理的。除了我家男神,一边开发一边管理,两手抓两手都硬。我这么多年技术还是这样,是挺尴尬的。特别是来到这个熟人特别多的地方,说话声音都低了很多。其实哈,人追求不一样,先天条件也不一样,我也没什么羡慕别人的,只是对自己不满意。

  我去阿里面试,JVM方面倒是难不住我的。但是其他方面我都不算深。再加上业务复杂度不高。实际面试的时候很不占优势。阿里基本上需要掌握两门以上的语言。PHP是不算的,JS如果没有到达react层面也是不算的。算法和源码是必须的。不过阿里还算是容易过的。如果要去一些真正高薪的外企,面试要十几面。面试结果不重要,但是其中得到的一些总结却是收益终身的。

  硬实力是不能放松的,除了纯技术,还有业务,格局。软实力也有很多要修炼的。

  比如说我自己感觉特别明显,我着急的时候说话会很快。我觉得这是不太礼貌的。与人沟通要让别人觉得舒服。另外我对自己的职业规划一直也不是很清晰。我总是一段时间做这个,一段时间做那个。没有持续长远的规划。而且实在话,之前的危机感也不是很强烈,基本是为了好玩。给自己弄了一大摊子,想要把之前做的事情连接起来织成网,需要非常多的工作和努力。

跑题时间:

  我家男神昨天终于看我博客了。要是我是我家男神,估计看到我的博客,要气的够呛,说不定就不过了。但是我家男神还好。说了这么一句,我们就聊别的了。并没有特别生气。只是,当我稍稍有些抱怨的时候,基本上都是我很累。

  前几天我跟我家男神说:“私活老找我有新需求,我推不掉。我很累,求抱抱。”我家男神说要量力而行。我说:“我推不掉,你去帮我推掉去。”他就生气了。跟我说:“劝我好好休息已经够体贴的了,别跟我叽歪了。”哥哥,活儿是你接的,说的是一起做,结果让我一个人做,你有本事接,没本事推。觉得是我给你找麻烦了,你可有理了。而且帮我接活让我做,已经不是想了一年两年了。好多年前就开始跟我提。你自己不忙的时候你也没给自己接过活儿啊,你觉得麻烦,做你媳妇就再苦再累都是应该的?我要是说给别人听,别人还以为我嫁了个渣男呢好不好。

  说了别人可能都不可思议。他做这些不是因为他自私或者怎样,只是他真的不知道什么是对的。我家男神不爱读文学书,也很少看电视剧,要看也就是看点足球,娱乐节目。他缺少一些常识。形成他这一点的,除了家庭的教育以外。还有就是,他也就谈过我一个女朋友。所以他遇到的矛盾很少,思考也很少。刚在一起的时候,我们有了矛盾,我从来也不跟他吵,只是安静坐在一旁,背着那首“氓之嗤嗤,抱布贸丝”。他大概从来没想过我在说的是一个痴情女子负心汉的故事。

  像大多数最好的夫妻一样:我真的想过要跟他离婚,觉得他底子太差了,太让人寒心了。但是又不忍心,这么多年,他都在有意识无意识的按照我理想的模样在成长。他是为我量身打造的,我却不要他了。

  我家男神是特别天真的人,别人说什么他都信。去年圣诞节,他去我公司找我吃饭,我们牵手走路的时候,他说:“你手怎么这么热啊”。我说:“这是我对你的热情点燃了我心中的火焰”。我家男神说:“拉倒吧,你说这个我都不信!”大家可以自行脑补我当时的表情。

  但是只有一件事。我有一次很认真的跟他说:“我不爱你”。他说他不信。我当时觉得是我这么多年教他信任我教的太好了,后来仔细想想,他是不愿意相信。这么多年支撑他一直努力的,是他对我的爱。他爱我胜过他自己,他把我的事业看的比他自己的更重要。没有我的爱,我想他会迷失,不知道该怎么生活。

  这两年,他进步很快。各方面的。和我也有关系,和小鲜肉慢慢长大,他有时间思考了也有关系。他现在公司里有好几个清华的,平时耳闻目染,对他的熏陶也有关系。但是,关系最大的,是他从来没有停止过想变成我理想的样子。

  两个人在一起,有缺点不怕,有困难不怕。最让人寒心的是一个人在努力,另一个却不愿前进了。平时两个人彼此鼓励。但是也不要把对对方的意见全都埋在心里,不然对方怎么知道该怎么努力。我心里是不藏事儿的,不能痛快当时说出来,怕对方不太容易接受,我写还不行嘛。心里没有积怨,反而久处不累。

  后来我发现觉得我家男神底子差是多么错误的一件事情。一个人都会有些错误观念,想纠正都很困难。但是至少我家男神是服我的。比明明自己是错的,自己觉得自己太完美了,什么都错不了强多了。春节的时候,我们做1天1夜的火车去婆家。我问他:“你坐到什么位置会不娶我”。他想了想说:“我是总裁肯定也娶你。是主席也会娶你。嗯,应该都会娶你。不对,如果我是古代的皇帝就不娶你了。不对,也可以纳你为妾。”于是我们一路我都在描述我用各种手段怎么弄死他所有的妃子。他表示再娶,又被我弄死。直到下火车,我想我家男神深刻理解了什么叫“最毒妇人心”。

  如果我说小鲜肉哪点像他,他就会特别不安。他会找各种理由,觉得和他不一样。我要是说像我,他就像未来有了保障一样特别踏实。

  我从小生活条件就不错,不愁吃穿,父母工作体面,受人尊敬。所以也很自我为中心。一般女孩子在结婚生子后会经历一个从唯心主义到唯物主义的转变。可是我到现在一直也还是爱做梦。这就说明我没嫁错人。

  男神说他在考虑来望京工作,以后我就有专车接送上下班了。现在我家男神技术已经非常不错,各方面都有长进。最重要的是:没有停止过努力。人生最快乐的不是每天都过着最好的日子,因为习惯了也就那样了。日子一天天变得更好,今天有快乐,明天有期盼。有你在,我不怕变老。  

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

【双语频道】ONOS架构原理

The purpose of this ONOS talk is to convey the rationale behind our approach to ...

3139
来自专栏腾讯社交用户体验设计

项目同步管理法 - 设计师辅技手册(三)

1082
来自专栏PPV课数据科学社区

分享:6个公司大数据岗位的面试经验

【热门下载】 2015中国数据分析师行业峰会精彩PPT下载(共计21个文件) 关注PPV课微信菜单栏回复“2015数据分析师”即可下载 来源:CSDN 作者:g...

5457
来自专栏华章科技

分享:6个公司大数据岗位的面试经验

一面:技术人员面,先自我介绍,项目经验相关介绍,问比较细,问了一些Hadoop、HBase的问题,JAVA基础,JVM内存分配小于32G原因,G1和CMS对比,...

851
来自专栏纯洁的微笑

微服务(Microservice)那点事

摘要: 微服务架构被提出很短的时间内,就被越来越多的开发人员推崇,简单来说其主要的目的是有效的拆分应用,实现敏捷开发和部署 。本分享即尝试介绍微服务架构的一些实...

2686
来自专栏ThoughtWorks

编程的精进之法|洞见

仝健 ThoughtWorks 编程,众所周知被定义为知识工作。所有的知识工作,从业者和门外汉都喜欢把它神秘化,将整个过程以不可知论的风格来解释。理由往...

3377
来自专栏程序员互动联盟

作为计算机专业的,最该学的三门课程

说到计算机专业的小伙伴,提到课程大家都基本上都有一个念头,课程开的太多了,根本就听不懂,或者似乎能听懂点,也是似是而非,到底哪些是重点,那些是可以只是了解下就行...

3899
来自专栏机器人网

工业机器人控制系统组成及典型结构

一、工业机器人控制系统所要达到的功能 机器人控制系统是机器人的重要组成部分,用于对操作机的控制,以完成特定的工作任务,其基本功能如下: 1、记忆功能:存储作业顺...

3464
来自专栏鸿的学习笔记

关于最近读的书的一些瞎扯

最近两个月是真的忙,忙的公众号都没有坚持更新了。现在我又回来了。在此准备瞎扯几句,顺便推荐下自己的最近读过的书,

642
来自专栏机器人网

工业机器人典型控制系统及结构

工业机器人由主体、驱动系统和控制系统三个基本部分组成。 主体即机座和执行机构,包括臂部、腕部和手部,有的机器人还有行走机构。大多数工业机器人有3~6个运动自由度...

3095

扫码关注云+社区