VIP
SpringBoot 中间件设计和开发
5.98
代理反射、扰动函数、字节码插桩、类代理注册,把技术与场景结合学习中间件开发技术!
🥇公众号 @ bugstack虫洞栈
学习群
VIP借阅
免费试学
限时优惠价 0 元 倒计时 0 天 0:0:0
.99
3169 人加入学习
19 小节
·
约 515分38秒
免费试学
VIP借阅
介绍
目录
评论

作者介绍

小傅哥,一线互联网 java 工程师、架构师,开发过交易&营销、写过运营&活动、设计过中间件也倒腾过中继器、IO板卡。不只是写Java语言,也搞过C#、PHP,是一个技术活跃的折腾者。

小册介绍

抛开 CRUD 而言,程序员为什么要学中间件开发?

工作三年、在职五年,经历过出入职场、感受过跳槽晋升,在这个阶段过程中你一定会感受到自己的技术成长或是不断突破也或是遇到瓶颈,而不同的境遇也都来自于自身在职场中的不同发展路径决定。

很少有人不是一腔热血踏征程,只不过被糟心的需求、屎山的代码、明天就上线的现实把斗志磨平。哪怕你兢兢业业、勤勤恳恳,也不一定能阻挡住市场的变化、公司的调整、部门的变动,那在这个过程中,我们做编程开发的程序员沉淀下了什么呢?

所以,当你有意识到自己对未来技术路线高度追求和走向,那么就该不只是关于业务代码的开发,也要不断的探索那些看似造飞机的深度技术探索,而中间件的设计学习可以算是是对框架源码、数据结构、算法理论最佳的实践。

中间件开发技术

如果平常只是更多的做一些业务代码的开发,那么接触的技术一般是在各类组件的 API 使用上,以及对不同接口的包装。而中间件开发会涉及到各类框架的源码和原理,以及相应的技术迁移和复用。那么在我们这次中间件的设计和实现中,会学到框架、数据、治理、分布式以及字节码的相关技术栈知识,整体包括如下:

图 2-1

  • 技术框架:包括 Spring、SpringBoot 配置加载、自定义注解、扫描注册Bean等,以及 ORM 框架设计原理和实现。这部分技术主要是把开发的中间件与框架结合,开发相应的组件或者包装为各类 SpringBoot Starter 的能力学习。
  • 数据服务:Mysql、Redis、Elasticsearch,都是数据服务,通常需要开发各类组件对数据服务的使用进行封装,Mysql 我们知道有 JDBC,Redis 我们知道有 Jedis,但 Elasticsearch 有 x-pack 你是否了解。
  • 数据组件:这类组件的开发就是为了简化对数据服务的使用,Mysql+JDBC+ORM,可以非常方便的使用数据库服务,那么 Elasticsearch 是否也可以做相应的组件研发,让它的查询也能像使用 MyBatis 一样呢?二折页的技术能力就需要对 MyBatis 等 ORM 框架的实现原理熟悉,同时需要了解 JDBC 的概念。
  • 分布式技术:RPC 框架、注册中心、分布式任务,都是现有互联网分布式架构中非常重要的技术,而对于如何实现一个 RPC 框架,也技术是研发人员要掌握的重点,同时如何使用注册中心、怎么下发分布式调度任务,等等,这些技术的学习能让对现有的框架使用有更深入的认识。
  • 服务治理:熔断、降级、限流、切量、黑白名单以及对现有方法的非入侵式扩展增强等,都可以成为是服务治理类组件,原本这类技术在早期是与业务逻辑代码融合的,后来逐步被拆解出来,开发成对应的组件。所以我们可以学习到,关于这类组件的包装、集成是如何做的。
  • 字节码&插件:在互联网的系统应用运维过程中,你一定会接触到各类的监控系统,而很多监控系统是非入侵的全链路监控,那么这些是如何实现的呢?其实它们是基于字节码插桩,对系统方法的增强,采集相应的运行时信息,进行监控的。再到扩展 JVMTI、IDEA 插件开发,都是为了整个研发过程的可持续交付和上线提高交付质量和降低人效的。

综上,这些贯穿整个互联网系统架构中的各类典型中间件,都会在后续章节中陆续讲解出来,它们是如何设计和实现的,一点点带你解开中间件的神秘面纱,让你的技术栈知识也增加一些有深度的并且是可以亲自操作的内容。

中间件设计和实现列表

