今天本该说说MyCat,但是我发现还有一个概念值得一说,那就是Java中间件!因为MyCat是一个分布式数据库中间件,要了解MyCat,首先要知道中间件到底是什么!宋师兄去年在一次外训中专门讲过中间件。本来想直接把讲稿分享给大家,但是找不到,所以又打了一遍。中间件简介说起中间件,很多人首先想到的是消息中间件,那么消息中间件呢?其实在我们日常的开发中,接触到的中间件太多了。我们看一下维基百科上的介绍:中间件(英文:Middleware),又译为中间件、中介层,是提供系统软件和应用软件之间连接的软件,以方便软件组件之间的通信。广泛应用于现代信息技术应用框架如Web服务、面向服务的体系结构等项目中。比如数据库,Apache的Tomcat,IBM的WebSphere,BEA的WebLogic应用服务器,东方通的Tong系列中间件,金蝶的都是中间件。看到这里,你可能会惊讶我们竟然不知不觉用了这么多中间件!甚至Tomcat也是一个中间件!中间件,顾名思义,就是连接两个软件的东西,是软件之间的胶水,一种类似胶水的东西。它位于操作系统和我们的应用程序之间,让开发者可以轻松处理通信、输入和输出,使开发者可以专注于自己的业务逻辑开发。这样看来,Tomcat确实有点像中间件!它位于我们的操作系统和应用程序之间!中间件有很多种分类中间件。早在1998年,IDC就将中间件分为6类。2009年以前出版的很多中间件相关书籍都是按照这六大类来分类的,即:终端仿真/屏幕转换数据访问中间件(UDA)远程过程调用中间件(RPC)消息中间件(MOM)事务中间件(TPM)对象中间件,除了消息中间件和事务中间件,你可能还听说过其他的中间件。这是因为时代在变,有的软件慢慢被淘汰(比如终端仿真/屏幕转换中间件),有的慢慢融入其他框架(比如远程过程调用中间件)。数据库中间件那么什么是数据库中间件呢?我们在上一篇文章中提到,如果数据量比较大,我们需要将数据分库分表。划分之后,原来存在于一个数据库中的数据,现在存在于多个数据库中,那么我们的项目结构可能是这样的:我们需要在Java代码中配置复杂的多数据源,配置读写分离,并执行数据查询数据时的预处理,比如从多个DB加载的数据,需要进行排序、过滤等,使得我们的Java代码混合了很多业务无关的方法,而这些混合的代码大部分还是重复的。为了让开发者更专注于业务,我们引入数据库中间件,如下:这张图很形象的说明了什么是中间件!两个应用程序之间的事情。引入MyCat中间件后,我们的应用程序只需要连接MyCat,MyCat就会操作各种DB。各个分布式数据库的排序、结果集合并、数据过滤等操作都在MyCat中完成。这样我们的Java应用就可以重新专注于业务开发,那些繁琐重复的操作都交给MyCat来完成。如果没有数据库中间件,那么我们的Java应用将直接面临分片集群、数据源切换、事务处理、数据聚合等诸多问题,因此本应专注于业务的Java应用将耗费大量的工作分片后处理问题,大部分代码都是重复的!有了数据库中间件,应用程序只需要专注于业务处理,大量的通用数据聚合、事务、数据源切换都由中间件处理,中间件的性能和处理能力将直接决定读写应用程序的写入性能,所以在项目中选择一个好的数据库中间件非常重要。结束语好了,本文简单介绍了中间件的基本概念,接下来我们就可以正式开始说分布式数据库中间件了!
