5.8 KiB
5.8 KiB
myCat
mycat DAL中间件 数据访问层(Data Access Layer)
📀 some questions ❓
- mycat能做什么,优点是什么
- 逻辑表&逻辑库?schema
- mod水平切分,其他手段?
- 垂直切分?
- 自动处理切分?策略?
- 父子关系,外键关联关系,相当于垂直切分,ER表
- mycat有什么缺点
|-> mysql
|
- mycat---|-> mysql
|
|-> mysql
- 遗留问题 mysql之间要keepalived吗❓ benchmark性能测试怎么做❓
- 优势
要点都在这了😂
- 读写分离
- 负载均衡,HA
- 分表分库,主要是水平切分
- 其他:基于NIO-并发高,
- 官方规划2.0版本⭐通过Mycat Balance 替代第三方的Haproxy,LVS等第三方高可用,完整的兼容Mycat集群节点的动态上下线。
- 缺点
📀 垂直切分
按业务规划细分 不缩表,减少字段数 不能算myCat的优势
📀 水平切分&规则
缩表,减少记录数
- 枚举法: 通过在配置文件中配置可能的枚举id,自己配置分片,适用于按照省份或者区县来拆分数据类业务
<rule>
<columns>province_id</columns>
<algorithm>enum-int</algorithm>
</rule>
- 固定分片hash算法
<tableRule name="rule1">
<rule>
<columns>user_id</columns>
<algorithm>func1</algorithm>
</rule>
</tableRule>
<function name="func1" class="org.opencloudb.route.function.PartitionByLong">
<property name="partitionCount">2,1</property>
<property name="partitionLength">256,512</property>
</function>
本例的分区策略:希望将数据水平分成3份,前两份各占25%,第三份占50%。(故本例非均匀分区)
|<---------------------1024------------------------>|
|<----256--->|<----256--->|<----------512---------->|
| partition0 | partition1 | partition2 |
- 范围约定 预先制定可能的id范围到某个分片
<tableRule name="auto-sharding-long">
<rule>
<columns>user_id</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>
- 求模法
<columns>user_id</columns>
<algorithm>mod-long</algorithm>
- 日期列分区法 起始时间 分区时间间隔
- 通配取模
- ASCII码求模通配 %n值分n个分区
- 编程指定 自定义算法
- 字符串拆分hash解析
- 一致性hash
📀 myCat HA
- keepalived & haproxy装在一起
- keepalived 负责抢VIP
- haproxy 负责分发给可用myCat
- HAProxy实现了Mycat多节点的集群高可用和负载均衡,而HAProxy自身的高可用则可以通过Keepalived来实现。因此,HAProxy主机上要同时安装HAProxy和Keepalived,Keepalived负责为该服务器抢占vip(虚拟ip,图中的192.168.209.130),抢占到vip后,对该主机的访问可以通过原来的ip(192.168.209.135)访问,也可以直接通过vip(192.168.209.130)访问。
- Keepalived抢占vip有优先级,在keepalived.conf配置中的priority属性决定。但是一般哪台主机上的Keepalived服务先启动就会抢占到vip,即使是slave,只要先启动也能抢到(要注意避免Keepalived的资源抢占问题)。
- HAProxy负责将对vip的请求分发到Mycat集群节点上,起到负载均衡的作用。同时HAProxy也能检测到Mycat是否存活,HAProxy只会将请求转发到存活的Mycat上。
- 如果Keepalived+HAProxy高可用集群中的一台服务器宕机,集群中另外一台服务器上的Keepalived会立刻抢占vip并接管服务,此时抢占了vip的HAProxy节点可以继续提供服务。
- 如果一台Mycat服务器宕机,HAPorxy转发请求时不会转发到宕机的Mycat上,所以Mycat依然可用。
综上:Mycat的高可用及负载均衡由HAProxy来实现,而HAProxy的高可用,由Keepalived来实现。
myCat HA reference































