日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB 杭州用户会全记录(千寻位置、妈妈帮、阿里云专家等精彩分享)

發(fā)布時間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB 杭州用户会全记录(千寻位置、妈妈帮、阿里云专家等精彩分享) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

MongoDB杭州用戶交流會于2017年3月12日下午在阿里巴巴西溪園區(qū)舉行,吸引了來自全國各地的近300名用戶參與,千尋位置、媽媽幫、阿里云等公司的5位技術(shù)專家分享了MongoDB 的運維管理及使用經(jīng)驗,干貨滿滿。

用戶會進行過程中我已經(jīng)在中文社區(qū)微信總?cè)?、二群里做了實時的圖文直播,這里再做一個重點內(nèi)容匯總,錯過現(xiàn)場的同學可以學習一下,完整的PPT、以及視頻云棲社區(qū)的同學正在整理中,敬請期待。


首先,來自千尋位置的肖應(yīng)軍同學分享了其統(tǒng)一監(jiān)控平臺使用 MongoDB 的實踐經(jīng)驗。

千尋的統(tǒng)一監(jiān)控平臺包含數(shù)據(jù)采集、分發(fā)、存儲、報表、監(jiān)控等多個模塊,其中「存儲」和「報表」的模塊大量使用了mongoDB,分別解決數(shù)據(jù)存儲和數(shù)據(jù)分析的問題。

在數(shù)據(jù)存儲方面,監(jiān)控數(shù)據(jù)擁有固有的特性,比如監(jiān)控的指標不固定,可能臨時增加;數(shù)據(jù)寫入的頻率比較固定,不會有大的波峰/谷流量出現(xiàn);讀取的并發(fā)量比較低,但一次返回的數(shù)據(jù)量比較大,同時隨著數(shù)據(jù)不斷的累計,存儲量會越來越大。而mongoDB能很好的解決上述需求

  • mongoDB 無 schema 的特性,使得數(shù)據(jù)結(jié)構(gòu)擴展起來非常方便
  • mongoDB 高性能以及數(shù)據(jù)壓縮的特性完全能慢滿足數(shù)據(jù)存儲的需求
  • mongoDB 的TTL索引的特性能自動的刪除過期的數(shù)據(jù),確保存儲容量不會無限膨脹

千尋的報表模塊經(jīng)歷了2個階段的發(fā)展,第一階段分析需求比較簡單,直接使用 mongoDB 的aggregation、mapReduce做數(shù)據(jù)分析來完成;而隨著業(yè)務(wù)方越來越多,報表的維度越來越細,開始使用spark(通過mongoDB spark connector)、阿里云EMR等產(chǎn)品配合mongoDB做數(shù)據(jù)分析,效率更高,并且能滿足復雜查詢分析的需求。

最后,千尋的同學分析了使用 mongoDB 過程中積累的經(jīng)驗

  • 生產(chǎn)環(huán)境推薦「1主2次」的配置,保證服務(wù)高可用、數(shù)據(jù)高可靠 (注:要保證高可用,除了后端要多節(jié)點,還要正確的使用mongoDB driver,以正確的方式連接復制集)
  • 慢查詢導致長時間鎖庫(注:3.x版本wiredtiger引入行級鎖后,這個問題應(yīng)該已經(jīng)不存在)
  • 寫入壓力大可能導致整個庫慢 (注:尤其是備庫的讀會受影響,參考MongoDB Secondary 延時高(同步鎖)問題分析,但數(shù)據(jù)庫壓力太大說明資源已經(jīng)不足了,應(yīng)該擴容了)
  • 建索引時,盡量指定{background: true}選項,后臺建索引,避免鎖庫影響業(yè)務(wù)。
  • mongoshell能直接執(zhí)行js腳本,能極大的方便集群管理
  • 使用TTL索引時,索引的字段必須為時間戳字段(注:官方文檔有詳細介紹)
  • 寫入時指定需要的writeConcern級別,推薦{w: 1} (注:3.x的版本里{w: 1}是默認的writeConcern級別,是可靠性與性能的折中選擇)
  • 自建mongoDB 全部遷移 到 mongoDB云數(shù)據(jù)庫服務(wù),極大的降低了運維管理成本。(注:作為 mongoDB 云數(shù)據(jù)庫的開發(fā)者,能得到客戶的肯定,感到灰常開心),下面是個廣告鏈接,不感興趣的請直接跳過

