关于 MyCat 的铺垫文章已经写了两篇了:html
今天是最后一次铺垫,后面就能够迎接大 Boss 了!数据库
<!--more-->后端
原本今天就该讲 MyCat 了,可是我发现还有一个概念值得和你们聊一下,那就是 Java 中间件!服务器
由于 MyCat 是一个分布式数据库中间件,要理解 MyCat ,那你就得先知道到底什么是中间件!微信
松哥去年在一次外训中专门讲过中间件,原本想直接和你们分享一下讲稿,可是没找到,因此又动手敲了下。框架
提及中间件,不少人首先想到的就是消息中间件,那么除了消息中间件呢?其实咱们平常开发中,接触到的中间件太多了,咱们来看维基百科上的一段介绍:前后端分离
中间件(英语:Middleware),又译中间件、中介层,是提供系统软件和应用软件之间链接的软件,以便于软件各部件之间的沟通。在现代信息技术应用框架如 Web 服务、面向服务的体系结构等项目中应用比较普遍。如数据库、Apache 的 Tomcat ,IBM 公司的 WebSphere ,BEA 公司的 WebLogic 应用服务器,东方通公司的 Tong 系列中间件,以及 Kingdee 公司的等都属于中间件。分布式
看到这个,你可能会大吃一惊,原来咱们不知不觉不知不觉中已经用过这么多中间件了!甚至连 Tomcat 也是一个中间件!微服务
中间件,顾名思义,就是链接在两个软件之间的东西,是软件之间的一个粘合剂,一个胶水同样的东西。它位于操做系统和咱们的应用程序之间,可让开发者方便地处理通讯、输入和输出,使开发者可以专一于本身的业务逻辑开发。性能
这么一说,好像 Tomcat 确实还有点像中间件!位于咱们的操做系统和应用程序之间!
中间件有不少,早在 1998 年 IDC 公司就将中间件分红了 6 大类,国内 2005 年以前出版的中间件相关的书上,不少都是按照这 6 大类来分的,分别是:
这里边除了消息中间件和交易中间件你们可能据说过以外,其余的中间件估计都不多据说,这是由于时代在变化,有的中间件慢慢被淘汰了(例如 终端仿真/屏幕转换 中间件),有的则慢慢合并到其余框架中去了(例如 远程过程调用中间件)。
那么什么是数据库中间件呢?
前面文章咱们提到,若是数据量比较大的话,咱们须要对数据进行分库分表,分完以后,本来存在一个数据库中的数据,如今就存在多个数据库中了,那么咱们的项目结构可能就是下面这个样子了:
咱们要在 Java 代码中配置复杂的多数据源,配置读写分离,数据查询的时候还要进行数据的预处理,例如从多个 DB 上加载到的数据要先进行排序、过滤等等操做,这样咱们的 Java 代码就参杂了不少业务无关的方法,并且这些参杂进来的代码,大多数都仍是重复的。
为了使开发人员,将更多精力放到业务上,咱们引入数据库中间件,像下面这样:
这张图很是形象的说明了什么是中间件!一个介于两个应用程序之间的东西。引入 MyCat 中间件以后,咱们的应用程序将只须要链接 MyCat 就好了,再由 MyCat 去操做各类不一样的 DB,各个分布式数据库的排序、结果集合并、数据过滤等操做都在 MyCat 中完成,这样咱们的 Java 应用又能够专一于业务的开发了,那些繁琐的重复的操做,又交给 MyCat 去完成。
若是没有数据库中间件,那么咱们的 Java 应用程序将直接面对分片集群,数据源切换、事务处理、数据聚合等等众多问题,这样本来该是专一于业务的 Java 应用程序,将会花大量的工做来处理分片后的问题,并且大部分的代码又都是重复的!
有了数据库中间件,应用只须要集中与业务处理,大量的通用的数据聚合,事务,数据源切换都由中间件来处理,中间件的性能与处理能力将直接决定应用的读写性能,因此在项目中选择一款好的数据库中间件相当重要。
好了,本文就简单介绍下中间件的基本概念,下文就能够正式开始聊分布式数据库中间件了!
若是小伙伴以为松哥本身写的技术文章还过得去的话,欢迎积极转发,松哥每隔 15 天会根据微信后台数据,选一个分享转发最多的一位小伙伴,送一本松哥本身的签名书或者 Java 领域的经典书籍,欢迎你们积极参与,下一次开奖时间在下周。
参考资料:
关注公众号【江南一点雨】,专一于 Spring Boot+微服务以及先后端分离等全栈技术,按期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货!
原文出处:https://www.cnblogs.com/lenve/p/11105604.html