# 《SpringBoot 中间件设计和开发》 专栏介绍文档 ![](https://codechina.csdn.net/MiddlewareDesign/doc/-/raw/master/assert/head.png) --- 1. **专栏地址**:[https://juejin.cn/book/6940996508632219689](https://juejin.cn/book/6940996508632219689) 2. **源码授权**:关注公众号:[bugstack虫洞栈](https://bugstack.cn/assets/images/qrcode.png),回复:`中间件源码授权` *回复后你会拿到一个特定的链接,点开登录即可申请为加入组织,我会给购买小册的申请用户审批授权。* 授权后样式如下,你的页面会有如下提示,接下来等等系统审核即可 `3~5` 分钟 | 授权样式 | | ------ | | ![](https://codechina.csdn.net/MiddlewareDesign/doc/-/raw/master/assert/check.png) | 授权后打开链接,就可以看到专栏源码了:[https://codechina.csdn.net/MiddlewareDesign](https://codechina.csdn.net/MiddlewareDesign) 3. **重点说明**:仅对购买 [`专栏付费`](https://juejin.cn/book/6940996508632219689) 并已经在公众号:[bugstack虫洞栈](https://bugstack.cn/assets/images/qrcode.png) 回复过 `中间件源码授权` 的用户进行审核授权。 4. **授权失败**:如果你的申请授权迟迟没有得到审批,请联系小傅哥:fustack,加上微信直接发给他,你的`codechina`注册邮箱或者个人ID,以及掘金用户购买截图或者掘金用户昵称。小傅哥会立马给你解决! 5. **分支合并**:在不影响专栏课程与main主分支代码的学习下,*为了满足小伙伴提交代码的请求*,在每一个仓库上新增加`dev`分支。好嘞,可以show出你的改进、优化、补充代码让更多小伙伴看到!例如下面这样: | 提交案例 | | ------ | | ![](https://codechina.csdn.net/MiddlewareDesign/doc/-/raw/master/assert/%E5%88%86%E6%94%AF%E5%90%88%E5%B9%B6.png) | 6. **代码仓库**:关于代码仓库的提交需要用到[用户ID](https://i.csdn.net/#/user-center/profile)和密码,用户ID在个人中心里,密码是个人注册csdn的密码。 ## 作者介绍 小傅哥,一线互联网 `java` 工程师、架构师,开发过交易&营销、写过运营&活动、设计过中间件也倒腾过中继器、IO板卡。不只是写Java语言,也搞过C#、PHP,是一个技术活跃的折腾者。 - 我的博客:[bugstack.cn](https://bugstack.cn/) - 我的Github:[`https://github.com/fuzhengwei`](https://github.com/fuzhengwei) ## 小册内容 **全小册19个章节,包括16个中间件的设计和开发,包括测试案例共30个代码库提供给读者学习使用。小册实现的中间件场景涵盖:技术框架、数据服务、数据组件、分布式技术、服务治理、字节码、IDEA插件七个方面,贯穿整个互联网系统架构中常用的核心内容。非常值得了解、学习、实践到掌握。** ![图 2-1](https://bugstack.cn/assets/images/middleware/2-1.png) - **技术框架**:包括 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 | ![](https://bugstack.cn/assets/images/middleware/3-0.png) | 服务治理,统一白名单控制 | 解决上线验证风险,白名单特定用户开量验证 | | 2 | ![](https://bugstack.cn/assets/images/middleware/4-0.png) | 服务治理,超时熔断 | 包装超时调用熔断,降低业务系统接入成本 | | 3 | ![](https://bugstack.cn/assets/images/middleware/5-0.png) | 服务治理,调用限流 | 包装接口调用限流,降低业务系统接入成本 | | 4 | ![](https://bugstack.cn/assets/images/middleware/6-0.png) | 服务治理,自定义拦截方法 | 不破坏现有方法,增强方法服务能力 | | 5 | ![](https://bugstack.cn/assets/images/middleware/7-0.png) | ORM 框架实现 | 学习 ORM 框架核心设计,实现简单版 MyBatis | | 6 | ![](https://bugstack.cn/assets/images/middleware/8-0.png) | ORM 框架与 Spring 集合 | 熟悉 Bean 扫描、代理、注册、管理等,以及对 ORM 的包装 | | 7 | ![](https://bugstack.cn/assets/images/middleware/9-0.png) | 结合 SpringBoot 开发 ORM Starter | ORM、Spring 与 SpringBoot 结合,自动化记载初始配置,开发 Starter | | 8 | ![](https://bugstack.cn/assets/images/middleware/10-0.png) | ES-JDBC 查询引擎 | 了解 Elasticsearch JDBC 组件的源码实现,x-pack-jdbc | | 9 | ![](https://bugstack.cn/assets/images/middleware/11-0.png) | ES SpringBoot Starter 服务框架 | 运用 ORM 技术迁移,开发 ES 类的 ORM 框架,解决查询映射复杂性,做面向对象开发包装 | | 10 | ![](https://bugstack.cn/assets/images/middleware/12-0.png) | RPC 框架实现 | 学习 RPC 框架的设计和开发,了解通信原理和实现 | | 11 | ![](https://bugstack.cn/assets/images/middleware/13-0.png) | 数据库路由组件 | 把散列算法、切面处理、数据源切换、自定义配置结合在一起实践,开发路由组件 | | 12 | ![](https://bugstack.cn/assets/images/middleware/14-0.png) | Redis 简化使用封装 | 处理 Redis 的二次包装,简化为接口代理方式使用,降低应用成本,以及增加升级容易度 | | 13 | ![](https://bugstack.cn/assets/images/middleware/15-0.png) | 分布式任务调度 | 在注册中、任务、控制台,多方内容组合下开发分布式任务调度 | | 14 | ![](https://bugstack.cn/assets/images/middleware/16-0.png) | 非入侵监控设计,ASM 字节码插桩 | 了解字节码插桩技术,学习 Javaagent 处理的非入侵监控方式 | | 15 | ![](https://bugstack.cn/assets/images/middleware/17-0.png) | 非入侵监控设计,JVMTI 定位代码 | 了解 JVMTI 的技术能力,开发 C++ dll 组件,增强监控能力 | | 16 | ![](https://bugstack.cn/assets/images/middleware/18-0.png) | IDEA插件与字节码插桩结合 | 结合 IDEA 插件开发与字节码增强技术,采集代码研发运行过程中的执行信息,分析和提升交付质量 | --- **小册16个中间件实现,包括测试工程等共计30个代码库**,每一章节都会对应有一个中间件的设计和实现,为了便于读者快速有效的学习小册中的技术内容,这里介绍下小册中章节的内容结构,涵盖以下5方面内容: 1. **开篇引导**,在技术、经验、成长等各方面汇总的内容,帮助大家扩宽知识面和增加成长经验。 2. **需求背景**,讲述此中间件会因为什么场景、什么需求下用于解决什么痛点而提出的。 3. **方案设计**,针对需求背景的痛点问题,做中间件架构方案设计,包括设计图稿和实现描述。 4. **技术实现**,主要是对方案设计的具体实现落地,这个过程会包括完整的实现源码以及所有核心代码的讲解。保证大家在学习的过程中也能完成中间件的设计和开发。 5. **测试验证**,每一个中间件的实现都有一个对应的测试工程,例如:`whitelist-spring-boot-starter` 与 `whitelist-spring-boot-starter-test`。通过测试工程对中间件实现预期的验证,可以让大家更加容易的理解一个需求的背景、设计、实现到交付验证的过程。 6. **文末总结**,是对每一篇文章的概要汇总,也是给读者在文末针对此篇文章的学习的一个帮助提醒,也希望你学到的信息要远比站在作者视角总结的内容还要完善。 ## 你会学到什么? - Spring 对配置文件的加载、Bean 扫描、定义、注册等 - Spring Boot 关于 Starter 开发的常用技术手段和技巧 - ORM、RPC、数据库路由、服务治理、系统监控、IDEA插件等各类场景下的中间件设计 - 类的代理、反射调用、切面处理、字节码插桩、扰动函数增强散列以及JVMTI等核心技术的实际运用 - 30个代码库让你对中间件的设计、实现、验证,有清晰的认识 ## 适宜人群 - 具备 Java 编程基础的研发人员,略懂部分框架源码,经常使用各类技术组件 - 需要提升个人的核心技术能力 - 对中间件开发感兴趣,但不知道从哪入手 - 有在 SpringBoot 开发 Starter 的技术需求 ## 📚小册购买优惠 [《SpringBoot 中间件设计和开发》](https://juejin.cn/book/6940996508632219689)掘金专栏小册首发`8折`,涵盖19章和一套章节内容对应的完整代码库,购买后可以按照小册第二节说明进行使用。 ### 1. 可获得内容包括 1. [《SpringBoot 中间件设计和开发》](https://juejin.cn/book/6940996508632219689) 专栏小册完整阅读权限 2. 30组对应的代码库一套,可以随时交流讨论提交 issues 3. 可以加入专栏小册交流群,添加我的微信:fustack 备注:`中间件加群` ### 2. 购买方式 1. 点击或复制链接:[https://juejin.cn/book/6940996508632219689](https://juejin.cn/book/6940996508632219689) 2. 公众号读者,阅读原文直接进入购买链接 3. 添加专栏作者`小傅哥`微信:`fustack`,备注购买小册 ## 🎉收尾感谢 谢谢掘金平台和运营`优弧`对小册校对审核到上架的帮助,谢谢`粉丝伙伴`对小傅哥技术内容的认可和期待,也谢谢家人在过年和周末期间给我提供的时间`只干饭不洗完😄哈哈哈哈,专心码文章`。 **好嘛**,就是在大家的帮助、支持、认可、鼓励中,你希望看到的`中间件设计和开发`小册和大家见面了!这是一个程序员成长阶段突破技术瓶颈和提升技术认知,都应该了解和学习的内容,加油!*记住在专栏学习过程中遇到任何问题,请联系这个优秀的男人:小傅哥,微信:fustack*