彻底解决数据库去中心化问题
来源:互联网 发布:ios更新系统 数据丢失 编辑:程序博客网 时间:2024/04/18 11:36
1)首先垂直切分,按业务模块把一些紧密联系的表分在一起(按表切分),形成一个抽象的vertical partition
2)水平切分。垂直切分之后的单个vertical partition(甚至其中单个表)仍然可能太大,一个server放不下,进一步按行切分,这时候需要选择一个聚合根作为记录的horizontal partiotion的标志,一般是userId,对于Forum模块,forumId是聚合根,模块所有表都有这个聚合根字段,userId % number of horizontal partitions (这是map的一种方式)就映射到一个horizontal partition
3) Group(集群),一个水平partition不是对应一个Server而是一个Group,一个Group由一个master和多个slave组成,进行读写分离和负载均衡,因为数据已经经过了水平和垂直切分,量已经大大减小,所以group一般一个master就可以了
4)一个Group 对应一个Load balancer, 对于写请求和实时性要求高的读请求,分配给master,否则分配一个slave
总结一下主要的role:
RR: route rule, 其实还可以进一步分为vertical RR 和 horizontal RR
vertical partition
horizontal partition
Group,LoadBalancer,Fault Detector
伪代码:
DAL dal = getDAL();String tableName = getTableName(sql);VerticalPartition vp = dal.getVerticalPartition(tableName);String horizontalPartionKey = getHorizontalPartionKey(sql)//聚合根//something like horizontalPartionKey.hashCode() % num of Horizontal PartionsHorizontalPartition hp = vp.getHorizontalPartition(horizontalPartionKey)Group group = hp.getGroup();//clusterif (isWriteOrCriticalRead (sql))return group.getMaster().execute(sql);elsereturn group.loadBalancer().getASlave().execute(sql);
0 0
- 彻底解决数据库去中心化问题
- 豆瓣的去中心化
- 用Zookeeper实现数据库去中心化以及读写分离设计
- 如何理论上从零开始设计一个去中心化的分布式数据库集群
- 数据库去重问题
- 软件测试领域的中心化与去中心化
- 网络中心化 和 去中心化
- 个人门户与去中心化
- 去中心化的安全分布式存储系统
- 一个去中心化网络模型
- 个体革命、去中心化和8090
- 去中心化的三个维度
- CLOUT —— 媒体去中心化
- 彻底解决asp里用ADO连接数据库的超时问题
- 彻底解决win7上mysql5.6.x数据库中文乱码问题
- Dom4j 编码问题彻底解决
- Dom4j 编码问题彻底解决
- Dom4j 编码问题彻底解决
- JAVA中的阻塞队列
- HelloWorld Driver
- 欢迎使用CSDN-markdown编辑器
- Apache OFBiz 学习笔记 之 服务引擎 二
- javascript中的||操作符与&&操作符
- 彻底解决数据库去中心化问题
- “睡城”通州的逆袭:房价大涨40% 限制人口落户
- String详解(一):如何理解String
- php 将中文字符串转成汉语拼音
- C语言pthread_cond_wait与pthread_cond_signal的使用
- kubernetes实战-基于redis和docker的留言簿案例
- 一致性Hash
- C++ 内存分配(new,operator new)
- C++ 神秘的随机数