设为首页 加入收藏

TOP

《静儿的服务治理私房菜》网络模型的分类和职业规划思考(一)
2017-10-10 12:31:30 】 浏览:3077
Tags:《静儿的服务治理私房菜》 网络 模型 类和 职业规划 思考

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 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇设计模式之适配器模式 下一篇UML学习——活动图(五)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目