幾大互聯網公司的數據庫中間件
在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