58同城数据库中间件 Oceanus

Apache
Java 查看源码»
跨平台
58同城
2015-03-02
叶秀兰

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;

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

开源集成

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

待开发

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

的码云指数为
超过 的项目
加载中

评论(5)

芋道源码
芋道源码
推荐下 client 级别分表分库数据库中间件 Sharding-JDBC,支持 MySQL Oracle SQLServer PostgreSQL 很靠谱的数据库中间件。 代码结构有层次,编码规范。 有兴趣了解,可以看我博客:http://www.yunai.me/categories/Sharding-JDBC/?oschina&43
MartinBockZhu
MartinBockZhu
mark #Oceanus#
小山羊
小山羊
这个的设计思路貌似跟阿里的cobar是一样的 Oceanus
jt120lz
jt120lz
看看 Oceanus
Injection
Injection
这种中间件设计思路就不对,很难用 Oceanus

暂无资讯

1
回答
你们的SQL是如何解析的

@biocyy 你好,想跟你请教个问题:你们的SQL是如何解析的,我的意思就是SQL的解析的过程是

2015/06/24 20:57
1
回答
Spring 如何整合Oceanus

如题,spring怎么集成Oceanus,配置文件要怎么弄?

2015/04/10 14:46

没有更多内容

加载失败,请刷新页面

没有更多内容

Oceanus:美团HTTP流量定制化路由的实践

背景简述 Oceanus是美团基础架构部研发的统一HTTP服务治理框架,基于Nginx和ngx_lua扩展,主要提供服务注册与发现、动态负载均衡、可视化管理、定制化路由、安全反扒、session ID复用、熔断降...

2018/09/07 14:21
48
0
nginx配置_某个项目(反向代理和静态资源解析)

``` nginx 配置 #user nobody; worker_processes 4; #尽量和cpu核数一致 worker_cpu_affinity 01 10 ; worker_rlimit_nofile 65535; #window下貌似不起作用 events { use epoll; worker_con...

2016/05/26 11:44
101
0
JDBC技术预研选型依据【转】

http://songwie.com/articlelist/44 mycat分布式mysql中间件(mysql中间件研究) 发表回复 mysql中间件研究( Atlas,cobar,TDDL,mycat,heisenberg,Oceanus,vitess,OneProxy ) mysql-prox...

2016/03/08 13:07
185
1
mysql工具链--devops

工欲善其事必先利其器

2016/06/03 14:02
134
0
数据库分表

当单表但数据库的数据量大时,插入和查询的性能会急剧降低,这时会考虑用到数据库分表,将单一的数据分布到多个数据库表中,MySQL5.1也增加了对单表分区的支持。 一、拆分方法 1、范围法:通...

2017/11/03 20:09
52
0
毕业快两年了

毕业到现在,快两年了,回想起来这段日子,有不尽人意的时候,有踌躇满志的时候,也有对于未来的不确定而犹豫的时候。但总的来说,目前自己还是达到了预先给自己设定的标准吧。 从上次找工作...

2015/03/11 00:06
179
0
Mycat架构分析

比较了业界流行的MySQL分布式数据库中间件,关于每个产品的介绍,网上的资料比较多,本文只是对几款产品的架构进行比较,从中可以看出中间件发展和演进路线

2016/06/30 20:40
120
0
OSChina 技术周刊第二十四期 —— C# 6.0 的新特性

每周技术抢先看,总有你想要的! 移动开发 【博客】Swift社交应用文本输入优化汇总 服务端开发/管理 【翻译】HTTP/1 的最佳实践并不适合 HTTP/2 【翻译】使用 AppDomain 存储实现大数据集合 ...

2015/03/09 00:24
96
1
国内互联网公司与个人在github上的开源项目

**### 阿里** [https://github.com/Alibaba](http://) **Tengine**:由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。 LVS:Linux虚拟...

2016/09/27 10:24
1K
1

没有更多内容

加载失败,请刷新页面

返回顶部
顶部