forked from MyCATApache/abandomed
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request MyCATApache#26 from MyCATApache/master
从主干合并
- Loading branch information
Showing
4 changed files
with
123 additions
and
49 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,72 +1,131 @@ | ||
# tcp-proxy | ||
Genel TCP Proxy using Java NIO ,simple and fast | ||
Mycat 2.0 预览版。 | ||
|
||
学习Mycat核心,学习NIO编程,都可以从这个代码来理解。可以用来实现如下目标: | ||
高性能HTTP Proxy | ||
高性能FTP Proxy | ||
高性能WebService 网关 | ||
基于Nio实现,有效管理线程,解决高并发问题。 | ||
|
||
如果代码看不懂,建议去看看《架构解密》中关于NIO的内容,或者报名Leader us私塾 中间件研发课程,QQ 群 106088787 | ||
前后端共享buffer,支持全透传和半透传,极致提升内核性能,稳定性和兼容性。 | ||
|
||
|
||
|
||
|
||
## 目前已实现的特性: | ||
|
||
* 基于Nio实现,有效管理线程,解决高并发问题。 | ||
* 自动集群功能。 | ||
* 支持SQL92标准。 | ||
* 支持单库内任意sql。 | ||
* 前后端共享buffer,支持全透传和半透传,极致提升内核性能,稳定性 和 兼容性。 | ||
# 功能特性 | ||
|
||
- [x] 支持SQL92标准。 | ||
|
||
- [x] 支持单库内任意sql。 | ||
|
||
### 集群配置说明 | ||
- [x] 支持读写分离。 | ||
|
||
- 非集群模式 | ||
- 指定`mycat.yml`中的ip和port | ||
- 修改`cluster.yml`中的`enable: false`,设置cluster的port | ||
- [x] 自动集群管理。 | ||
|
||
- [x] 支持负载均衡。 | ||
|
||
- 集群模式 | ||
- 开启集群:`cluster.yml`中的`enable: true`,设置cluster的port,`myNodeId`需要在集群中唯一 | ||
- 负载均衡:`balancer.yml`中的`enable: true`,设置balancer的port及strategy | ||
- 集群模式下,只有在集群状态下才提供代理服务,在脱离集群状态下将暂时无法提供代理服务 | ||
- [x] 支持主从切换。 | ||
|
||
- [x] 支持动态注解。 | ||
|
||
- [ ] 结果集缓存。 | ||
|
||
### 运行方式: | ||
|
||
#### 一 下载 | ||
|
||
1.1 window 环境 下载 mycat2-0.1-20170906223147-win.tar.gz <br> | ||
1.2 linux 环境 下载 mycat2-0.1-20170906223147-linux.tar.gz<br> | ||
|
||
#### 二 修改配置文件 | ||
|
||
2.1 需要修改 conf 目录下 `schema.yml` `datasource.yml` 两个配置文件。<br> | ||
2.2 `schema.yml`中 需要设置 default-db (默认数据库), default-rep (默认复制组) 属性。<br> | ||
2.3 `datasource.yml` 中 需要设置 ip port user password min-con max-con 属性。<br> | ||
# 配置说明 | ||
|
||
#### 三 运行 | ||
- mycat.yml:mycat代理的配置,指定开启的端口号提供代理服务 | ||
|
||
3.1 运行的方式与 1.6 相同。<br> | ||
3.2 linux 环境 运行 bin 目录下 ./mycat {console | start | stop | restart | status | dump }<br> | ||
3.3 window 环境 运行 bin 目录下 startup_nowrap.bat<br> | ||
3.4 运行成功后, 使用 root 账号登录,登录密码 123456 登录, 端口号 8066<br> | ||
- cluster.yml:集群配置,可以开启关闭集群功能,指定集群端口和id号,id在集群内必须唯一 | ||
|
||
#### 四 启动第二个mycat,并自动加入集群。 | ||
- balancer.yml:负载均衡配置,可以开启关闭负载均衡,负载均衡只有在集群模式下才生效 | ||
|
||
4.1 集群相关配置文件 | ||
`conf` 目录下, 修改mycat.yml,cluster.yml,balancer.yml 三个配置文件。<br> | ||
配置文件中 `cluster.allnodes` 属性 需要将集群中,所有节点的信息配置上。<br> | ||
4.2 需要注意的是,每个节点一套mycat程序。<br> | ||
4.3 配置完成后 按照第三步 启动mycat. 新启动的mycat 将自动加入集群中。<br> | ||
- heartbeat.yml:心跳配置,指定心跳周期及切换间隔 | ||
|
||
### 五 在IDEA中调试集群 | ||
- schema.yml:mycat的逻辑库 | ||
|
||
IDEA中调试可以设置启动参数,支持的启动参数: | ||
-mycat.proxy.port 8067 | ||
-mycat.cluster.enable true | ||
-mycat.cluster.port 9067 | ||
-mycat.cluster.myNodeId leader-2 | ||
- datasource.yml:后端数据库的复制组配置 | ||
|
||
- replica-index.yml:指定datasource.yml中复制组的写节点,默认为0 | ||
|
||
- sharding-rule.yml:分片规则 | ||
|
||
|
||
|
||
|
||
|
||
# 启动运行 | ||
|
||
|
||
## 一、本地调试 | ||
|
||
配置文件只能有一个,在IDEA中调试可以设置启动参数,启动参数优先级比配置文件高,会替换掉配置文件的参数,现支持的启动参数: | ||
|
||
- -mycat.proxy.port 8067 | ||
|
||
- -mycat.cluster.enable true | ||
|
||
- -mycat.cluster.port 9067 | ||
|
||
- -mycat.cluster.myNodeId leader-2 | ||
|
||
|
||
|
||
|
||
|
||
## 二、编译运行 | ||
|
||
### 1. 下载源码并编译 | ||
|
||
1. clone源代码 git clone https://github.com/MyCATApache/tcp-proxy.git | ||
|
||
2. maven编译 mvn clean install | ||
|
||
3. 在target目录下找到操作系统对应的压缩包,如linux下的mycat2-0.1-20170906223147-linux.tar.gz | ||
|
||
4. 将压缩包解压缩到指定路径 | ||
|
||
|
||
|
||
|
||
|
||
### 2. 修改配置文件 | ||
|
||
配置文件在conf目录下,需要修改的配置文件包括: | ||
|
||
1. mycat.yml,指定ip和端口号 | ||
|
||
2. cluster.yml,指定是否开启集群模式以及集群节点的基本信息,默认集群关闭 | ||
|
||
3. balancer.yml,指定是否开启负载均衡模式以及负载均衡的基本信息,默认负载均衡关闭 | ||
|
||
4. heartbeat.yml,配置心跳相关信息,可以使用默认值 | ||
|
||
5. schema.yml,设置相关的schema | ||
|
||
6. datasource.yml,设置后端连接的复制组信息 | ||
|
||
7. replica-index.yml,设置复制组写节点配置,默认为0 | ||
|
||
|
||
|
||
|
||
|
||
### 3. 运行 | ||
|
||
1. 运行的方式与 1.6 相同 | ||
|
||
2. linux 环境 运行 bin 目录下 ./mycat {console | start | stop | restart | status | dump } | ||
|
||
3. window 环境 运行 bin 目录下 startup_nowrap.bat | ||
|
||
4. 运行成功后,使用 root 账号登录,登录密码 123456 登录,端口号为mycat.yml中配置的端口号,默认为8066 | ||
|
||
|
||
|
||
|
||
|
||
### 4. 集群启动 | ||
|
||
1. conf目录下,需要正确配置mycat.yml,cluster.yml,balancer.yml | ||
|
||
2. 配置完成后,按照第三步的方式依次启动各个节点的mycat,将自动进行集群管理 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters