乐趣区

关于中间件:分布式-如何为-DBLE-贡献源码中间件开发需要掌握的技能都有什么

作者:路路

酷爱技术、乐于分享的技术人,目前次要从事数据库相干技术的钻研。不定时更新集体公众号 WU 双。

本文起源:原创投稿

* 爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。

前言

一个好的开源产品,首先须要有一个成熟稳固的版本,其次须要有一个沉闷的社区。成熟稳固的软件可能吸引用户应用,从而构建产品的社区,社区反过来也可能促成产品的进一步倒退欠缺。

所以说,产品与社区是相互作用,相辅相成的关系。

明天想为大家介绍下中间件开发所需的技能,说不定可能吸引对中间件开发感兴趣的同学,进而成为 DBLE 的源码贡献者呢。

本文首先介绍中间件开发所需的通用技能,这些技能不光光是 DBLE 开发所须要的,而是所有中间件开发都须要的通用技能。而后更进一步,介绍数据库中间件开发所需的非凡技能,这些技能可能与其余中间件开发技能有所不同。

中间件开发所需的通用技能

中间件是一种独立的系统软件服务程序,对上服务于具体的利用,常见的中间件有数据库中间件、消息中间件、缓存中间件等。

中间件开发对于技术的要求能够说还算是较高的,以下是我总结的中间件开发所需的比拟重要的技术。

1、多线程

多线程技术是中间件开发所必须把握的核心技术之一,起因在于其对性能的晋升作用。

多线程可能充分利用多核 CPU 的性能,从而进步零碎的吞吐量,而线程池技术又可能缩小线程创立及销毁的开销,从而更进一步晋升零碎的性能。

当然多线程也同样带来了一些问题,可见性、有序性、活跃性,这些都是多线程技术带来的问题,也有人说性能的晋升是他能够忍耐多线程带来这些问题的惟一理由。

无论如何,多线程技术都是中间件开发所必须的技能。当然多线程技术的学习也不是那么的容易,不要置信网上所说的什么一篇文章精通多线程这些内容,永远没有一篇文章能让你精通多线程,常识的学习没有捷径。

对于 JAVA 的多线程学习,我举荐《JAVA 并发编程实际》,毕竟作者都是 JCP 的专家组成员,另外 JAVA 程序员能够通过残缺的浏览 JUC 源码包来学习多线程。

2、网络编程

网络编程对于中间件的开发而言,也能够说是最重要的技术之一了。

网络连接的建设及网络数据包的读写、网络协议的解决,是中间件的根底也是难点。当然当初有一些网络框架比方 Netty 可能帮咱们很好的解决这些问题,但对于中间件开发者而言,对网络编程还是越相熟越好,这样在面对一些网络问题的时候,咱们也可能不慌不乱,知其然知其所以然的底气,在这时应该可能很好的体现进去。

对于 DBLE 的网络解决,我之前写过一系列的源码解读文章,DBLE 的网络模块都是用 JDK 原生 IO 包实现的,通读一遍应该能够帮忙大家大略理解网络编程。

3、设计模式

中间件不同于业务开发,不能一遇到新需要就简略的加代码加逻辑进行解决,而是要从整体架构角度思考,必要时还须要重构现有模块,以便增加新的性能扩大。

所以对于中间件开发,就须要咱们把握各类设计模式,同时也须要把握重构相干的技能。

设计模式举荐《设计模式:可复用面向对象软件根底》这本书,重构技能举荐《重构: 改善既有代码的设计》这本书。同样,常识的学习没有捷径,还是须要你急躁读完,另外通过实际去了解,能力有所把握。

4、异步编程

高性能框架个别都有很多的异步逻辑,通过异步回调来实现流程管制。异步编程在取得高性能的同时,也失去了肯定的可读性,因为代码的逻辑可能被碎片化了。但对于高性能利用来讲,异步编程也是须要去学习的。

5、算法及数据结构

算法及数据结构是计算机的基础学科,所以对于中间件来讲,天然也离不开它们。

6、测试

如何保障产品的品质,除了软件开发流程的标准化,代码 review 等,测试能够说是最重要的一环了。

测试有最根本的单元测试、集成测试,还有性能测试,疲劳测试等。对于中间件开发人员来说,这些都是须要把握的测试技能。

7、性能调优

决定零碎性能瓶颈的是零碎中的串行局部,以及与内部零碎的交互局部。
性能调优的第一步是定位出零碎的性能瓶颈点,这当然须要你对系统有很深的了解,同样也须要度量工具的辅助。

性能调优的思路包含将串行工作并行化,工作异步化等。

以上是集体认为的中间件开发所须要的通用技能,可能不肯定很全,但最根底最重要的内容应该都包含了。

数据库中间件开发所需的非凡技能

数据库中间件与中间件比照多了哪几个关键字,答复是“数据库”。所以数据库中间件开发所需的非凡技能,其实是与数据库技术相干的技能。

实际上,对于数据库中间件开发人员来讲,越往后越会发现自己离数据库越来越近。

数据库中间件开发所需的非凡技能如下。

1、SQL

数据库中间件的 SQL 路由,SQL 改写等性能都是基于对 SQL 的了解来进行的。所以 SQL 解析是数据库中间件的重要性能之一。

SQL 作为数据库查询语言,对 SQL 的解析与其余任何一门语言的解析都一样,包含词法剖析、语法分析。我之前也写过一篇对于 DBLE SQL 解析的文章,大家能够在公众号中搜寻进一步浏览理解。

SQL 实现解析后,下一步天然是执行,数据库中间件尽管大部分场景能够将 SQL 下推到数据库节点执行,但有一些简单 SQL 还是须要在中间件这一层进行解决的,这里又波及到执行打算的优化,返回后果解决算法等,这些内容能够说是属于重难点内容了。

2、事务

事务是数据库的外围概念,对于数据库中间件来讲事务也同样重要。尤其是在分布式事务的场景下,数据库中间件作为事务协调器的角色,对事务的了解,能帮忙你了解该场景下数据库中间件是如何保证数据的一致性的。

3、数据库协定

数据库中间件对外理论体现为数据库服务端。这里就波及到数据库协定的解决。

DBLE 实现了 MySQL 协定,所以你连贯 DBLE 会发现和连贯 MySQL 的成果一样。
对于 DBLE 的开发,你须要对 MySQL 协定有肯定的理解,MySQL 的协定,大家能够参考上面的链接。

https://dev.mysql.com/doc/int…

4、复制

对于数据库的高可用,只能通过复制的形式来实现。

对于数据库中间件来讲,读写拆散性能可能利用数据库从节点进行读取,进而晋升利用的吞吐量,升高主节点的负载。所以数据库的主从复制,对于数据库中间件开发人员也是须要理解的。

最初

本文列举了中间件开发所须要的一些技能,心愿能让大家对于中间件开发有肯定的理解,更进一步心愿能帮忙对中间件开发感兴趣的同学如何开始学习有个方向上的帮忙。

可能有同学会感觉要学习的货色这么多,什么时候能力真正具备开发中间件的技能呀。

其实咱们不须要等事件齐全筹备好了再去做,因为你可能会感觉筹备工作永远都不够充沛。所以无妨找一个简略的切入点开始实际,例如对于 DBLE 一个小小的 bug 修复,一个配置的批改,尝试去参加批改源码,在此过程中置信 DBLE 的官网团队也会给予你相应的帮忙。

心愿明天的文章能帮忙大家理解中间件的开发。

退出移动版