研读:

1、http://www.mycat.io 《Mycat权威指南》 第 2 章 Mycat 前世今生;

浏览:

深度认识 Sharding-JDBC:做最轻量级的数据库中间层 - 编辑部的故事的个人空间 - 开源中国 https://my.oschina.net/editorial-story/blog/888650

小结:

1、MyCAT 在 Cobar 的基础上,完成了彻底的 NIO 通讯,并且合并了两个线程池

2、MyCAT 解决此问题的方式则更加人性化,首先将原先数组模式的固定长度的队列改为链表模式

3、

Sharding-JDBC只是一个sql翻译器+sql分发+结果聚合;

其功能点是mycat的功能点的真子集;前者不参与连接池管理,而mycat实现了整个mysql级别的连接池共享,而不是Cobar实现的Database级别,另外mycat实现了“SQL->FrontConnection->Cobar->MySQLChanel->MySQL”前后的NIO。

Sharding-JDBC mycat

2.1.1.4 第四个秘密:只实现了一半的 NIO

NIO 技术用作 JAVA 服务器编程的技术标准,已经是不容置疑的业界常规做法,若一个 Java 程序员,没听

说过 NIO,都不好意思说自己是 Java 人。所以 Cobar 采用 NIO 技术并不意外,但意外的是,只用了一半。

Cobar 本质上是一个“数据库路由器”,客户端连接到 Cobar,发生 SQL 语句,Cobar 再将 SQL 语句通过

后端与 MySQL 的通讯接口 Socket 发出去,然后将结果返回给客户端的 Socket 中。下面给出了 SQL 执行过程简

要逻辑:

SQL->FrontConnection->Cobar->MySQLChanel->MySQL

FrontConnection 实现了 NIO 通讯,但 MySQLChanel 则是同步的 IO 通讯,原因很简单,指令比较复

杂,NIO 实现有难度,容易有 BUG。后来最新版本 Cobar 尝试了将后端也 NIO 化,大概实现了 80%的样子,但

没有完成,也存在缺陷。

由于前端 NIO,后端 BIO,于是另一个有趣的设计产生了——两个线程池,前端 NIO 部分一个线程池,后

端 BIO 部分一个线程池。各自相互不干扰,但这个设计的结果,导致了线程的浪费,也对性能调优带来很大的困

难。

由于后端是 BIO,所以,也是 Cobar 吞吐量无法太高、另外也是其假死的根源。

MyCAT 在 Cobar 的基础上,完成了彻底的 NIO 通讯,并且合并了两个线程池,这是很大一个提升。从 1.1

版本开始,MyCAT 则彻底用了 JDK7 的 AIO,有一个重要提升。

mysql连接池为何不用nio_MyCAT 在 Cobar 的基础上,完成了彻底的 NIO 通讯,并且合并了两个线程池...相关推荐

  1. Android AsyncTask两种线程池分析和总结

    转自:http://bbs.51cto.com/thread-1114378-1-1.html Android AsyncTask两种线程池分析和总结 (一)    前言 在android Async ...

  2. Android之AsyncTask两种线程池分析和总结

    Android AsyncTask两种线程池分析和总结 (一)    前言 在android AsyncTask里面有两种线程池供我们调用 1.    THREAD_POOL_EXECUTOR, 异步 ...

  3. sinaapp mysql连接_手把手教你在新浪云上免费部署自己的网站--连接数据库

    看完之后,默认你知道怎么将代码上传到新浪云SAE,并且能够成功运行,连接数据库之前,你必须先创建有一个应用. 现在我创建一个名称为sampleone的应用,如下图 点击左侧的代码管理,选在右侧创建一个 ...

  4. 全面解读Java线程池的工作原理

    目录 一.为什么引入线程池技术? 二.Executor框架 2.1 Runnable.Callable与Future接口 2.2 Executor接口 2.2.1 Executor 2.2.2 Exe ...

  5. 5.概念(maven,ssm,springMvc,spring,自定义注解,二级缓存,范式,事务,mysql,线程池,map,hashmap,redis,饿汉,懒汉)

    maven是啥: 1.Maven是一个项目管理和综合工具.Maven提供了开发人员构建一个完整的生命周期框架. 创建-导入jar报–编写配置文件-实现业务功能-测试-发布上线. 2.开发团队可以自动完 ...

  6. 易语言mysql线程池数量_线程池最佳线程数量到底要如何配置?

    前言 对应从事后端开发的同学来说,线程是必须要使用了,因为使用它可以提升系统的性能.但是,创建线程和销毁线程都是比较耗时的操作,频繁的创建和销毁线程会浪费很多CPU的资源.此外,如果每个任务都创建一个 ...

  7. Java线程池实现原理及其在美团业务中的实践

    来自:美团技术团队 随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池ThreadPoolExecuto ...

  8. 线程池在美团的最佳实践

    随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员 ...

  9. 【有料】Java线程池实现原理及其在美团业务中的实践

    随着计算机行业的飞速发展,摩尔定律逐渐失效,多核CPU成为主流.使用多线程并行计算逐渐成为开发人员提升服务器性能的基本武器.J.U.C提供的线程池:ThreadPoolExecutor类,帮助开发人员 ...

