从实践出发,腾讯云深入解读云端数据库技术
毋庸置疑,數據已經成為信息化社會最關鍵的基礎元素之一。離開數據的支持,大數據、人工智能等技術就都沒有了用武之地,信息化、智能化也就成了空談。而數據庫則是存儲和承載數據的重要場所,因此,其重要性不言而喻。隨著云計算的飛速發展,云端數據庫技術開始被普遍應用。云端數據庫是在云計算的大背景下發展起來的一種新興的共享基礎架構的方法,它極大地增強了數據庫的存儲能力,消除了人員、硬件、軟件的重復配置,讓軟、硬件升級變得更加容易,而且具有高可擴展性、高可用性、采用多租形式和支持資源有效分發等特點??梢哉f,掌握云端數據庫技術將是現在以致未來,數據庫技術人員所必備的技能。
10月27日,為了幫助數據庫技術人員能夠更好的掌握云端數據庫技術,騰訊云攜手中國專業的IT技術社區CSDN在深圳市騰訊大廈2樓多功能廳舉辦“賦能業務創新-云數據庫最佳應用實踐”沙龍,以云端數據庫具體的應用實踐,為與會的眾多數據庫技術人員分享了包括如何設計出高可用的MySQL系統,解讀最流行的Redis緩存類數據庫在云端的技術運用以及Elassticsearch調優在內的應用實踐,并深度結合小程序和珍愛網在利用騰訊云云數據庫過程中的實踐經驗,介紹如何在降低開發與運維成本的情況下,打造爆款應用程序。
? ? ?
騰訊高級工程師王甲坤首先為擠滿整個會場的觀眾介紹了如何設計高可用的MySQL系統,王甲坤認為,高可用的關鍵指標是RPO和RTO,而設計高可用的MySQL系統,通常有三種模式:
模式一,Shared Everthting方式:
基于單機存儲的模式,一般是針對單個主機,完全透明共享CPU/MEMORY/IO,并行處理能力是較差的。
模式二,Shared Disk方式:
基于共享存儲的模式,各個處理單元使用自己的私有CPU和Memory,共享磁盤系統。典型的代表Oracle Rac,它是數據共享,可通過增加節點來提高并行處理的能力,擴展能力較好。
模式三,Shared Nothing方式:
基于數據復制的模式,各個處理單元都有自己私有的CPU/內存/硬盤等,不存在共享資源,類似于MPP(大規模并行處理)模式,各處理單元之間通過協議通信,并行處理和擴展能力更好。
? ? ?
對于基礎設施的高可用,通常采用同城雙活、兩地三中心等方式,而對于MySQL系統的高可用,首先備份是最基礎最保底的保障,建議必須保留。
MySQL備份分為邏輯備份、物理備份和快照三類。騰訊云主要采用基于xtrabackup開發的實現可并行備份加流式壓縮的物理備份,成功率與速度都比較高。另外,騰訊云MySQL基礎版,架構于CVM和CBS之上,支持快照備份功能。其次,基于數據復制模式是MySQL高可用的常見熱備方案,通過MySQL復制協議和故障自助發現與轉移來實現數據在節點間的一致性。 騰訊云MySQL先支持最多掛載5個只讀實例,來滿足讀寫分離的場景。
王甲坤還介紹了復制相關的Binlog知識,主從復制的大體流程,以及三種復制方式:異步、半同步、強同步。而對于在復制中SQL線程的瓶頸,通過各個版本MySQL的并行復制功能也能得到解決。但DRBD(Distributed Replicated Block Device),這款基于塊設備級在遠程服務器直接同步和鏡像數據的工具則是MySQL官方文檔手冊中作為推薦的高可用的方案之一。
? ? ?
王甲坤提到,由于MySQL并沒有提供故障轉移功能,一般需要借助第三方工具進行故障恢復。業界普遍采用的方案是Keepalived、MMM和MHA,但都有一定的缺點,而騰訊云用的是自己實踐的一套故障檢測,不存在單點的問題,能做到故障檢測恢復到30秒鐘以內,大大提高了MySQL的高可用。王甲坤最后還介紹了保證PXC、 MGC、MGR等另外三種MySQL高可用架構。
騰訊云云數據庫Redis產品負責人鄒鵬針對大規模Redis集群架構設計進行了講解,他表示,Redis的使命就是更快更簡單,遵循這個使命的Redis數據庫的排名已經超過了ES了,位列第七。Redis的特點,第一是快,可以達到單核10W QPS,第二是in-memory cache,即Redis不用建表。鄒鵬認為,Redis主要場景還是在于緩存,如果拋開游戲的場景,80%的場景都是緩存,所以它還是緩存數據庫。
鄒鵬接著介紹了騰訊云基于社區4.0版本+自研打造的Redis4.0 Cluster分布式數據庫。Redis官方的Cluster具有兩個特征:Sharding以及自治管理。而騰訊認為Redis Cluster一定要做一個Proxy方案,第一源生集群版必須有一個智能客戶端支持,這是因為智能客戶端支持有限,無法直接遷移到集群版,而客戶端需要感知后端架構,并進行網絡流量隔離,承載更豐富的功能,減少對Redis代碼的入侵,而如果沒有代理這些都不容易實現。
騰訊云采用的Smart Proxy 方案,后端是官方源生的Cluster,完全是自治的版本,并進行了一些優化。前端的智能客戶端會完成代理轉發,做大量定制化監控以及數據、節點的選擇判斷的情況,再往前面就是LB,把所有細節都屏蔽到了后端。
? ? ?
在數據遷移方面,針對大Key和熱Key的遷移難題,騰訊云通過采用訪問監控、Key分析、指標監控、慢查詢、告警配置、流量隔離等手段充分發揮Proxy的作用,從而解決了數據遷移中大Key和熱Key的問題,最終的架構如圖所示。
? ? ? ?
? ? ?
鄒鵬還介紹了騰訊云CKV,它是一種原生分布式的集群解決方案,突破單線程,時延只有0.2毫秒,但可以使內存使用率提升15~25%。
騰訊云產品經理李曉慧以MongoDB在小游戲中的實踐應用,分享了MongoDB在小游戲開發方面為開發者帶來的便利。李曉慧表示,游戲開發中一個最主要的特點是需求變化非???#xff0c;因為在游戲和開發不同的階段會加入一些新的元素黏住用戶,像一種道具的場景,就需要在游戲上線的不同階段加載不同的道具,用傳統的關系型數據庫則需要對表結構進行修改的DDL操作,而MongoDB不需要改變表結構,這對開發者是非常友好的。
李曉慧強調,現在大多數游戲都會添加社交元素增強用戶的活躍度,黏住用戶。騰訊云提供了地理位置索引以及配套的API,不需要在業務層操作,就可獲得數據庫層的支持。對于海量數據,騰訊云提供了分片的功能,例如游戲開始上線時,其實并不知道業務上線需要的數據量。而當游戲上線后期,由于數據量的增多,如果用關系型數據庫的話,就避免不了進行分部分表擴容,而MongoDB提供了分片集群,可以在不影響業務的同時進行水平的擴容,這對運維來說是非常好的解決方案。至于運營分析,MongoDB源生即支持,開發者可以直接套用。更重要的是,MongoDB支持JavaScript全棧MERN、MEAN。因此,MongoDB特別適合游戲開發場景。
李曉慧還介紹了如何優化MongoDB的連接,她表示,首先,騰訊云對MongoDB的連接進行了優化。MongoDB的連接其實分為兩部分,第一部分是Mongos對前端的連接,第二部分是Mongos對后端的連接,有兩個關鍵參數,最小連接數參數minConnections 和連接IdleTime參數refreshRequirement的設置對于MongoDB的連接效率非常重要,針對這兩個參數,騰訊云為開發者提供了可計算的公式,并建議對于refreshRequirement的參數設置至少是包含兩個連接峰值的頭。
其次,騰訊云MongoDB通過讀寫分離策略減少了慢查詢, 從而將MongoDB的讀延時從官方版的85毫秒左右縮短到10毫秒左右,效率提升了將近9倍。
?
? ?
第三,通過分片群集,提供靈活可擴展的特性,從而大大減輕了運維人員的負擔。
? ?
?
第四,對于令游戲運維非常頭疼的庫表回檔方面, 騰訊云MongoDB是唯一提供庫表回檔的,而且可以支持細化到一定級別,對運維人員是非常方便的功能。
第五,在監控方面,騰訊云MongoDB也是唯一支持表級監控,表級監控內容比較分散,有CRUD操作監控,請求時延監控,包括10毫秒到50毫秒,50毫秒到100毫秒,以及超過100毫秒三種力度。請求個數也有監控,還有比較重要的容量和記錄監控,騰訊云MongoDB都支持。
針對目前火熱的小程序開發,李曉慧介紹了騰訊云的TCB小游戲解決方案,該方案可以為開發者提供完整的云端流程,弱化后端和運維概念,無需開發者搭建后端服務。開發者可以直接使用小程序的 JS-API 進行核心業務開發,即可實現小游戲快速上線和迭代,還可以根據自身需求創建多個環境,以用于開發、測試及生產等多種場景,并且每個環境的資源是獨立且相互隔離的。這種方案特別適合個人開發者、初創團隊,對于成熟團隊的項目的話,可以立即使用。
騰訊高級工程師陳曦則分享了Elasticsearch的調優經驗,陳曦首先介紹了Elasticsearch的基本原理。Elasticsearch是一個搜索引擎,它具有高性能、高可靠、易管理、易使用的特點,有很強大的綜合分析能力,可以通過腳本進行復雜的計算。Elastic Stack是集數據采集、清洗、存儲、可視化為一體的完整解決方案。ES有比較廣泛的應用領域,主要的應用場景是日志分析、數據分析統計,還有全文檢索,功能比較強大。Elasticsearch的數據模型如下圖所示。
陳曦表示,Elasticsearch的調優主要基于三個層面:降低存儲成本、提升集群穩定性和提高集群性能。
在降低成本方面,也包括兩方面,一方面是對字段存儲的優化,另一方面是對字符串字段的優化,在對倒排索引、行存、列存三個字段的存儲中,對于CPU監控這種場景,可以通過關閉索引字段來進行存儲優化,對于統計分析場景,只需列存即可。而對于日志類場景,則僅需行存即可。通過這樣的優化,行存的成本能夠降低40%左右。
? ? ?
對于字符串字段的優化,也是分兩部分,text和keyword,text可以做分詞,然后對每個詞都可以高排索引,拿一個詞可以搜到一整段話。如果僅僅是想把文本存進去并且取出來的話,后面都是可以去掉的。至于keywork,可以模糊匹配,但不能拿一個詞搜索整段話,由于它不需要做分詞,所以速度會比較快。
要提升集群穩定性方面,最有效的方法就是控制index的分片數,陳曦介紹,一個index是由多個shard組成的,一個index有三個shard,分布在不同節點上,一個請求寫幾百個幾千個文檔在里面,當請求到達ES某個節點的時候,會計算對于幾千個文檔,分別屬于哪個shard,然后這個時候會放到BulkQueue存儲中。BulkQueue的默認值是100,如果shard數量過大BulkQueue就很容易被填滿,shard數值過小的話,就無法充分利用節點資源,陳曦給出的建議是100GB以下的index設置3-5個shard,但這并不是可以適用每個場景,具體還要看業務的實際情況。
在提升集群性能方面,分為四方面,一方面是控制index的副本數量,另一個是優化持久性參數,第三方面是寫入方式優化,第四方面是查詢優化。
而騰訊云是通過云管平臺、降低存儲成本、提升集群穩定性和提高集群性能等四方面對ES進行優化。
首先,騰訊云的云管平臺是一套自動化運維系統、它本身可以預裝一些插件,包括中文分詞插件、SQL插件、數據導出插件等,系統會自動按照一定時間間隔創建index,而不需關心有多少index。此外,還通過Kibana、跨機房容災、Dedicated Master等方式,提升集群的穩定性。
? ?
?
在降低存儲成本方面,通過倒排索引內存優化、冷熱分離對存儲成本進行優化。實際上,在查詢過程中,有一個詞典和一個倒排表,ES為了加速查詢過程,把詞典華分成一個個的block,前綴相同的詞可以放到block里面,前綴相同的前綴數會指向block,而實際上,在這個小范圍內一個匹配詞典就可以了,這樣就可以快速加大性能。
? ? ?
冷熱分離是指,ES本身可以對于每個NODE加一些屬性在里面,通過ES的一個命令可以強制把一個表所有數據搬遷到指定的一個屬性的節點上面,所以在集體上架的時候可以同時上兩個,用戶可以在WEB界面配置哪類的index多久之后降低使用成本,騰訊云后臺就有這樣一個調速器,會發送命令,從而降低用戶的使用成本。
? ? ?
在提升集群穩定方面,通過集群均衡策略優化、自研限流功能,使得集群穩定性得到較大的提升。 集群均衡策略是指在通常情況下隨著業務的增長,ES默認會把大的Shard放在小的節點上面,新增的shard讀寫壓力就會比較大,這種情況下就會造成單點過熱的問題,騰訊云對此進行了優化,去掉重復上報的shardfailed信息,從而大大降低了Master的壓力。
? ? ?
自研限流功能主要針對ES本身對于JVM判斷不準,在寫入量大的情況下會導致OOM的情況而推出的,為此,騰訊云做了一個曲線限流的功能。通過這個優化,有效避免了OOM情況的出現。
? ? ?
在查詢優化方面,騰訊云ES系統可以根據查詢到的數據量進行預估,超過一定量就不做緩存,從而避免了加載過大緩存,拖慢查詢速度的問題。
? ? ?
來自珍愛網的DBA周耀榮最后一個登場,他分享了珍愛網云數據庫的使用經驗,周耀榮首先談了自己對于云數據庫與DBA之間關系的看法,并以幾個實例說明了云數據庫的作用,他認為, 云上提供的服務就是重復性高的工作的標準化和自動化。
對于DBA來說,周耀榮認為應該考慮六方面的問題,第一是從業務整體運維的角度,就是說當購買云服務的時候差異性體現在哪里,需要考慮清楚。第二是異常的處理,就是DBA需要具有異常處理的能力,這樣才能在云數據庫時代仍然有競爭力。第三是性能容量管理,DBA要從整個業務的視角,對性能容量進行管理。第四是故障透視能力,故障的透視能力,是作為DBA管理員很重要的能力。第五,架構規劃,比如高可用架構,要怎么拆分,容災如何考慮,這都是需要DBA考慮的問題。第六,SQL上線審核。當公司業務發生變更的時候,怎么把控上線的風險會不會對數據造成誤刪除,這些都是需要DBA考慮的。
周耀榮總結到,規劃類的、優化類、主動管理類的工作,在未來比較長的一段時間內還是需要DBA解決的,因此,DBA大可不必擔心失業問題。
周耀榮最后給到場的觀眾分享了珍愛網目前在數據庫方面正在做和計劃要做的事情,談到了涉及的相關技術,并為到場的觀眾展示了珍愛網在數據庫建設方面的成果。
? ? ? ?
? ? ?
最后,沙龍活動在一片熱烈的掌聲中落下了帷幕,而騰訊云+社區技術沙龍活動將會繼續延續下去,而下一站將是,對此感興趣的朋友們可千萬不要錯過啊!
1.微信群:
添加小編微信:color_ld,備注“進群+姓名+公司職位”即可,加入【云計算學習交流群】,和志同道合的朋友們共同打卡學習!
2.征稿:
投稿郵箱:liudan@csdn.net;微信號:color_ld。請備注投稿+姓名+公司職位。
推薦閱讀
技術爭鳴!七大主題報告,四大技術專題,AI開發者大會首日議程全回顧
AR熱度不在??NO!?三星開發者大會將聚焦AR
人工智能進行時:人類的未來與未來的人類
為了釋放AI在邊緣計算的力量 英特爾又出手了
全面梳理百度世界大會,李彥宏又新吹了幾個牛!
騰訊將創辦騰訊云啟商學院,馬化騰任榮譽院長
扎堆出海的抖音、今日頭條、UC 頭條們后來怎么樣了?
創業者老板被程序員「割」了韭菜?
唇語識別技術的開源教程,聽不見聲音我也能知道你說什么!
月薪30k+項目分紅,哥大教授帶你探索“區塊鏈+AI”,抓緊時間投簡歷吧!手慢無
她說:真的,沒事別嫁程序員
掃描以下二維碼即可參與“2018 年?CSDN?軟件開發者大調查活動”!我們還為你準備了精美的禮品,華為 nova3 智能手機、小愛智能音箱、CSDN 背包、CSDN 定制T恤、數百本技術圖書等你來拿!參與即有機會獲贈,還等什么,快來試試吧!
↓↓↓??點擊【閱讀原文】查看「CSDN云計算」往期精彩內容
總結
以上是生活随笔為你收集整理的从实践出发,腾讯云深入解读云端数据库技术的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业年金提取 想辞职的时候就领走能行吗
- 下一篇: mohro是哪个国家的钱