广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >什么是中间件开发
  • 207
分享到

什么是中间件开发

2024-04-02 19:04:59 207人浏览 八月长安
摘要

本篇内容介绍了“什么是中间件开发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是中间件开发?我大四实习

本篇内容介绍了“什么是中间件开发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

什么是中间件开发?

我大四实习时,在一个 20 多人的软件开发团队第一次接触了中间件,当时项目架构师引入了微博开源rpc 框架  Motan,借助于这个框架,我们迅速构建起了一个基于微服务架构的内部电商系统。接着在项目中,由于业务需求,我们又引入了  ActiveMQ...在这个阶段,我已经在使用中间件了,但似乎没有接触到中间件开发,更多的是使用层面上的接触。

我毕业后的第一份工作,公司有几百号研发,当时的 leader  看我对中间件比较感兴趣,有意把我分配在了基础架构团队,我第一次真正意义上成为了一名”中间件研发“,平时主要的工作,是基于开源的 Kong 和  dubbo,进行一些内部的改造,以提供给业务团队更好地使用。这个阶段,做的事还是比较杂的,业务团队对某些中间件有定制化的需求,都需要去了解这个中间件,熟悉源码。这段时间,也是我成长最快的一个时期,我是在这个期间学会了  Docker、Neo4j、Kong 等以前从来没接触过的技术,并且更加深入地了解 Dubbo 这类 RPC  框架的原理。可能坐在我旁边的就是一个订单部门的同学,抛了一个功能点让我来改造。

现在,我供职于阿里云云原生中间件,相较于上一份中间件研发工作,阿里云这类互联网大公司,任意一个中间件都有少则数人,多则数十人负责,中间件部门和业务部门之间也有着明确的界限。在这里,中间件团队的职责可以细分为三个方向:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 中间件团队会被业务团队的需求所驱动,为集团内部提供定制化的解决方案,俗称「自研」。所以你可能并不了解到 HSF、Diamond  这些阿里内部的中间件。

  3. 中间件团队会从事开源,花费大量的精力提升中间件的极致性能,提升开源影响力,引领技术先进性。这部分中间件则比较为人所熟知,例如 Dubbo、spring  Cloud Alibaba、RocketMQNacos

  4. 中间件会在阿里云输出商业化产品,相比开源产品,提供更高的 SLA、更强大的功能、更友好的交互。这部分商业化产品诸如:微服务引擎 MSE、消息队列  RocketMQ、分布式应用链路追踪 ARMS。

我的这三段经历,正好反应了不同规模的公司对中间件开发的不同需求。小公司使用中间件,例如  RPC、MQ、缓存等,基本是由业务开发人员自己维护的。但如果后台研发达到数百人,基本就会组建自己的中间件团队,或者选择使用阿里云等云厂商提供的中间件产品。

中间件开发和业务开发的区别

在我看来,中间件开发和业务开发并没有什么高下之分,非要说区别的话,有点像游戏里面的不同转职,有人选择的是魔法师,有人选择的是战士。在职场的练级过程中,每个人的总技能点数是一样的,业务开发有点向全能战士的方向去发展,各个点都涉猎一点,但每个方向能够分配到技能点自然就少了;中间件开发就像《因为太怕痛,就全点防御力了》里面的主角,把技能点都分配到了一个方向。

假设你是在一个小公司工作,现阶段并没有专门的中间件团队,大家都是业务开发,此时我们做一个假设:公司即将成立一个中间件团队或者叫基础架构部,那么会是哪一类人容易被选中呢?一定是那些技术功底扎实,对中间件感兴趣,研究过源码的人。这个假设并非凭空捏造,很多互联网公司的中间件团队都是这么一点点壮大起来的。我想说什么呢?业务开发和中间件开发一开始并没有明确的界限,因此,不用顾忌你现在是不是在从事业务开发,只要你对中间件感兴趣,有过源码级别的研究,就可以成为一个中间件开发。

中间件开发需要具备哪些素质?

越是大的公司,大的中间件团队,责任分工就越垂直。基本在大公司,一个中间件开发可能花几年时间在某一个垂直方向深耕。以下是一些常见的中间件方向,当然,这个分类在各个公司可能由于组织架构的原因,略有不同。

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 微服务治理。例如 RPC  相关中间件,注册中心,配置中心,限流熔断,链路追踪等等。开源产品例如:Dubbo、SpringCloud、Nacos、ZooKeeper、Sentinel、Hystrix、Zipkin。

  3. 消息队列。微服务一般强调的同步通信,消息队列单独列出来,主要是因为其异步的机制。开源产品例如:RocketMQ、kafka

  4. 存储中间件。例如缓存,数据库等等,例如  MysqlRedis。值得一提的是,由于存储相关的系统一般都非常复杂,特别是在分布式存储领域,体系更是繁杂,在阿里内部一般将数据库和缓存这种存储类型的产品当成是和中间件平级的存在,所以如果有人说  mysql 和 Redis 不是中间件,也没有啥好争吵的。

  5. 存储 Proxy。典型的如 ShardingSphere。

  6. 网关。例如 spring cloud Gateway、Kong、Nginx

  7. ServiceMesh。Envoy、Istio 在阿里这边也被划分在中间件部门。

其实可以发现,中间件其实并没有一个明确的定义,到底哪些开源产品可以是中间件,哪些又不是。

列举完这些典型的中间件,继续讨论这一节的主题,一个中间件开发者需要具备哪些素质?

语言基础。从 Java 程序员的角度,基础通常就是:集合并发JVM,常用工具类。

操作系统基础。中间件开发人员经常和操作系统打交道,所以计算机基础也必不可少,我列举一些关键词,供各位参考

  • 文件 io。例如 pageCache,mmap,direct IO 等概念。

  • 进程线程。例如 green thread,协程等概念。

  • 内存/CPU。例如 cgroup,cache line,bound core 等概念。

网络基础。可以发现上述的每一个中间件都离不开网络通信,一定需要对 tcpHttp 的原理烂熟于心,框架层面需要熟悉  NIONettygrpc、HttpClient 等常用的网络框架/工具。

分布式相关知识。了解 CAP, paxos,raft,zab,2pc/3pc,base  等理论知识,例如我看到有一些应届生简历中的一个项目经历就很有意思:根据 MIT 课程 Lab 实现 Raft 协议的 POC。

源码阅读能力。我认为源码阅读能力是一个中间件开发者必备的素质,网上经常能看到各种源码分析文章,通过阅读开源中间件的源码,可以借鉴别人的设计理念,提升自身的编码水准。

保持技术热情,拥抱变化。中间件技术日新月异,可能一个打败一个中间件的不是同类的产品,而是整体的大环境,例如近几年云原生大火,所有中间件几乎都在拥抱变化,主动向  k8s 对齐,在这个大背景下,就需要中间件开发者拥有 K8s 的基础认知能力,熟悉  pod、service、deployment、statefulSet、operator 这些 K8s 的基本概念。

如何成为中间件开发

看完上述这些要求,可能会有一些同学开始咋舌了,但其实也没那么可怕,这跟最早学习 Java  基础是一样的,很多东西一开始没有接触过,觉得很难,但熟悉之后会发现,也就那么回事。

我的技术交流群中经常会有同学抱怨说,平时只能接触到  CRUD,根本接触不到这些”高大上“的技术。我想说的是,机会都是自己找的。我这里有几个切实可行的建议

  1. 参与开源社区的项目,贡献代码。了解一个中间件最好的方式就是贡献它,带着问题有的放矢地研究源码,是我比较推荐的方式,你所需要做的是寻找一个合适的  issue,解决它。不断重复这个过程,你其实就是一个中间件开发了!

  2. 多动手做实验。很多上面提到的中间件开发应用的素质都可以通过动手做实验的方式来学习,例如动手实现一个简易的 RPC 框架,实现一个 Raft 协议的  POC,通过 benchmark 对比 FileChannel 和 MMAP 的性能,相信我,这比看书、看视频、看博客有用的多的多。

  3. 参与中间件挑战赛。最早是阿里会举办一年一度的中间件性能挑战赛,后来也有一些其他公司如华为开始效仿这类比赛,参与这些挑战赛也可以积累非常多的经验,同时你还可以借着组队,结交非常多的朋友。

“什么是中间件开发”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 什么是中间件开发