最新文章

  1. “抗疫”的第二战线:有人整晚睡不着,有人远程提供紧急心理包扎
  2. Python3 - 时间处理与定时任务
  3. with 关键字实现递归查询
  4. 来看各种数值的反转吧(洛谷P1553题题解,Java语言描述)
  5. mysql统计姓名为小明_Mysql 统计查询相同字段只统计一条
  6. CTS(14)---Android O CTS 测试之Media相关测试小结(二)
  7. 文字旋转_如何制作抖音文字旋转视频?推荐这款超火的抖音文字动画制作神器...
  8. BZOJ4602: [Sdoi2016]齿轮(并查集 启发式合并)
  9. r语言 rgl 强制过程中_R语言中的方差分析方法汇总
  10. 华为数通笔记-VRF
  11. (2022.9)raspberry 4安装HP 1020 plus打印机,利用树莓派4制作无线打印服务器
  12. app架构师实践指南pdf,分享一些行业经验,看完这一篇你就懂了
  13. MATLAB绘制平方函数,MATLAB绘制由函数x^2/4+y^2/9+z^2/16=1形成的立体图,
  14. Win7 VirtualBox运行出现“0x00000000指令引用的0x00000000内存。该内存不能为written” ,错误解决
  15. 市场调研报告-全球与中国商业门窗五金市场现状及未来发展趋势
  16. win10服务器系统要设置要密码是什么,云服务器win10系统初始密码
  17. arduino学习笔记十四--Arduino 环境光线传感器实验
  18. ppt流程图字体太小_【PPT】几种处理字体的小方法,让PPT中的字体更好看
  19. Bootstrap(三) 网格系统
  20. 关于性能测试的这点事,值得收藏~

热门文章

  1. 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 2.)(python/c/c++版)(笔记)
  2. python计算警告:overflow encountered in exp(指数函数溢出)(sigmoid函数的numpy数组计算方式)
  3. python Intel Real Sense D435 异常检测与抛出(获取/打印异常详细信息 traceback.print_exc())
  4. python Matplotlib.pyplot 如何绘制三维折线图, 散点图, 线框图, 表面图, 柱状图, 箭头图, 2D转3D图, 文本图, 3D拼图, 网状图, 直方图, 角面片图, 条状图?
  5. linux——文件权限的更改与管理
  6. 常见加密工具类Base64、DES、AES、RSA、MD5汇总
  7. shiro登录认证过程讲解(转)
  8. javax.websocket.DeploymentException: The path [webScoketServiceBaidu/{appID}] is not valid.
  9. 你知道从浏览器发送请求给SpringBoot后端时,是如何准确找到哪个接口的?(下篇)学废了吗?
  10. 阿里云服务器中毒‘Kirito666’经历