本文转载自微信公众号「Kirito的技术分享」,作者kiritomoe。转载本文请联系Kirito的技术分享公众号。
创新互联专业为企业提供岚县网站建设、岚县做网站、岚县网站设计、岚县网站制作等企业网站建设、网页设计与制作、岚县企业网站模板建站服务,十多年岚县做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
最近频繁地在跟实习生候选人打交道,每次新接触一个候选人,都要花上一定的时间去介绍我们团队,候选人问的最多的一个问题就是「中间件部门一般是干嘛的?」,恰好我之前也接触过一些想从事中间件开发的小伙伴,问过我「现在转行做中间件开发还来得及吗?」诸如此类的问题,索性就写一篇文章,聊聊我个人这些年做中间件开发的感受吧。
什么是中间件开发?
我大四实习时,在一个 20 多人的软件开发团队第一次接触了中间件,当时项目的架构师引入了微博开源的 RPC 框架 Motan,借助于这个框架,我们迅速构建起了一个基于微服务架构的内部电商系统。接着在项目中,由于业务需求,我们又引入了 ActiveMQ...在这个阶段,我已经在使用中间件了,但似乎没有接触到中间件开发,更多的是使用层面上的接触。
我毕业后的第一份工作,公司有几百号研发,当时的 leader 看我对中间件比较感兴趣,有意把我分配在了基础架构团队,我第一次真正意义上成为了一名”中间件研发“,平时主要的工作,是基于开源的 Kong 和 Dubbo,进行一些内部的改造,以提供给业务团队更好地使用。这个阶段,做的事还是比较杂的,业务团队对某些中间件有定制化的需求,都需要去了解这个中间件,熟悉源码。这段时间,也是我成长最快的一个时期,我是在这个期间学会了 Docker、Neo4j、Kong 等以前从来没接触过的技术,并且更加深入地了解 Dubbo 这类 RPC 框架的原理。可能坐在我旁边的就是一个订单部门的同学,抛了一个功能点让我来改造。
现在,我供职于阿里云云原生中间件,相较于上一份中间件研发工作,阿里云这类互联网大公司,任意一个中间件都有少则数人,多则数十人负责,中间件部门和业务部门之间也有着明确的界限。在这里,中间件团队的职责可以细分为三个方向:
我的这三段经历,正好反应了不同规模的公司对中间件开发的不同需求。小公司使用中间件,例如 RPC、MQ、缓存等,基本是由业务开发人员自己维护的。但如果后台研发达到数百人,基本就会组建自己的中间件团队,或者选择使用阿里云等云厂商提供的中间件产品。
中间件开发和业务开发的区别
在我看来,中间件开发和业务开发并没有什么高下之分,非要说区别的话,有点像游戏里面的不同转职,有人选择的是魔法师,有人选择的是战士。在职场的练级过程中,每个人的总技能点数是一样的,业务开发有点向全能战士的方向去发展,各个点都涉猎一点,但每个方向能够分配到技能点自然就少了;中间件开发就像《因为太怕痛,就全点防御力了》里面的主角,把技能点都分配到了一个方向。
假设你是在一个小公司工作,现阶段并没有专门的中间件团队,大家都是业务开发,此时我们做一个假设:公司即将成立一个中间件团队或者叫基础架构部,那么会是哪一类人容易被选中呢?一定是那些技术功底扎实,对中间件感兴趣,研究过源码的人。这个假设并非凭空捏造,很多互联网公司的中间件团队都是这么一点点壮大起来的。我想说什么呢?业务开发和中间件开发一开始并没有明确的界限,因此,不用顾忌你现在是不是在从事业务开发,只要你对中间件感兴趣,有过源码级别的研究,就可以成为一个中间件开发。
中间件开发需要具备哪些素质?
越是大的公司,大的中间件团队,责任分工就越垂直。基本在大公司,一个中间件开发可能花几年时间在某一个垂直方向深耕。以下是一些常见的中间件方向,当然,这个分类在各个公司可能由于组织架构的原因,略有不同。
其实可以发现,中间件其实并没有一个明确的定义,到底哪些开源产品可以是中间件,哪些又不是。
列举完这些典型的中间件,继续讨论这一节的主题,一个中间件开发者需要具备哪些素质?
语言基础。从 Java 程序员的角度,基础通常就是:集合,并发,JVM,常用工具类。
操作系统基础。中间件开发人员经常和操作系统打交道,所以计算机基础也必不可少,我列举一些关键词,供各位参考
网络基础。可以发现上述的每一个中间件都离不开网络通信,一定需要对 TCP 和 HTTP 的原理烂熟于心,框架层面需要熟悉 NIO、Netty、GRPC、HttpClient 等常用的网络框架/工具。
分布式相关知识。了解 CAP, paxos,raft,zab,2pc/3pc,base 等理论知识,例如我看到有一些应届生简历中的一个项目经历就很有意思:根据 MIT 课程 Lab 实现 Raft 协议的 POC。
源码阅读能力。我认为源码阅读能力是一个中间件开发者必备的素质,网上经常能看到各种源码分析文章,通过阅读开源中间件的源码,可以借鉴别人的设计理念,提升自身的编码水准。
保持技术热情,拥抱变化。中间件技术日新月异,可能一个打败一个中间件的不是同类的产品,而是整体的大环境,例如近几年云原生大火,所有中间件几乎都在拥抱变化,主动向 K8s 对齐,在这个大背景下,就需要中间件开发者拥有 K8s 的基础认知能力,熟悉 pod、service、deployment、statefulSet、operator 这些 K8s 的基本概念。
如何成为中间件开发
看完上述这些要求,可能会有一些同学开始咋舌了,但其实也没那么可怕,这跟最早学习 Java 基础是一样的,很多东西一开始没有接触过,觉得很难,但熟悉之后会发现,也就那么回事。
我的技术交流群中经常会有同学抱怨说,平时只能接触到 CRUD,根本接触不到这些”高大上“的技术。我想说的是,机会都是自己找的。我这里有几个切实可行的建议:
当前标题:聊聊中间件开发
URL标题:http://www.shufengxianlan.com/qtweb/news7/268607.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联