本文链接: https://www.lsjlt.com/news/83651.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 什么是中间件开发
    本篇内容介绍了“什么是中间件开发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是中间件开发我大四实习时...
    99+
    2022-10-19
  • 什么是node中间件
    本教程操作环境:Windows10系统、node v12.21.0版、Dell G3电脑。什么是node中间件?深入浅出nodejs中间件原理前言中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络...
    99+
    2023-05-14
    中间件 node
  • mysql间隙锁触发条件是什么
    MySQL的间隙锁(Gap Lock)是用于防止并发事务插入相同的间隙数据,从而保证数据的一致性。间隙锁的触发条件有以下几种情况: ...
    99+
    2023-10-21
    mysql
  • 软件开发中的API和SDK是什么
    一、API的概念和功能 API(Application Programming Interface)是一组定义了软件组件之间交互规则的接口。它可以被视为一个桥梁,连接了不同的软件模块,允许它们相互通信和交互。API定义了调用者可以使用的方法...
    99+
    2023-10-29
    软件 API SDK
  • Linux开发中sudo与su之间的区别是什么
    Linux开发中sudo与su之间的区别是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在Linux开发中我们一般都是以普通用户就行工作,有时会因为个别原因...
    99+
    2023-06-28
  • Django的中间件是什么
    本篇内容主要讲解“Django的中间件是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Django的中间件是什么”吧!什么是中间件(middleware) django 中的中间件(midd...
    99+
    2023-06-04
  • nodejs开发——express路由与中间件
    路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议。 host表示主机。 port为端口,可选字段,不提供时默认为80。 path指定请求资源的U...
    99+
    2022-06-04
    路由 中间件 nodejs
  • web开发中测试是不是一件浪费时间的事
    本篇文章为大家展示了测试是一件浪费时间的事,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。让我们详细地说明作为开发人员,我们都知道我们应...
    99+
    2022-10-19
  • ASP.NET Core中间件Middleware是什么
    本篇内容介绍了“ASP.NET Core中间件Middleware是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是中间件...
    99+
    2023-06-26
  • ASP.Net Core MVC中间件是什么
    本篇内容介绍了“ASP.Net Core MVC中间件是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!讲中间件, 其...
    99+
    2023-06-29
  • css开发中Rocket是什么
    这篇文章主要介绍了css开发中Rocket是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 Rocket 是一个用于创建网页动画的简单...
    99+
    2022-10-19
  • web开发中Less是什么
    这篇文章主要介绍了web开发中Less是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   Less是什么?   Less是一种CS...
    99+
    2022-10-19
  • web开发中workerman是什么
    这篇文章主要为大家展示了“web开发中workerman是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中workerman是什么”这篇文章吧。 ...
    99+
    2022-10-19
  • android控件开发的方法是什么
    Android控件开发的方法主要有以下几种:1. 基于XML布局文件进行控件的开发:可以使用XML布局文件来定义控件的外观和布局,然...
    99+
    2023-09-14
    android
  • 软件开发两大巨头是什么
    本篇内容主要讲解“软件开发两大巨头是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“软件开发两大巨头是什么”吧!软件开发两大巨头B/S 和 C/S 是当今世界...
    99+
    2022-10-19
  • SimpleFramework组件开发的方法是什么
    本篇内容介绍了“SimpleFramework组件开发的方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Simple组件是基于Web...
    99+
    2023-06-17
  • Express中间件的原理是什么
    这篇文章主要介绍“Express中间件的原理是什么”,在日常操作中,相信很多人在Express中间件的原理是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Express中...
    99+
    2022-10-19
  • css开发中Magic Animations是什么
    这篇文章给大家分享的是有关css开发中Magic Animations是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 Magic Animations 是一个具备独特的 ...
    99+
    2022-10-19
  • html5中开发工具是什么
    这篇文章主要介绍html5中开发工具是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!开发工具:1、HBuilder;2、Notepad++;3、Dreamweaver;4、Sublime Text3;5、Ecli...
    99+
    2023-06-15
  • iOS 11开发中UIView是什么
    这篇文章将为大家详细讲解有关iOS 11开发中UIView是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在Swift中,NSObject是所有类的根类。同样在UIKit框架(UIKit框架为iOS应...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作