在WEB开发中,数据库的数据读写和传输一向是瓶颈,在此基础上的解决方案基本都是数据库连接层的设计,一个公司数据库连接层的牛B与否可以标识这个公司的全局规划的“工艺水平”到达一个什么样了。下面的内容来自明查暗访,决无BS之意,旨在提供给需要统一规划整体架构的架构师一个帮助。
1、百度
参考:http://wenku.baidu.com/view/9daa2b8102d276a200292e9c.html
关键词:dbproxy,服务器都是flash卡,DBA与开发者都不关心分裤分表(半自动)
百度的dbproxy利器,将MySQL的管理半自动化,HA等功能一应俱全,再加上SSD等硬件支持,性能相当不一般。dbproxy的作用是合理地分配数据库请求给所有的DBServer,使得在请求的数量等于或者小于所有DBServer的计算能力总和时,服务能够正常运行。
第一种方式的dbproxy:WebServer上的数据库客户端(如PHP脚本)拥有选择DBServer的智能。
这种方式实现简单,完全用Web脚本实现,脚本自己判断应该连接其中的一台或者几台DBServer,请决定把SQL请求发给谁。这种方式因为性能问题,所以应用不是很广。
第二种方式的dbproxy:SQL代理进程
类似HTTP代理服务器,这种方式的dbproxy独立运行,所以客户端请求将不再直接和DBServer连接,而是通过它中转。这样的dbproxy,首先要拥有解析协议(也即SQL)的能力,这也带来一个特点,dbproxy可以与后端的MySQL连接,但却接收前端(如PHP脚本)发来的Oracle数据库的SQL请求。
当然,dbproxy的主要功能还是在SQL分发方面。另外,还可以在dbproxy上面做与业务更接近的缓存,相比数据库的底层缓存很多时候更有效。
2、腾讯
参考:腾讯大讲堂45-解剖TTC
关键词:TencentTableCache
TTC是提供高速数据访问服务的通用cacheserver。特点是采用epoll和异步状态机模式提高并发能力。TTC看上去是一个数据库缓冲层,由于资料有限,只能如此分析。
3、淘宝、支付宝
参考:http://wenku.baidu.com/view/f36d620c844769eae009edba.html
关键词:JBoss作为中间件,有数据路由层,数据库Oracle与MySQL
在网络上许多文档里都有提到阿里内部是有一数据路由层的,另外JBoss的使用也使得他们轻便不少(可惜当年哥在淘宝时只搞的是搜索,不使用DB)
目前淘宝和支付宝使用的Oracle数据库为Oracle11g。借助Oracle11g新增的PL/SQL相关的某些新特性如网络日志分析工具,为客户和内部技术人员带来了更加快速简便的全新体验;利用OracleAdvancedCompression技术,不仅节省大量存储空间,而且提升了查询性能。
4、新浪
参考:网友
关键词:无中间件分表要开发者自己做
5、人人网
参考:http://ugc.renren.com/2009/12/28/renren-ice-problem/
关键词:ice中间层,统一配置数据源,开发者不关心分库分表
与很多大型的网站一样,人人网的系统全部是由开源软件构建的。使用Nginx做前端接入,resin做容器,Memcached做通用cache,MySQL做数据库,使用Linux操作系统。
除了上述的部分外,人人网还有一个与众不同的中间层。中间层以服务的形式存在,位于MySQL和resin中间,提供高并发低成本的数据访问层。
人人网的技术高级总监黄晶曾提到“我们的数据库用到了部分自身缓存机制,比如尽可能利用innodb的pool和MySQL的QueryCache。在中间用到Memcached,以及基于ICE通讯框架由我们自己编写的包含业务逻辑处理能力的缓存服务,在我们自行开发的分布式KV系统中也会充分利用内存Cache加速。”
6、盛大-技术保障中心
参考:网友
关键词:无中间件,每个系统一个数据库,开发者严重关心分库分表
7、金山
参考:网友
关键词:无中间件分表要开发者自己做
延伸阅读
豆瓣网:BeansDB与NoSQL的应用与发展
BeansDB主要由Server端和Client端两个部分组成。Server端用C编写,使用Memcached的通讯协议,任何支持Memcached的Client端都可以与BeansDB的Server端同步来获取和存储数据。在Client端方面的主要差别是分布式的逻辑实现方面。目前,BeansDB的Client端主要是豆瓣自己用Python语言的实现。Client端的运作方式是写数据时写入多份,读的时候只读一份,用其他任何语言实现也和简单。
BeansDB开放在GoogleCode上,在采访中,洪强宁先生谈到,豆瓣开放BeansDB,希望能看到其他语言的Client端实现,让这个BeansDB的使用更加方便,能让更多人用到这个产品。
目前,BeansDB在豆瓣主要部署了两个集群:一个集群用于存储数据库中的大文本数据,比如日记、帖子一类;另外一个豆瓣FS集群,主要用于存储媒体文件,比如用户上传的图片、豆瓣电台上的音乐等。
本文来源于鸡啄米 http://www.jizhuomi.com/ , 原文地址:http://www.jizhuomi.com/software/316.html
几大互联网公司的数据库中间件
时间: 2024-12-31 06:45:52
几大互联网公司的数据库中间件的相关文章
开源数据库中间件kingshard横空出世
kingshard简介 kingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作:能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容. kingshard的性能大约是直连MySQL性能的80%以上. 主要功能: 读写分离. 跨节点分表. 支持透明的MySQL连接池,不必每次新建连接. 支持客户端IP访问控制. 平滑上线DB或下线DB,前端应用无感知. 支持多个slave,slave之间通
现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门
现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS等操作系统之上. CentOS7
现代Java服务端开发核心技术之数据库中间件MyCAT入门
现代Java服务端开发核心技术之数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 SecureCRT Linux客户端 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS
数据库中间件mycat简单入门
当在项目中mysql数据库成为瓶颈的时候,我们一般会使用主从复制,分库分表的方式来提高数据库的响应速度,比如mysql主从复制,在没有数据库中间件的情况下,我们只能由开发工程师在程序中控制,这对于一个在正在线上运行的项目来说,需要改动的代码量蛮大的,也不方便扩展,比如,我想再添加一台从机,下面进行mycat入门 一.部署步骤详解 (1) 用命令行工具或图形化客户端,连接MYSQL,创建DEMO所用三个分片数据库: CREATE database db1; CREATE database db2;
分布式数据库中间件–(3) Cobar对简单select命令的处理过程
友情提示:非原文链接可能会影响您的阅读体验,欢迎查看原文.(http://blog.geekcome.com) 原文地址:http://blog.geekcome.com/archives/284 在上一篇中介绍了Cobar和client初次建立连接的过程,Cobar监听端口,client发起连接请求,Cobar发送握手数据包,client发送认证数据包最后依据认证的结果Cobar向client发送认证结果. 在认证成功后Cobar会将该连接的回调处理函数由FrontendAuthenticat
数据库中间件汇总对比
1. 什么要用数据库中间件 传统的架构模式就是 应用连接数据库直接对数据进行访问,这种架构特点就是简单方便. 但是随着目前数据量不断的增大我们就遇到了问题: 单个表数据量太大 单个库数据量太大 单台数据量服务器压力很大 读写速度遇到瓶颈 当面临以上问题时,我们会想到的第一种解决方式就是 向上扩展(SCALE UP) ,不断增加硬件性能.这种方式只能暂时解决问题,当业务量不断增长时还是解决不了问题.特别是淘宝,facebook,youtube这种业务成线性,甚至指数级上升的情况 此时我们不得不依赖
数据库中间件
一.数据库相关平台主要解决以下三个方面的问题: 为海量前台数据提供高性能.大容量.高可用性的访问 为数据变更的消费提供准实时的保障 高效的异地数据同步 二.数据库中间件有以下几种: 分布式数据库分表分库 数据增量订阅与消费 数据库同步(全量.增量.跨机房.复制) 跨数据库(数据源)迁移
mysql数据库中间件研究
随着互联网的发展,数据量的不断增大. 单台实例已经远远无法满足业务的需要. 对数据库分库分表的需求不断的增加随之而来的就是数据库中间件的开发. 一. 单台实例主要面临下面几个问题: 1. 数据量太大单台机器无法承载 2. 数据查询效率太低,单表数据达到一定的量业务性能就无法满足 3. 数据库优化上的瓶颈 4. 数据安全的问题,大量数据放置在一台机器如果数据出问题回复周期会特别长,对业务影响太大. 随之而来的就是需要分库分表 但是分库分表就四个字做起来可真没有这么简单. 二. 分库分表面临的
分布式数据库中间件–(2) Cobar与客户端的握手认证
Cobar启动完成,监听特定端口.整个认证的流程图: NIOAcceptor类继承自Thread类,该类的对象会以线程的方式运行,进行连接的监听. NIOAcceptor启动的初始化过程如下: 1 .打开一个selector,获取一个ServerSocketChannel对象,对该对象的socket绑定特定的监听端口,并设置该channel为非阻塞模式,然后想selector注册该channel,绑定感兴趣的事件位OP_ACCEPT. 01 public NIOAcceptor(String n