java多用戶商城系統(tǒng)架構篇——分庫分表

    目前公司數(shù)據(jù)量已經(jīng)上來,單表較大已經(jīng)5千萬,之前使用分區(qū)表,用起來有很多需要注意的地方,以及坑等。
    所以就在年后準備做分庫分表,篩選了N多中間件、框架,似乎都不滿足。主要在以下幾點。
    比如用阿里的myCat,需要學習、研究,因為我們目前有點急,需要安排人去研究,而且需要深入研究,結果就是搞了幾天沒啥頭緒。但是原理就是做代理,這個了解透了。
    在看當當網(wǎng)提供的sharding-jdbc分庫分表案例,也是同樣問題,沒那么多時間研究,而且這幾家提供的東西,居然官網(wǎng)都是英文/中文,中文文檔也是按照老外風格寫,盡量給你增加門檻?。?!

    于是乎就萌生自己寫分庫分表。
    廢話不多說。
    1、首先是老數(shù)據(jù)問題,這個是網(wǎng)上所有文章沒有提到的,沒有提到這個問題的文章,可以說**沒玩過分庫分表。
    對于5000萬的數(shù)據(jù)量,做切分,一張表控制在100萬,你手動去復制粘貼???,每隔一段時間手動建庫???
    據(jù)說當當是手動,應該是寫的程序手動的。。。。傷不傷???
    其實很簡單,我用JDBC寫的,查到老庫所有表名,create table newTableName like oldTableName;這樣可以把表結構、索引結構都拷貝過來到新庫,但是不會拷貝數(shù)據(jù),網(wǎng)上有另一條SQL,我想大家已經(jīng)玩過了,那個索引、主鍵不會拷貝。。
    2、如何做數(shù)據(jù)分散存儲
    很多人肯定看過文章,ID取模呀。那如果數(shù)據(jù)量又達到瓶頸咋搞?阿里的單表12年就已經(jīng)100億了。。。。
    所以說ID取模并不是僅僅這么簡單,還需要數(shù)據(jù)量控制,我這里有個較好辦法,其實就是簡單數(shù)據(jù)量控制。
    達到100萬就Next,ID是自增的,出去100萬,余數(shù)為0則Next。當然ID取模這么流行的方法都是阿里、58、京東這些架構師出來講培訓說的,其實你實際去操作,有其他N多方法,沒有必要照搬。。。。
    3、多表、關聯(lián)關系如何建立?
    你怎么知道User表包含哪些Order表呢?,如果一個user出的訂單既有在N庫,也有在N+1、N+2庫里面呢?
    通過user_id查詢order。一般單庫做關聯(lián)查詢,其實多庫也可以,只是索引會失效而已了。然后2千萬*5千萬掃描。。。。
    我看過唯品會的解決方案,他們是Order_id中間一段是user_id,**不,很**。。。。
    但是,我們已經(jīng)有5000萬數(shù)據(jù)了,人家唯品會有的是錢,拉500人團隊搞唄。。。2個月搞完。
    我們幾個人?就是我一個人。。。。傷不傷吧。。
    所以這個方案不行,唯品會文章中丟棄的一個方案就是建立中間對應關系。
    就是user_id和order_聯(lián)合加上order_id所在庫。他們丟棄的原因是中間表會巨大,確實。
    但是如果放在redis緩存中就沒有這個問題了,redis緩存只要空間足夠大,性能2~3個億沒問題。
    redis緩存還可以做切分啊,也算是**符合我們這種小公司了吧。

    4、如何取數(shù)據(jù)?
    對于一對一查詢,以前關聯(lián)查詢、子查詢,現(xiàn)在都用子查詢,分為兩次查詢。這個時間上只是毫秒差異。不用聯(lián)合多庫查詢。(題外話,做互聯(lián)網(wǎng)公司項目,幾乎不會需要用外鍵、關聯(lián)查詢的。。。一般都是分多次查詢,或者通過緩存系統(tǒng)拿空間換時間,怎么玩?比如微博一個用戶發(fā)文章,不做文章表,所有文章放在user的下面,每個user下面都是自己的,那么查詢起來就是查user就OK。)
    對于一對多查詢,就是2里面提到的,已經(jīng)知道庫了,那么具體查詢方案我們還是多次查詢。
    對于多對多,較簡單了,中間關系建立好,比以前多對多查詢較簡單了。這會還是一對多查詢。

    以上就是我們對于分庫分表的解決方案。其實分庫分表非常簡單。我一個人搞了一個月吧。。。

    如果你需要電商,B2B2C商城系統(tǒng),并且支持分布式、分庫分表,可以聯(lián)系我探討。
    其實有N多解決方案,較好是團隊討論,較方便溝通,文章也不能全部說出來,我寫的過程遇到過N多有意思的事情以及各個框架急需提供對于擴展大數(shù)據(jù)量的問題。。。



    無錫紅豬網(wǎng)絡科技有限公司專注于java,b2b2c,多用戶商城等

  • 詞條

    詞條說明

  • java 商城系統(tǒng)架構之*三篇——集群架構搭建

    其實集群說起來是很簡單的,無非就是server部署在多臺機器上,DB、session、文件等在做個機器、CDN加速就OK了。但是實際上需要做的事還有非常多,并且在過程中需要填非常多的坑。這里說一個很多人都不太了解的,就是虛擬IP,比如你訪問,多少年還是那個IP,并且?guī)缀鯖]有掛過。這個IP就是虛擬IP,用戶不會實際訪問這臺服務器,這臺服務器是運營商提供的,用戶訪問后會通過各種技術手

  • java多用戶商城系統(tǒng)架構之**篇——總的介紹

    較近公司要開發(fā)商城,讓我多方咨詢,最后看了很多,要不就是代碼、表字段注釋不全,要不就是bug多,要么就是文檔缺少,最后決定自己開發(fā)一套商城。下面是開發(fā)的一些心得體會,權且記錄下來,給自己做個記錄把。之**直都是在從事電商相關和互聯(lián)網(wǎng)金融開發(fā),處理過億級數(shù)據(jù)量,所以被目前這家公司看重。由于Java是開源的,較近幾年Hadoop等開源產品越來越成熟,而且是基于Java的,所以較終選擇Java最后后臺開

  • B2B2C商城系統(tǒng)解決方案,多種模式讓平臺運營較靈活多變

    摘要: RedPigMall B2B2C綜合商城系統(tǒng)是專為企業(yè)級客戶研發(fā)支持多供貨商、多商戶店鋪入駐的綜合商城平臺,集團購、電商零售、批發(fā)于一體,提供給供應商商品售賣服務,對用戶提供購買服務,支持運營、聯(lián)營、招商等多種運營模式,讓企業(yè)低成本快速構建在線商城,開啟電子商... RedPigMall B2B2C綜合商城系統(tǒng)是專為企業(yè)級客戶研發(fā)支持多供貨商、多商戶店鋪入駐的綜合商城平臺,集團購、電商零售

  • (十一)Java springcloud B2B2C o2o多用戶商城 springcloud架構- - SSO單點登錄之OAuth2.0登錄流程(2)

    之前寫了很多關于spring cloud的文章,今天我們對OAuth2.0的整合方式做一下筆記,首先我從網(wǎng)上找了一些關于OAuth2.0的一些基礎知識點,幫助大家回顧一下知識點:?一、oauth中的角色client:調用資源服務器API的應用Oauth 2.0 Provider:包括Authorization Server和Resource Server(1)Authorization

