加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

聊中间件开发

发布时间:2021-04-11 17:50:48 所属栏目:动态 来源:互联网
导读:一个 20 多人的软件开发团队第一次接触了中间件,当时项目的架构师引入了微博开源的 RPC 框架 Motan,借助于这个框架,我们迅速构建起了一个基于微服务架构的内部电商系统。接着在项目中,由于业务需求,我们又引入了 ActiveMQ...在这个阶段,我已经在使用中

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

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

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

  1. 中间件团队会被业务团队的需求所驱动,为集团内部提供定制化的解决方案,俗称「自研」。所以你可能并不了解到 HSF、Diamond 这些阿里内部的中间件。
  2. 中间件团队会从事开源,花费大量的精力提升中间件的极致性能,提升开源影响力,引领技术先进性。这部分中间件则比较为人所熟知,例如 Dubbo、Spring Cloud Alibaba、RocketMQ、Nacos。
  3. 中间件会在阿里云输出商业化产品,相比开源产品,提供更高的 SLA、更强大的功能、更友好的交互。这部分商业化产品诸如:微服务引擎 MSE、消息队列 RocketMQ、分布式应用链路追踪 ARMS。

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

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

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

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

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

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

  1. 微服务治理。例如 RPC 相关中间件,注册中心,配置中心,限流熔断,链路追踪等等。开源产品例如:Dubbo、SpringCloud、Nacos、Zookeeper、Sentinel、Hystrix、Zipkin。
  2. 消息队列。微服务一般强调的同步通信,消息队列单独列出来,主要是因为其异步的机制。开源产品例如:RocketMQ、Kafka
  3. 存储中间件。例如缓存,数据库等等,例如 Mysql、Redis。值得一提的是,由于存储相关的系统一般都非常复杂,特别是在分布式存储领域,体系更是繁杂,在阿里内部一般将数据库和缓存这种存储类型的产品当成是和中间件平级的存在,所以如果有人说 Mysql 和 Redis 不是中间件,也没有啥好争吵的。
  4. 存储 Proxy。典型的如 ShardingSphere。
  5. 网关。例如 Spring Cloud Gateway、Kong、Nginx。
  6. ServiceMesh。Envoy、Istio 在阿里这边也被划分在中间件部门。

其实可以发现,中间件其实并没有一个明确的定义,到底

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!