概览

介绍

Arana是一个面向数据库的中间件代理, 旨在基于已有的廉价MySQL集群之上提供强大的分库分表、读写分离、分布式事务、弹性扩展等能力。

Arana的最终的设计目标为实现DB-Mesh, 以sidecar的形式提供轻量的标准MySQL协议兼容服务, 使用上与访问普通MySQL一样的体验, 最大限度降低用户的集成使用成本。同时Arana最终的愿景是消除手动分库分表, 提供Shardless的自动分片。

产品功能

Arana以Go语言开发, 是一个100%开放开源的组织, 依托社区同学的努力迭代实现了丰富的产品功能:

特性

定义

数据分片

数据分片, 可以对海量数据做水平分割。Arana基于底层数据库提供分布式数据库解决方案,可以水平扩展计算和存储。

分布式事务

数据库事务能力是一个基石, 提供分布式事务能力是每一个分布式数据库/中间件需要解决的难点。Arana依托XA事务提供了开箱即用的分布式事务能力。

读写分离

数据库读写分离常用于解决高吞吐读写能力背景下的流量治理, Arana提供了基于灵活权重配置的流量治理能力, 您可依据实际情况配置对应的分流。

高可用

Arana可以将底层廉价的MySQL集群并联起来, 通过ETCD动态推送能力, 实现主从切换, 故障转移, 提供了高鲁棒性的解决方案。

JOIN查询

分布式数据库下涉及跨库JOIN, Arana提供了HashJoin以及SortMergeJoin等跨库JOIN的能力, 同时也引入了表组的概念, 可对一些跨库JOIN进行优化。

影子库

很多业务会涉及全链路压测, Arana支持传递压测标HINT将压测流量下推到压测库表, 实现数据隔离, 避免压测数据污染。

Arana Arch