博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cobar-Client 实现策略总结
阅读量:5158 次
发布时间:2019-06-13

本文共 1138 字,大约阅读时间需要 3 分钟。

1. 数据源 DataSource

CobarClient 的 DataSource 分为三层

ICobarDataSourceService: 封装了多个 DataSourceDescriptor, 以及 HA 包装的 IHADataSourceCreator

DataSourceDescriptor: 封装了 identity, 主 targetDataSource 以及 备 standbyDataSource

DataSource: 实际数据库 DataSource

 

2. 路由 Router

CobarClient 的路由规则依赖于 iBatis, 它主要由 SqlMap 的 id 和路由字段共同决定最终的datasource, 例如

com.alibaba.cobar.client.entities.Offer
mod.apply(memberId)==1
partition1
com.alibaba.cobar.client.entities.Offer
mod.apply(memberId)==2
partition2

 

表示对于 SqlMap 中的 namespace 为 Offer 的 SQL, 将会根据参数的 memberId 字段来获取 shard, shard 即为 DataSourceDescriptor 的 identity

 

3. HA 

CobarClient 的 HA 分为主动及被动方式, 主动方式默认开启, 即开一个线程定期探测主数据源是否可用, 如果不可用, 则切换为备数据源, 即切换 DataSourceDescriptor 的主备数据源

被动方式默认关闭, 被动方式是在每次执行查询前检查, 这样会降低效率, 如果检查失败, 则会切换主备.

 

4. 数据聚合

数据聚合主要还是依赖客户端查询完以后的人工聚合, 例如

select count(*), companyId from offer group by companyId

 将会对多个数据源执行 SQL, 并最终返回多个结果集, 最后依赖用户手动聚合 companyId

转载于:https://www.cnblogs.com/zemliu/p/4042787.html

你可能感兴趣的文章
.Net Core 3.0全新的sql驱动
查看>>
Linux关闭SELinux
查看>>
虚拟机(VM)安装openwrt-koolshare软路由
查看>>
CentOS7下使用Sonatype Nexus3搭建Docker私有仓库
查看>>
Kubernetes-Linux系统初始化
查看>>
170118、快速失败Vs安全失败(Java迭代器附示例)
查看>>
170605、防止sql注入(二)
查看>>
MySQL外键设置中的的 Cascade、Restrict、SET NULL 、NO ACTION
查看>>
ubuntu下mysql的一些命令
查看>>
项目支持
查看>>
这10道javascript笔试题你都会么
查看>>
接口测试工具-Jmeter使用笔记(三:管理请求服务器信息和Headers参数)
查看>>
linux下调整时区和时间的方法
查看>>
【服务器】【tomcat】Tomcat 应用目录重定向
查看>>
【leetcode】Path Sum II
查看>>
集合代码----小练习1
查看>>
iframe自适应高度的多种方法方法
查看>>
Dbzoj#3188. [Coci 2011]Upit
查看>>
SOAP 与 restful service区别
查看>>
centos 6.5 联网
查看>>