http://www.tuicool.com/articles/miuq63E

http://www.guokr.com/blog/475765/

http://songwie.com/articlelist/44

https://www.youtube.com/watch?v=5yDO-tmIoXY

single database => master / slave  => sharding

( at stage of master/slave, you might need to add a hot-standby master for failover, e.g. DRDB-based, http://highscalability.com/blog/2011/6/27/tripadvisor-architecture-40m-visitors-200m-dynamic-page-view.html, https://en.wikipedia.org/wiki/Distributed_Replicated_Block_Device)

after sharding, how to do "query routing"
a) application layer
b) library-as-sharding (e.g. so-called JDBC-sharding, do it at JDBC layer)
c) proxy-as-sharding

Qihoo 360 Atlas (quite primitive)

based on mysql-proxy, exposes MySQL client protocol;

add /* master */ to SQL in order to force send to master;

manual creation of partition table;

Alibaba B2B Cobar

proxy-based, query parsing / rewrite / routing, result gathering;

expose MySQL client protocol;

failover for data node; (need dual-direction replication between data nodes)

Taobao TDDL - Also as Aliyun DRDS

library-as-sharding, access external config service to determine paritioning rule;

works on JDBC layer;

DRDS : transparent and automatic scaling - just add machine

http://www.oschina.net/news/64312/aliyun-drds

https://yq.aliyun.com/articles/38883

DRDS features :
a) Join : if it's driven by a small table, broadcast the small table to each partition, and do local join - instead of join at the end
b) read/write segregation : policy-driven, DRDS determines which datanode is master and how to route read/write; policy can be updated on the fly; SQL hint to force certain node (e.g. master)
c) redundancy data copy;
d) distributed transaction (read-commit level)

MyCAT

Cobar-based, proxy-based;

client : MySQL CLI, JDBC etc.

Server: MySQL client protocol handler => SQL Parser / Router => SQL Executor => MySQL Instances...

Server / DataNode : Heartbeat check etc.

Google(Youtube): Vitess (vai-tess)

vttablet : a server sits in front of a MySQL database; connection pool to backend MySQL, row cache, rewrite/optimize SQL;

vtgate : light proxy which routes traffic from application to vttablet; health check of vttablet;

topology : metadata store (e.g. Zookeeper)

no transaction support (yet) : https://groups.google.com/forum/#!topic/vitess/e5N_YiODl14

ScaleBase

https://en.wikipedia.org/wiki/ScaleBase

2-phase commit and roll-back;

cross-node join and aggregations

MySQL Horizontal Scaling的更多相关文章

  1. Scalable MySQL Cluster with Master-Slave Replication, ProxySQL Load Balancing and Orchestrator

    MySQL is one of the most popular open-source relational databases, used by lots of projects around t ...

  2. 数据库分片(Database Sharding)详解

    本文由云+社区发表 作者:腾讯云数据库 Introduction 导言 任何看到显著增长的应用程序或网站,最终都需要进行扩展,以适应流量的增加.以确保数据安全性和完整性的方式进行扩展,对于数据驱动的应 ...

  3. CNCF CloudNative Landscape

    cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...

  4. [译]Kubernetes 分布式应用部署和人脸识别 app 实例

    原文地址:KUBERNETES DISTRIBUTED APPLICATION DEPLOYMENT WITH SAMPLE FACE RECOGNITION APP 原文作者:skarlso 译文出 ...

  5. Kubernetes工作流之Pods一

    This page provides an overview of Pod, the smallest deployable object in the Kubernetes object model ...

  6. LIST OF NOSQL DATABASES [currently 150]

    http://nosql-database.org Core NoSQL Systems: [Mostly originated out of a Web 2.0 need] Wide Column ...

  7. David Malan teaching CS75 lecture 9, Scalability

    https://youtu.be/-W9F__D3oY4 Storage PATA, SATA, SAS (15,000 rpm), SSD, RAID0 : striping, double thr ...

  8. CNCF LandScape Summary

    CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database Vitess:itess i ...

  9. Redhad的开源Paas平台:OpenShift

    参考redHat的官方文章翻译而来:https://openshift.redhat.com/community/wiki/architecture-overview OpenShift Origin ...

随机推荐

  1. 获取网站的BaseURL

    //get base URL            var _urlstr = window.location.href;            if (_urlstr.indexOf("? ...

  2. Java 学习 day06

    01-面向对象(Static关键字) package myFirstCode; /* 静态:static. 用法:是一个修饰符,用于修饰成员(成员变量,成员函数) 当成员被静态修饰后,就多了一个调用方 ...

  3. yarn_action

    https://maprdocs.mapr.com/home/AdministratorGuide/ResourceAllocation-YARNContainer.html yarn.schedul ...

  4. Grunt 学习笔记【1】----基础知识

    题记:虽然现在大家都在推Webpack,无奈业务需要,因此研究下Grunt. 说明:本文是基于Grunt 0.4.5版本. 一 说明 为何要用构建工具? 一句话:自动化.对于需要反复重复的任务,例如压 ...

  5. javascript中replace( )方法的使用——有博主已经讲过了,但里面有一小丢丢知识错误,挺重要的部分,我就重提下,以免初学者弄错

    阿里面试题:说出以下函数的作用是?空白区域应该填写什么? 其实这个问题http://www.phpstudy.net/b.php/105983.html解释的已经非常好了,思路也很顺,容易理解,本文将 ...

  6. linux c编程:make编译一

    一个工程中的源文件不计其数,按照不同的功能分类在若干的目录里面,makefile定义了一系列的规则,来制定那些文件需要先编译,那些文件后编译,那些文件重新编译.makefile最大的好处就是自动化编译 ...

  7. Discuz!支持发布视频帖子设定 + 修改后台文件

    最近想做一个地方性论坛,果断在阿里巴巴的phpwind论坛程序与腾讯旗下的discuz论坛程序中选择,虽然phpwind大气,后面还是 决定选择了discuz程序用来构建这个平台,经过一番安装后,发现 ...

  8. 安装pymysqlpool并使用(待补充)

    pip3 install PyMysqlPool 第一个错,提示没有装c++ 14.0,下载安装报下一个错 error: Setup script exited with error: Microso ...

  9. 剑指Offer:把数组排成最小的数【45】

    剑指Offer:把数组排成最小的数[45] 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个.例如,输入数组是{3.32.321},则打印出来的这3 ...

  10. Java基础教程:面向对象编程[3]

    Java基础教程:面向对象编程[3] 内容大纲 基础编程 获取用户输入 java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入.我们可以查看Ja ...