序号图标名称描述
1服务治理,统一白名单控制解决上线验证风险,白名单特定用户开量验证
2服务治理,超时熔断包装超时调用熔断,降低业务系统接入成本
3服务治理,调用限流包装接口调用限流,降低业务系统接入成本
4服务治理,自定义拦截方法不破坏现有方法,增强方法服务能力
5ORM 框架实现学习 ORM 框架核心设计,实现简单版 MyBatis
6ORM 框架与 Spring 集合熟悉 Bean 扫描、代理、注册、管理等,以及对 ORM 的包装
7结合 SpringBoot 开发 ORM StarterORM、Spring 与 SpringBoot 结合,自动化记载初始配置,开发 Starter
8ES-JDBC 查询引擎了解 Elasticsearch JDBC 组件的源码实现,x-pack-jdbc
9ES SpringBoot Starter 服务框架运用 ORM 技术迁移,开发 ES 类的 ORM 框架,解决查询映射复杂性,做面向对象开发包装
10RPC 框架实现学习 RPC 框架的设计和开发,了解通信原理和实现
11数据库路由组件把散列算法、切面处理、数据源切换、自定义配置结合在一起实践,开发路由组件
12Redis 简化使用封装处理 Redis 的二次包装,简化为接口代理方式使用,降低应用成本,以及增加升级容易度
13分布式任务调度在注册中、任务、控制台,多方内容组合下开发分布式任务调度
14非入侵监控设计,ASM 字节码插桩了解字节码插桩技术,学习 Javaagent 处理的非入侵监控方式
15非入侵监控设计,JVMTI 定位代码了解 JVMTI 的技术能力,开发 C++ dll 组件,增强监控能力
16IDEA插件与字节码插桩结合结合 IDEA 插件开发与字节码增强技术,采集代码研发运行过程中的执行信息,分析和提升交付质量

小册16个中间件实现,包括测试工程等共计30个代码库,每一章节都会对应有一个中间件的设计和实现,为了便于读者快速有效的学习小册中的技术内容,这里介绍下小册中章节的内容结构,涵盖以下5方面内容:

  1. 开篇引导,在技术、经验、成长等各方面汇总的内容,帮助大家扩宽知识面和增加成长经验。
  2. 需求背景,讲述此中间件会因为什么场景、什么需求下用于解决什么痛点而提出的。
  3. 方案设计,针对需求背景的痛点问题,做中间件架构方案设计,包括设计图稿和实现描述。
  4. 技术实现,主要是对方案设计的具体实现落地,这个过程会包括完整的实现源码以及所有核心代码的讲解。保证大家在学习的过程中也能完成中间件的设计和开发。
  5. 测试验证,每一个中间件的实现都有一个对应的测试工程,例如:whitelist-spring-boot-starterwhitelist-spring-boot-starter-test。通过测试工程对中间件实现预期的验证,可以让大家更加容易的理解一个需求的背景、设计、实现到交付验证的过程。
  6. 文末总结,是对每一篇文章的概要汇总,也是给读者在文末针对此篇文章的学习的一个帮助提醒,也希望你学到的信息要远比站在作者视角总结的内容还要完善。

你会学到什么?

  • Spring 对配置文件的加载、Bean 扫描、定义、注册等
  • Spring Boot 关于 Starter 开发的常用技术手段和技巧
  • ORM、RPC、数据库路由、服务治理、系统监控、IDEA插件等各类场景下的中间件设计
  • 类的代理、反射调用、切面处理、字节码插桩、扰动函数增强散列以及JVMTI等核心技术的实际运用
  • 30个代码库让你对中间件的设计、实现、验证,有清晰的认识

适宜人群

  • 具备 Java 编程基础的研发人员,略懂部分框架源码,经常使用各类技术组件
  • 需要提升个人的核心技术能力
  • 对中间件开发感兴趣,但不知道从哪入手
  • 有在 SpringBoot 开发 Starter 的技术需求

购买须知

  1. 本小册为图文形式内容服务,共计 19 节;
  2. 全部文章预计 4 月 1 日更新完成;
  3. 购买用户可享有小册永久的阅读权限;
  4. 购买用户可进入小册微信群,与作者互动;
  5. 掘金小册为虚拟内容服务,一经购买成功概不退款;
  6. 掘金小册版权归北京北比信息技术有限公司所有,任何机构、媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发布/发表,违者将依法追究责任;
  7. 在掘金小册阅读过程中,如有任何问题,请邮件联系 xiaoce@xitu.io
推荐小册
京ICP备18012699号-3 ©版权所有 北京北比信息技术有限公司

公司地址:北京市海淀区信息路甲28号13层B座13B-5 | 公司座机:010-83434395