1. 数据源 DataSource

CobarClient 的 DataSource 分为三层

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

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

DataSource: 实际数据库 DataSource

2. 路由 Router

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

<rules><rule><namespace>com.alibaba.cobar.client.entities.Offer</namespace><shardingExpression>mod.apply(memberId)==1</shardingExpression><shards>partition1</shards></rule><rule><namespace>com.alibaba.cobar.client.entities.Offer</namespace><shardingExpression>mod.apply(memberId)==2</shardingExpression><shards>partition2</shards></rule>
</rules>

表示对于 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

Cobar-Client 实现策略总结相关推荐

  1. Cobar Client的使用

    cobar client是出自阿里的产品,cobar client只需要引入jar包即可,不需要建立服务.下面的地址是cobar client的帮助文档 http://code.alibabatech ...

  2. 数据库 分库分表----全貌解析----策略,方法,中间件,途中问题,数据迁移方法

    https://baijiahao.baidu.com/s?id=1622441635115622194&wfr=spider&for=pc https://mp.weixin.qq. ...

  3. 开源的分布式数据库中间件系统Mycat和阿里巴巴Cobar的对比

    mycat 不得不说的缘分 原创 2016年04月15日 15:48:17 27834 1,愕然回首,它在灯火阑珊处 关于mysql集群中间件,以前写在应用程序里面,由开发人员实现,在配置文件里面写多 ...

  4. 数据库分库分表(sharding)系列(三) 关于使用框架还是自主开发以及sharding实现层面的考量...

    当团队对系统业务和数据库进行了细致的梳理,确定了切分方案后,接下来的问题就是如何去实现切分方案了,目前在sharding方面有不少的开源框架和产 品可供参考,同时很多团队也会选择自主开发实现,而不管是 ...

  5. 分库分表需要考虑的问题及方案

    https://www.jianshu.com/p/32b3e91aa22c 分库分表的基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单 ...

  6. MySQL 深入学习总结

    作者:yandeng,腾讯 PCG 应用开发工程师 1.数据库基础 1.1 MySQL 架构 和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用.主要体现在存储 ...

  7. MySQL千万级别大表如何优化?

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部署.运维的各种复杂度,一般以整型 ...

  8. Mysql学习总结(47)——MySQL大表优化方案

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑.部署.运维的各种复杂度,一般以整型 ...

  9. 数据库为什么要分库分表

    1 基本思想之什么是分库分表? 从字面上简单理解,就是把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上. 2 基本思想之为什么要分库分表?数据库中的数据量不一定是 ...

最新文章

  1. [示例]NSDictionary-按value排序数组中的字典并输出(描述器)
  2. java自学语法_Java自学笔记(一):基础知识
  3. A5D2应用程序无法启动问题
  4. python中求包含5的数_Python 内置函数 ( ) 可以返回列表、元组、字典、集合、字符串以及 range 对象中元素个数。_学小易找答案...
  5. mAP与IOU的简单介绍
  6. IE7下面 overflow:hidden 无效
  7. 服务端解决跨域问题的方案(一)
  8. python sorted list 元组 多列排序
  9. Doc命令之 cd,(跳转到别的盘符)。
  10. 移动设备响应式网站之CSS媒体查询
  11. $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 与 $_SERVER['REQUEST_URI']三者的区别
  12. p51 thinkpad 拆解_ThinkPad P51值得买吗?联想ThinkPad P51移动工作站图解评测
  13. 【Java】---JVM内存模型
  14. 3、tiny yolov2 训练
  15. 财务记账微信小程序开发
  16. mysql用户域账户登录_使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000...
  17. 二值图像分析:OpenCV中的二值化阈值操作
  18. 动态规划算法——最长公共子序列求法
  19. 百度云盘试用时间本地CE修改
  20. 张裕公司创始人张弼士与李鸿章的交往

热门文章

  1. Android扩展类方法,Android 扩展 uni小程序SDK 原生能力
  2. 传感器工作原理_荧光氧气传感器工作原理简介
  3. 自定义关键字_Java中的自定义异常
  4. lastinsertid mysql_mysql错误,帮忙看看
  5. STM8 ADC转换模式-------单次扫描模式
  6. STM32F103单片机modbus通信示例
  7. C++:如何在VS中配置第三方动态库 【visual Studio 2017 + Opencv 】
  8. Java进行spark计算
  9. C++ delete删除动态分配的内存
  10. SQL中到底要不要用WHERE 1=1