聯(lián)系方式 聯(lián)系我時,請告知來自八方資源網(wǎng)!

公司名: 無錫紅豬網(wǎng)絡科技有限公司

聯(lián)系人: 周慶達

電 話:

手 機: 17503009512

微 信: 17503009512

地 址: 江蘇無錫濱湖區(qū)222號

郵 編: 123123

網(wǎng) 址: redpigmall.b2b168.com

八方資源網(wǎng)提醒您:
1、本信息由八方資源網(wǎng)用戶發(fā)布,八方資源網(wǎng)不介入任何交易過程,請自行甄別其真實性及合法性;
2、跟進信息之前,請仔細核驗對方資質,所有預付定金或付款至個人賬戶的行為,均存在詐騙風險,請?zhí)岣呔瑁?
    聯(lián)系方式

公司名: 無錫紅豬網(wǎng)絡科技有限公司

聯(lián)系人: 周慶達

手 機: 17503009512

電 話:

地 址: 江蘇無錫濱湖區(qū)222號

郵 編: 123123

網(wǎng) 址: redpigmall.b2b168.com

    相關企業(yè)
    商家產品系列
  • 產品推薦
  • 資訊推薦
關于八方 | 八方幣 | 招商合作 | 網(wǎng)站地圖 | 免費注冊 | 一元廣告 | 友情鏈接 | 聯(lián)系我們 | 八方業(yè)務| 匯款方式 | 商務洽談室 | 投訴舉報
粵ICP備10089450號-8 - 經(jīng)營許可證編號:粵B2-20130562 軟件企業(yè)認定:深R-2013-2017 軟件產品登記:深DGY-2013-3594
著作權登記:2013SR134025
Copyright ? 2004 - 2024 b2b168.com All Rights Reserved