我今天应该谈论MyCat,但我发现还有另一个值得讨论的概念,那就是Java中间件!
因为MyCat是一个分布式数据库中间件,要了解MyCat,你必须知道中间件是什么!
去年,宋戈特别在外部培训中谈到了中间件。我想直接与你分享这个讲座,但我没有找到,所以我再次把它打倒了。
中间件简介
说到中间件,很多人首先想到的是消息中间件,那么除了消息中间件之外呢?事实上,在我们的日常开发中,有太多的中间件。让我们看一下维基百科上的一节:
中间件(英文:Middleware),也是翻译中间件,中介层,是提供系统软件和应用软件之间连接的软件,以便于软件各个组件之间的通信。它广泛应用于现代信息技术应用框架,如Web服务和面向服务的体系结构。比如数据库,Apache Tomcat,IBM的WebSphere,BEA的WebLogic应用服务器,Oriental Tong的Tong系列中间件,以及金蝶都是中间件。
看到这个,你可能会感到惊讶,我们在不知不觉中使用了这么多中间件!即使是Tomcat也是一个中间件!
顾名思义,中间件是连接两个软件的东西。它是软件之间的胶水,胶水般的东西。它位于操作系统和我们的应用程序之间,允许开发人员轻松处理通信,输入和输出,使开发人员能够专注于自己的业务逻辑开发。
也就是说,似乎Tomcat真的有类似中间件的东西!在我们的操作系统和应用程序之间!
中间件分类
有很多中间件。早在1998年,IDC公司就将中间件分为六类。 2005年之前在中国出版的许多中间件相关书籍分为六类,即:
终端仿真/屏幕转换
数据访问中间件(UDA)
远程过程调用中间件(RPC)
消息中间件(MOM)
事务中间件(TPM)
对象中间件
除了新闻中间件和交易中间件,你可能听说过它。其他中间件估计很少听到。这是因为时代在变化,一些中间件正在慢慢消除(例如终端仿真/屏幕转换中间件),有些则慢慢融入其他框架(如远程过程调用中间件)。数据库中间件
什么是数据库中间件?
在上一篇文章中,我们提到如果数据量相对较大,我们需要将数据划分为子表。数据完成后,数据库中已有一个数据库。现在有多个数据库,那么我们的项目结构可能是这样的:
我们需要在Java代码中配置复杂的多数据源,配置读写分离以及在查询数据时预处理数据。例如,必须对从多个DB加载的数据进行排序,过滤等。通过这种方式,我们的Java代码与许多与业务无关的方法混合在一起,并且随之而来的大多数代码仍然是重复的。
为了使开发人员能够将更多的精力投入到业务中,我们引入了数据库中间件,如下所示:
什么? Tomcat - 甚至被认为是中间件?
这张图非常生动,以说明什么是中间件!两个应用程序之间的事情。随着MyCat中间件的引入,我们的应用程序只需要连接到MyCat,然后MyCat将运行各种不同的DB。每个分布式数据库的排序,结果收集和数据过滤都在MyCat中完成。通过这种方式,我们的Java应用程序可以专注于业务的开发,繁琐和重复的操作将移交给MyCat。
如果没有数据库中间件,我们的Java应用程序将直接面对碎片集群,数据源切换,事务处理,数据聚合以及许多其他问题,因此它将成为一个以业务为中心的Java应用程序,而且成本很高。在分片后处理问题的工作,大部分代码都重复了!
使用数据库中间件,应用程序只需要专注于业务处理。大量的通用数据聚合,事务和数据源切换由中间件处理。中间件的性能和处理能力将直接决定应用程序的读写性能。在项目中选择一个好的数据库中间件至关重要。