Oceanus 58同城数据库中间件开源项目

我要开发同款
匿名用户2015年03月02日
37阅读
开发技术Java
所属分类数据库相关、数据库调整和优化
授权协议Apache

作品详情

Oceanus是58同城数据库中间件。

关于DB中间件

在DB存储需求中,尽管业务不同,技术难点还是类似的,开源世界有很多DB中间件,解决方案也以通用方案为主,满足业务需要为前提,支持各种类型的需求。

Oceanus致力于打造一个功能简单、可依赖、易于上手、易于扩展、易于集成的解决方案,甚至是平台化系统。拥抱开源,提供各类插件机制集成其他开源项目,新手可以在几分钟内上手编程,分库分表逻辑不再与业务紧密耦合,扩容有标准模式,减少意外错误的发生。

Oceanus内部名词定义

datanode:数据源节点。为一个数据源命名,配置链接属性、报警实现

namenode:数据源的簇。为一组数据源命名,指定这组数据源的负载方式、访问模式、权重

table:映射表。匹配解析sql中的table名称,命中table标签的name属性值后,会执行约定的路由逻辑

bean:实体。由其他标签引用,实体类必须有无参的构造函数

tracker:监控埋点。涉及到计算和IO的功能点都有监控点,自定义一个埋点实现类,当功能耗时超出预期时会执行其中的回调函数,便于监控和优化系统

为什么说Oceanus是非常易用的

Oceanus在设计时非常注重使用者的评价,配置结构近乎于和使用者交流约定业务规则,便于不同的人看同一套配置,互相理解流程。当配置文件编写完成后,编码就变得更加简单,只调用Oceanus客户端的几个方法就可以实现数据库操作,不再关心HA、报警、负载均衡、性能监控等问题。良好的用户视觉减少了分库分表在业务场景中的耦合度,对于编码者就像只对一个table操作,Oceanus负责进行sql解析、路由、sql重写。

如提交:    select * from user;改写成:    select * from user0;           select * from user1;           select * from user2;           select * from user3;

分发给不同的库(或者同库)执行,用户视觉如图:

开源集成

“接地气,拥抱开源”是Oceanus的设计原则之一,可以很好的集成到mybatis和hibernate中,只要引用其中的插件,编写Oceanus配置文件,然后改写各自的DataSource实现或ConnectionProvider即可做到集成。这样既用到了熟悉的ORM,又借助Oceanus实现了分库分表等功能。

待开发

不得不说Oceanus在设计上非常灵活,使得每一个细小的功能点都有极高的切入价值,比如Cache机制、全局的ID生成规则、资源可视化监控等等,把其中某一个点做得足够好,都会为整体产品带来质的提升,简化实际生产环境中的配套系统研发维护成本。

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论