研读:

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,有一个重要提升。

MyCAT 在 Cobar 的基础上,完成了彻底的 NIO 通讯,并且合并了两个线程池的更多相关文章

  1. 高可用架构篇--MyCat在MySQL主从复制基础上实现读写分离

    实战操作可参考:http://www.roncoo.com/course/view/3117ffd4c74b4a51a998f9276740dcfb 一.环境 操作系统:CentOS-6.6-x86_ ...

  2. 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第5节 线程池_1_线程池的概念和原理

    线程的底层原理 集合有很多种,线程池的集合用LinkedList最好

  3. Dubbo入门到精通学习笔记(二十):MyCat在MySQL主从复制的基础上实现读写分离、MyCat 集群部署(HAProxy + MyCat)、MyCat 高可用负载均衡集群Keepalived

    文章目录 MyCat在MySQL主从复制的基础上实现读写分离 一.环境 二.依赖课程 三.MyCat 介绍 ( MyCat 官网:http://mycat.org.cn/ ) 四.MyCat 的安装 ...

  4. Java线程池基础

    目录: 一.线程池概述 二.线程池参数 三.线程池的执行过程 四.线程池的主要实现 五.线程池的使用 六.线程池的正确关闭方式 七.线程池参数调优 一.线程池概述 1.线程池类 目前线程池类一般有两个 ...

  5. Java并发:搞定线程池(上)

    原文地址:https://www.nowcoder.com/discuss/152050?type=0&order=0&pos=6&page=0 本文是在原文的基础+理解,想要 ...

  6. [Big Data - Codis, Mycat(cobar)] 企业互联网+转型实战:如何进行PB级别数据的架构变迁

    随着DT时代的来临,数据对于企业经营决策的价值日益凸显,而企业在进行互联网+转型的过程中,如何让数据架构平滑迁移到大数据平台,对于传统业务的转型升级至关重要.企业IT部门该如何进行PB级别大数据平台的 ...

  7. .net在当前日期的基础上加一天

    比如今天是:2015-11-10 18:57:01,在这个基础上加一天,那么就是2015-11-11 18:57:01,代码如下: DateTime now_dt = DateTime.Now; ). ...

  8. 【JavaEE】SSH+Spring Security基础上配置AOP+log4j

    Spring Oauth2大多数情况下还是用不到的,主要使用的还是Spring+SpringMVC+Hibernate,有时候加上SpringSecurity,因此,本文及以后的文章的example中 ...

  9. 在cocos code ide的基础上构建自己的lua开发调试环境

    对于一种语言,其所谓开发调试环境, 大体有以下两方面的内容: 1.开发, 即代码编写, 主要是代码提示.补齐, 更高级一点的如变量名颜色等. 2.调试, 主要是运行状态下断点.查看变量.堆栈等. 现在 ...

随机推荐

  1. SNF快速开发平台MVC-单据状态水印

    1.   单据状态水印 1.1.      效果展示 1.2.      调用说明 与easyui的调用方式类似,可以在js中调用,也可以在html中写好所有属性,直接渲染. 如下,在html中写好所 ...

  2. Windows Media Player 的文件格式支持情况

    唔,官方文档:https://support.microsoft.com/zh-cn/help/316992/file-types-supported-by-windows-media-player ...

  3. Fluent动网格【8】:网格节点运动案例

    Fluent动网格中的DEFINE_GRID_MOTION宏允许用户定义网格节点的运动.本案例演示采用DEFINE_GRID_MOTION宏指定边界节点的运动. 案例动网格效果如图所示. 案例描述 本 ...

  4. python调用nmap探测局域网设备

    平台:linux 描述:利用os.popen()函数调用系统命令nmap进行扫描,并用grep命令对扫描结果关键内容进行提取 代码 #!/usr/bin/env pthon #--*--coding= ...

  5. SQL group BY 合并字段用逗号隔开

    1.关联多表后 根据某个字段作为分组条件,其他合并到新列中,效果如下图 --------> 代码: ),KOrderID) , , '') from VOrder2 tb group by KU ...

  6. Git -- 使用GitHub

    我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的.其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人 ...

  7. 上网爱快?EasyRadius FOR 爱快V2接口测试版正式推出,欢迎广大爱迷们测试噢

    …… …… 有些人问:为什么上面要打省略号?那些因为此处省略无数字,但是我还是要和大伙们谈谈EasyRadius支持爱快的故事 早在2013年的时候,我们内部就有发布爱快接口,但是由于当时V1的爱快, ...

  8. laravel中artisan的用法

    如:

  9. Android异步处理系列文章四篇之二 使用AsyncTask异步更新UI界面

    Android异步处理一:使用Thread+Handler实现非UI线程更新UI界面Android异步处理二:使用AsyncTask异步更新UI界面Android异步处理三:Handler+Loope ...

  10. [Bayes] Parameter estimation by Sampling

    虽然openBugs效果不错,但原理是什么呢?需要感性认识,才能得其精髓. Recall [Bayes] prod: M-H: Independence Sampler firstly. 采样法 Re ...