MySQL Horizontal Scaling
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的更多相关文章
- 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 ...
- 数据库分片(Database Sharding)详解
本文由云+社区发表 作者:腾讯云数据库 Introduction 导言 任何看到显著增长的应用程序或网站,最终都需要进行扩展,以适应流量的增加.以确保数据安全性和完整性的方式进行扩展,对于数据驱动的应 ...
- CNCF CloudNative Landscape
cncf landscape CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database ...
- [译]Kubernetes 分布式应用部署和人脸识别 app 实例
原文地址:KUBERNETES DISTRIBUTED APPLICATION DEPLOYMENT WITH SAMPLE FACE RECOGNITION APP 原文作者:skarlso 译文出 ...
- Kubernetes工作流之Pods一
This page provides an overview of Pod, the smallest deployable object in the Kubernetes object model ...
- LIST OF NOSQL DATABASES [currently 150]
http://nosql-database.org Core NoSQL Systems: [Mostly originated out of a Web 2.0 need] Wide Column ...
- David Malan teaching CS75 lecture 9, Scalability
https://youtu.be/-W9F__D3oY4 Storage PATA, SATA, SAS (15,000 rpm), SSD, RAID0 : striping, double thr ...
- CNCF LandScape Summary
CNCF Cloud Native Interactive Landscape 1. App Definition and Development 1. Database Vitess:itess i ...
- Redhad的开源Paas平台:OpenShift
参考redHat的官方文章翻译而来:https://openshift.redhat.com/community/wiki/architecture-overview OpenShift Origin ...
随机推荐
- php类中const
常量 const 在类里面定义常量用 const 关键字,而不是通常的 define() 函数. 语法: const constant = "value"; 例子: <?ph ...
- POJ 2965:The Pilots Brothers' refrigerator
id=2965">The Pilots Brothers' refrigerator Time Limit: 1000MS Memory Limit: 65536K Total S ...
- 在ios开发中使用 try 和 catch 来捕获错误。
本文转载至 http://blog.csdn.net/remote_roamer/article/details/7105776 抛出错误的代码 //如果返回的报文是错误信息,则抛出错误 if([ou ...
- 一种微信直播H5直播与存储回放的HLS摄像机方案
接上篇 在上一篇博客<一种流量成本节省60%以上的手机直播微信直播H5直播幼儿园直播方案>中,我们一共介绍了两种省钱的HLS直播途径: 方案一:编码器或者内网推流直接对接云存储的场景 如果 ...
- EasyPusher华为手机直播推流硬编码[OMX.IMG.TOPAZ.Encoder] failed to set input port definition parameters.
EasyPusher作为一款RTSP推送利器, 配合EasyDarwin开源流媒体服务器,在发布伊始,很快获得了广大人民群众的一致好评. 但是也有一些用户反映: EasyPusher在我的华为手机上会 ...
- 开发过程中,本地分支和远程跟踪分支发生了diverge
1 git基本概念梳理 1.1 git的工作目录.暂存区和HEAD指向的版本库以及branch的概念 一个branch就是整个产品的一套代码,而工作目录中就是存放的本branch最新的代码,HEAD指 ...
- python仪表盘
1.在这里可以看到pyecharts中有定义好的各种图标类. 复制上面代码,会出现“ModuleNotFoundError: No module named 'pyecharts'”. pip ins ...
- flask的请求上下文源码解读
一.flask请求上下文源码解读 通过上篇源码分析( ---Flask中的CBV和上下文管理--- ),我们知道了有请求发来的时候就执行了app(Flask的实例化对象)的__call__方法,而__ ...
- 如何使用ipv6
需要系统至少是Vista以上还有就是要问你们学校是否已经支持IPV6 从Windows Vista开始,IPv6在默认状态下已经安装并启用,无需额外配置.检测步骤开启浏览器窗口,输入以下域名访问本站首 ...
- js中得~~是什么意思/JS按位非(~)运算符与~~运算符的理解分析
其实是一种利用符号进行的类型转换,转换成数字类型 ~~true == 1 ~~false == 0 ~~"" == 0 ~~[] == 0 ~~undefined ==0 ~~!u ...