云數(shù)據(jù)庫 MongoDB 版 基于飛天分布式系統(tǒng)和高性能存儲,提供三節(jié)點副本集的高可用架構(gòu),容災(zāi)切換,故障遷移完全透明化。并提供專業(yè)的數(shù)據(jù)庫在線擴容、備份回滾、性能優(yōu)化等解決方案。 了解更多

接下來阿里云的技術(shù)專家明儼深度解析了mongoDB sharding 備份相關(guān)的技術(shù)。

mongoDB sharding 解決了寫入能力、存儲容量擴展的問題,引入了 mongos 用于請求路由,引入 config server 存儲sharding 集群的元數(shù)據(jù),整個架構(gòu)相比復制集更加復雜。


sharding 的備份因為「外部修改」以及「內(nèi)部數(shù)據(jù)遷移」的影響,使得針對 sharding 集群的備份很難對應(yīng)都一個確定的時間點。

傳統(tǒng)的解決方案是整個集群停止寫操作(注:停寫的方式包括業(yè)務(wù)停寫,或?qū)econdary調(diào)用fsyncLock,或?qū)econdary節(jié)點移除),然后對所有shard、config server的數(shù)據(jù)進行備份,這樣的確能回復到一個確定的時間點,但代價很大。

阿里云 MongoDB 數(shù)據(jù)庫針對sharding備份的解決方案是

  • 每個 shard 通過 「定期全量備份 + 持續(xù)抓取oplog」,具備恢復到任意時間點的能力(時間點精確到秒級別)
  • 通過分析config server的遷移操作記錄,恢復時避開「可能影響數(shù)據(jù)不一致的時間區(qū)間」(通常很短)。




媽媽幫的技術(shù)專家胡興邦介紹了5年來使用 mongoDB 的經(jīng)驗,媽媽幫從2012年就開始全線使用 mongoDB,從2.2(看版本就知道是資深用戶)的版本一路升級到3.2(目前都已升級到3.2的最新版本)。

