自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hashcon

曾任职于顺丰,华为,网易等公司,从Java小白,成长为资深开发与项目组首席架构师。喜欢源码与开源,曾贡献 MyCat1.6 与 JFRUnit 核心源码,贡献过Spring Cloud,Apache RocketMQ,Apache Bookeeper,Du

  • 博客(14)
  • 收藏
  • 关注

原创 MyCat - 源代码篇(7)

数据库路由中间件MyCat - 源代码篇(7)3. 连接模块3.4 FrontendConnection前端连接 构造方法:public FrontendConnection(NetworkChannel channel) throws IOException { super(channel); InetSocketAddress localAddr = (Inet

2016-02-27 08:48:23 11705 3

原创 MyCat - 源代码篇(6)

MyCat - 源代码篇(6)3. 连接模块3.3 AbstractConnection:3.3.2 NIOHandlerNIOHandler实际上就是对于业务处理方法的封装,对于不同的连接有不同的处理方法,也就是不同的NIOHandlerpublic interface NIOHandler { void handle(byte[] data);}它的实现以及子类会在之后的对应的处理模块

2016-02-24 19:22:23 7395 3

原创 MyCat - 使用篇(6)

数据库路由中间件MyCat - 使用篇(5)配置MyCat-eye接下来在开始使用MyCat之前,我们先把监控平台部署好。下载MyCat-eye项目,mvn打包。之后得到类似于Mycat-web-1.0-SNAPSHOT-20160215151602-linux.tar.gz这个文件,部署到和zookeeper同一台服务器上。 如果要部署到其他机器,需要修改mycat-web\mycat-web\

2016-02-24 16:32:49 17604 16

原创 MyCat - 使用篇(5)

数据库路由中间件MyCat - 使用篇(5)配置MyCat4. 配置schema.xmlschema.xml里面管理着MyCat的逻辑库、表,每张表使用的分片规则、分布在哪个DataNode以及DataSource上。 之前的例子: <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd">

2016-02-24 09:39:20 12354 6

原创 MyCat - 使用篇(3)

数据库路由中间件MyCat - 使用篇(3)全局序列号数据切分后,原有的关系数据库中的主键约束在分布式条件下将无法使用,因此需要引入外部机制保证数据唯一性标识,这种保证全局性的数据唯一标识的机制就是全局序列号(sequence)。1. 本地文件方式classpath下有一个sequence_conf.properties文件:GLOBAL_SEQ.HISIDS=GLOBAL_SEQ.MINID=1

2016-02-23 10:08:29 71141 9

原创 MyCat - 使用篇(2)

数据库路由中间件MyCat - 使用篇(2)基本概念3. 分片3.1 分片节点(dataNode)表被水平切分后,每个分片表所在的数据库就是一个分片节点。一个分片节点对应一个数据库(mysql数据库)3.2 节点主机(dataHost)分片节点究竟被放在那个主机上。对应mysql里的mysql实例:一台主机可以部署多个mysql实例,一个mysql实例可以有多个数据库。为了规避单节点主机并发数限制,

2016-02-23 09:30:55 13051 10

原创 MyCat - 使用篇(1)

数据库路由中间件MyCat - 使用篇(1)基本概念直接介绍概念太枯燥了,还是拿个和背景篇相似的例子介绍 业务场景:客户完成下单,快递员接受并更新运单状态,客户可以随时查看运单状态的任务。一票快递可能有多个子母件。同时,我们需要标记每个运单的状态,运单状态的解释和含义保存在运单状态字典表中。 因此,我们需要建立如下表: 我们现在按照业务将数据库垂直拆分成运单库(单表2000tps,6000

2016-02-22 21:09:00 30706 11

原创 MyCat - 源代码篇(5)

数据库路由中间件MyCat - 源代码篇(5)3. 连接模块如之前所述,MyCat的连接分为前端和后端,下面是连接基本相关类图: 3.1 ClosableConnection:public interface ClosableConnection { String getCharset(); //关闭连接 void close(String reason); boo

2016-02-21 10:53:38 7551 5

原创 MyCat - 源代码篇(4)

数据库路由中间件MyCat - 源代码篇(4)2. 前端连接建立与认证Created with Raphaël 2.1.0MySql连接建立以及认证过程clientclientMySqlMySql1.TCP连接请求2.接受TCP连接3.TCP连接建立4.握手包HandshakePacket5.认证包AuthPacket6.如果验证成功,则返回OkPacket7.默认会发送查询版本信息的包8.返回结果

2016-02-20 10:33:37 6904 3

原创 MyCat - 源代码篇(3)

数据库路由中间件MyCat - 源代码篇(3)2. 前端连接建立与认证Created with Raphaël 2.1.0MySql连接建立以及认证过程clientclientMySqlMySql1.TCP连接请求2.接受TCP连接3.TCP连接建立4.握手包HandshakePacket5.认证包AuthPacket6.如果验证成功,则返回OkPacket7.默认会发送查询版本信息的包8.返回结果

2016-02-18 10:56:46 11659 2

原创 MyCat - 源代码篇(2)

数据库路由中间件MyCat - 源代码篇(2)2. 前端通信模块Created with Raphaël 2.1.0MySql连接建立以及认证过程clientclientMySqlMySql1.TCP连接请求2.接受TCP连接3.TCP连接建立4.握手包HandshakePacket5.认证包AuthPacket6.如果验证成功,则返回OkPacket7.默认会发送查询版本信息的包8.返回结果包2.

2016-02-17 17:51:44 12142 8

原创 MyCat - 源代码篇(1)

数据库路由中间件MyCat - 源代码篇(1)进入了源代码篇,将按照框架->模块->细节的方式进行。模块的顺序按照从前端接收请求到后端发送给数据库,之后从数据库返回结果到前端的顺序进行。 MyCat整体框架图: 1. 整体通信与业务框架:前端与后端通信框架都为NIO/AIO,因为目前生产上用的linux发行版内核都没有真正实现网络上的AIO,如果应用用AIO的话可能比NIO还要慢一些,所以,我们

2016-02-17 14:00:01 16989 28

原创 MyCat - 使用篇(4)

数据库路由中间件MyCat - 使用篇(4)配置MyCat3. 配置conf/rule.xml1.4.1中的规则配置比较笨,1.5中优化了一些,将tableRule标签和function标签合并了,并且支持Velocity模板语言,更加灵活。这里先介绍1.4.1的:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mycat:rule SYSTEM "

2016-02-16 15:15:31 13826 2

原创 MyCat - 背景篇(2)

数据库路由中间件MyCat - 背景篇(2)MyCat的前世今生如前文所说,Amoeba、Cobar、MyCat等属于同宗一脉。若Amoeba能继续下去,Cobar就不会出来;若Cobar那批人不是都走光了的话,MyCAT也不会再另起炉灶。Cobar之后,有很多类似中间件仿照其架构以及思路,针对特定的业务场景,设计出了不同的中间件。MyCat算是其中业务场景比较全面,使用配置比较简便,性能优秀,而且

2016-02-01 09:57:18 11734 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除