我是做JAVA开发的,可以说数据库中间件用的还是比较多的,下面结合自己的经历讲下!
何谓中间件?不同服务器之间负责数据传递,服务控制或者性能监控的组件!经常使用的中间件有消息中间件(redis,kafka等),数据库中间件(mycat,druid等),应用服务器中间件,PRC中间件等等!中间件最大的特点是解耦服务,让不同的服务之间可以采用某种规范进行交互!
回到本文的关注点,数据库中间件怎么分类?
①数据库与应用服务器之间的中间件(性能监控,连接池优化):典型的有druid连接池,不同于c3p0等传统连接池,druid组件会对执行过的sql进行统计,并记录并发量,sql执行的耗时情况等,对于数据库性能监控提供十分方便的界面化显示!不仅如此,druid针对oracle的ps cache内存进行了优化!
②数据库与数据库或者其他的服务(缓存等)的同步中间件:多用于数据库之间的,或者数据库与缓存等存储系统之间的数据同步,比如Canal,Otter等!Canal是一个增量同步工具,根据数据库执行sql的日志文件,获取增量数据进行同步到缓存或者数据库中!
③数据库分库分表中间件:分布式下数据量记录增多,对于读写数据有大量的要求,所以分库分表对于大型系统是必不可缺的数据库技术,使用mycat,sharding-jdbc等进行数据库的分库分表是一个很好的选择!
分库分表一般来说有多种策略,水平分表通常使用时间,状态等字段进行,也可使用hash某个字段等进行,垂直分库分表通常用于拆分常用和不常用的字段或者大字段到不同的库中,提高对常用字段的查询效率!
分库分表通常需要关注的问题有全局唯一ID的产生,连接查询,统计等问题!
以上就是我的工作中接触到的数据库中间件知识,说的不好,有钱的捧个钱场,没钱的关注我,更多的技术分享,敬请关注。。
联系客服