媽媽幫使用mongoDB一路發(fā)展過來,使用的架構(gòu)也不斷演進,主要經(jīng)歷了4個階段

  • 最早的master-slave架構(gòu) (注:新接觸mongoDB的用戶可能不知道這是個啥東西,這是mongoDB早期支持的一種部署模式,跟MySQL的主從架構(gòu)類似,目前已被復制集替代,不建議使用)
  • 業(yè)務(wù)增長后,使用多組 master-slave 的 mongoDB
  • 多組的mongoDB master-slave 升級為 多組復制集
  • 多組復制集 + mongoDB sharding
  • 媽媽幫最初選擇 mongoDB 主要基于其靈活的文檔模型,以及天生可擴展的架構(gòu),在業(yè)務(wù)發(fā)展的早期能保證業(yè)務(wù)快速迭代開發(fā),在業(yè)務(wù)快速發(fā)展之后,還能橫向擴展。

    在遇到事務(wù)方面的需求時(注:mongoDB目前無法支持多文檔事務(wù),官方有計劃支持),媽媽幫使用了最簡單的方式來應(yīng)對,即「后臺定時修正不一致的數(shù)據(jù)」,其他的備選方案,例如使用消息隊列、二階段提交方式從方案上更加成熟,但實現(xiàn)復雜度更高。

    在sharding方面,媽媽幫也積累了不少經(jīng)驗,建議用戶在使用sharding時,一定要注意shardKey的選擇,并給出了一些建議。

    • 能滿足業(yè)務(wù)場景查詢需求,盡量保證大部分query條件都由shard key,這樣請求只用分發(fā)到后端單個shard就能滿足,性能更高
    • 盡量避免單個shard出現(xiàn)熱點 (注:需要正確理解hash分片 和 range分片 2種方式的優(yōu)劣,做出最適合自己業(yè)務(wù)的選擇)
    • 避免shard key的取值過少,導致單個chunk很大(jumbo chunk)而無法自動遷移
    • 多閱讀官方文檔,sharding-shard-key

    阿里云資深研發(fā)工程師果實介紹阿里云 MongoDB 云數(shù)據(jù)庫高可用的主題,介紹mongoDB云數(shù)據(jù)庫如何實現(xiàn)自動的故障檢測及故障轉(zhuǎn)移。

    阿里云數(shù)據(jù)庫 MongoDB 版 是由3個節(jié)點組成的高可用復制集(目前也已支持sharding形態(tài)),3個分別為Primary、Secondary 和 Hidden,其中Priamry、Secondary節(jié)點提供給用戶讀寫,Hidden節(jié)點對用戶不可見,主要用于實例備份以及保證實例高可用。

    Hidden節(jié)點平時只同步Primary上寫入的數(shù)據(jù),并不對外提供服務(wù),實例的全量及增量備份會在Hidden上進行,做到不影響用戶的業(yè)務(wù)。

    同時,后端管控服務(wù)會不斷的模擬用戶訪問行為來探測實例可用性,當發(fā)現(xiàn)實例有節(jié)點故障時

  • 如果 Hidden 節(jié)點故障(不可恢復的故障,如果機器沒掛,會嘗試先重啟啟動),后端管控會從資源池里選擇一個新的節(jié)點,以Hidden的身份加入復制集,替換原來的Hidden,這個過程對用戶的服務(wù)無影響。
  • 如果 Secondary 節(jié)點故障,會自動將 Hidden 節(jié)點切換為 Secondary,保證用戶訪問 Secondary 節(jié)點不受影響。此時變成了1的狀態(tài),按1的方式繼續(xù)故障轉(zhuǎn)移處理。
  • 如果 Primary 節(jié)點故障,這時復制集會自動選出新的Primary,此時復制集里缺一個Secondary,變成了2的狀態(tài),按2的方式繼續(xù)故障轉(zhuǎn)移處理。
  • 如果出現(xiàn)2臺及以上節(jié)點故障,根據(jù) MongoDB 多數(shù)派的選舉原則,是無法選出Primary的,這時實例會進入只讀狀態(tài),需要人工介入恢復,但這種場景極少出現(xiàn)。(注:這里也可以reconfig一下,讓復制集變成單節(jié)點運行繼續(xù)服務(wù)讀寫,但考慮到用戶數(shù)據(jù)的可靠性,目前并沒有使用這個方案)

    除了故障時的處理,對于計劃中的機器維修、下線,則需要對機器上所有的實例,先將該節(jié)點切換為Hidden角色,然后針對所有的Hidden節(jié)點按上述1的流程處理,用新的節(jié)點替換,當節(jié)點上沒有任何實例數(shù)據(jù)時,就可以安全下線了。


    最后出場的是徐雷老師,徐雷老師是《MongoDB實戰(zhàn)》第2版的譯者,徐雷老師的分享風趣幽默,不僅講到MongoDB,還分享了很多架構(gòu)設(shè)計方面的經(jīng)驗,由于當時有事掉線了,沒有獲取到精髓,等PPT出來大家可以好好學習一下。

    在分享里徐老師也提到 MongoDB 目前在國內(nèi)外各大企業(yè)里都有著廣泛的應(yīng)用,充分說明 MongoDB 是一門值得深入投資的技術(shù)。


    最后,預(yù)告一下,MongoDB 中文社區(qū)今年還會繼續(xù)在全國各大城市舉行 MongoDB 用戶的技術(shù)交流會,有強大的社區(qū)做后盾,用戶們可以更放心的使用 MongoDB;而且 MongoDB 本身官方文檔已經(jīng)非常全面了,絕大多數(shù)的問題都能從官方文檔找到答案,建議大家多看官方文檔,用好 MongoDB,為你的業(yè)務(wù)創(chuàng)造最大價值。

    云數(shù)據(jù)庫 MongoDB 版 基于飛天分布式系統(tǒng)和高性能存儲,提供三節(jié)點副本集的高可用架構(gòu),容災(zāi)切換,故障遷移完全透明化。并提供專業(yè)的數(shù)據(jù)庫在線擴容、備份回滾、性能優(yōu)化等解決方案。 了解更多 《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

    總結(jié)

    以上是生活随笔為你收集整理的MongoDB 杭州用户会全记录(千寻位置、妈妈帮、阿里云专家等精彩分享)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。