Oceanus 数据库中间件使用教程
Oceanus 58同城数据库中间件 项目地址: https://gitcode.com/gh_mirrors/oc/Oceanus
1. 项目介绍
Oceanus 是 58 同城开发的一款数据库中间件,旨在解决数据库分库分表、负载均衡、性能监控等问题。Oceanus 致力于打造一个功能简单、可依赖、易于上手、易于扩展、易于集成的解决方案,甚至是平台化系统。它支持各种类型的需求,并提供各类插件机制集成其他开源项目。
Oceanus 内部名词定义:
- datanode:数据源节点,为一个数据源命名,配置链接属性、报警实现。
- namenode:数据源的簇,为一组数据源命名,指定这组数据源的负载方式、访问模式、权重。
- table:映射表,匹配解析 SQL 中的 table 名称,命中 table 标签的 name 属性值后,会执行约定的路由逻辑。
- bean:实体,由其他标签引用,实体类必须有无参的构造函数。
- tracker:监控埋点,涉及到计算和 IO 的功能点都有监控点,自定义一个埋点实现类,当功能耗时超出预期时会执行其中的回调函数,便于监控和优化系统。
2. 项目快速启动
2.1 环境准备
- Java 8 或更高版本
- Maven 3.x
2.2 下载项目
git clone https://github.com/wuba/Oceanus.git
cd Oceanus
2.3 配置文件
在 src/main/resources
目录下创建 oceanus.properties
文件,配置如下:
# 数据源配置
datanode.name=demo
datanode.url=jdbc:mysql://localhost:3306/demo
datanode.username=root
datanode.password=root
# 表配置
table.name=user
table.sharding.strategy=hash
table.sharding.column=id
2.4 启动项目
import com.wuba.oceanus.core.Oceanus;
public class Main {
public static void main(String[] args) {
Oceanus oceanus = Oceanus.getInstance();
oceanus.init("src/main/resources/oceanus.properties");
// 执行 SQL
String sql = "SELECT * FROM user WHERE id = ?";
Object[] params = {1};
oceanus.executeQuery(sql, params);
}
}
3. 应用案例和最佳实践
3.1 分库分表
Oceanus 支持多种分库分表策略,如哈希、范围、日期等。以下是一个基于哈希策略的分表案例:
table.name=order
table.sharding.strategy=hash
table.sharding.column=order_id
table.sharding.count=10
3.2 负载均衡
Oceanus 支持多种负载均衡策略,如轮询、随机、权重等。以下是一个基于权重策略的负载均衡配置:
namenode.name=cluster
namenode.strategy=weight
namenode.nodes=node1:1,node2:2
4. 典型生态项目
4.1 MyBatis 集成
Oceanus 可以很好地集成到 MyBatis 中,只需引用其中的插件,编写 Oceanus 配置文件,然后改写 MyBatis 的 DataSource 实现或 ConnectionProvider 即可。
4.2 Hibernate 集成
Oceanus 同样支持与 Hibernate 的集成,通过配置文件和插件机制,可以实现分库分表等功能。
4.3 监控与报警
Oceanus 内置了监控与报警机制,可以通过自定义埋点实现类,监控系统的性能和异常情况。
通过以上步骤,您可以快速上手 Oceanus 数据库中间件,并根据实际需求进行配置和扩展。
Oceanus 58同城数据库中间件 项目地址: https://gitcode.com/gh_mirrors/oc/Oceanus