騰訊云數(shù)據(jù)庫產(chǎn)品矩陣
什么是節(jié)前黃金14天?這段時間,企業(yè)客戶的運營團隊需要做哪些準(zhǔn)備?對此,騰訊云有哪些建議?
胥彪:大多數(shù)團隊會提前2個月開始準(zhǔn)備一次大型活動。但根據(jù)我們經(jīng)驗,節(jié)前14天是團隊做最后梳理的關(guān)鍵時間。在最后14天,公司的活動內(nèi)容基本定型,同時,競品情況、渠道、供應(yīng)商情況、內(nèi)部準(zhǔn)備、以及預(yù)熱效果都已經(jīng)清晰。此時的效果預(yù)估基本準(zhǔn)確,活動開發(fā)和IT設(shè)施可以做到提前準(zhǔn)備到位。
根據(jù)騰訊多年經(jīng)驗,在最后這14天,有了效果、準(zhǔn)備情況和成本綜合評估,更加容易精準(zhǔn)的找到業(yè)務(wù)關(guān)鍵瓶頸的地方。而對大多數(shù)業(yè)務(wù)來講,數(shù)據(jù)庫是比較容易成為瓶頸的點。因此需要我們提前準(zhǔn)備。
準(zhǔn)備過程中,有哪些關(guān)鍵點?進行這些測試時,有哪些注意事項?
胥彪:在最后14天,團隊?wèi)?yīng)該再次做好業(yè)務(wù)系統(tǒng)壓測,并聯(lián)合開發(fā)團隊分析問題并解決。譬如,在壓測過程中,建議高于預(yù)估值20%~100%的量進行壓測,以判斷數(shù)據(jù)庫在峰值時的承載能力。
一般來說,通過完善的測試,業(yè)務(wù)系統(tǒng)會暴露一些問題。此時,企業(yè)還有時間,設(shè)計一些快速簡單的優(yōu)化策略,并做好災(zāi)難時的故障預(yù)案和演練,以保障順利的完成既定目標(biāo)。
上述準(zhǔn)備工作中,最容易出現(xiàn)的問題有哪些?
胥彪:為什么說數(shù)據(jù)庫比較容易成為瓶頸,我們團隊專家業(yè)務(wù)架構(gòu)師祝海強做過專門的分享:
最后準(zhǔn)備階段,數(shù)據(jù)庫通常會發(fā)現(xiàn)這幾個問題:
最后,還需要考慮到,故障無法避免的情況下,如何減少損失。
春節(jié)活動期間瞬時訪問峰值過大是常事兒,騰訊云建議如何應(yīng)對措施?
祝海強:春節(jié)活動前,一般我們需要配合業(yè)務(wù)做壓力預(yù)估,以及對應(yīng)的壓力測試,數(shù)據(jù)庫層以MySQL為例,可以使用tcpdump、pt-digest-query的獲取SQL訪問情況(例如top10,讀寫比等),根據(jù)不同的壓力場景制定不同的優(yōu)化方案,一般分架構(gòu)優(yōu)化、SQL優(yōu)化、內(nèi)核參數(shù)優(yōu)化、配置升級、過載保護、異地災(zāi)備等:
架構(gòu)優(yōu)化之緩存使用:在數(shù)據(jù)庫前端增加或擴容讀寫Cache層(如redis),將訪問請求緩存下來,組件讀寫,當(dāng)然普通架構(gòu)下的業(yè)務(wù),通常1天可以完成cache。例如,QQ就通過了cache,有效的解決了在春節(jié)零點,全國大量用戶修改說說、群發(fā)祝福消息等業(yè)務(wù)場景的業(yè)務(wù)瓶頸;
架構(gòu)優(yōu)化之讀寫分離:對于一些及時性要求不高的讀邏輯、離線邏輯、報表等服務(wù),可以嘗試使用只讀實例來降低主庫的壓力。例如,騰訊新聞一主多從,通過6個只讀實例來擴展讀,保證在重大新聞時,騰訊新聞仍然能正常運行;
SQL優(yōu)化相關(guān):根據(jù)壓測期間抓包分析出的top10SQL及對應(yīng)的慢查詢,去做相關(guān)的索引優(yōu)化、表結(jié)構(gòu)調(diào)整、子查詢優(yōu)化、隱式轉(zhuǎn)換、分頁優(yōu)化等操作;
內(nèi)核參數(shù)相關(guān):壓測期間可以做一些MySQL性能參數(shù)的調(diào)優(yōu),例如調(diào)整線程池、內(nèi)存、刷盤、open?table等相關(guān)參數(shù),來提高實例的整體吞吐量;
配置升級相關(guān):如果我們上面的工作都做了,系統(tǒng)壓力還是扛不住,我們要做相關(guān)的擴容計劃,來滿足預(yù)估的業(yè)務(wù)訪問量;
過載保護相關(guān):當(dāng)然春節(jié)期間真實訪問量會超過我們前期評估的訪問量,我們還需要有相應(yīng)過載保護的方案;與業(yè)務(wù)方一起制定過載保護措施:增加數(shù)據(jù)庫敏感指標(biāo)監(jiān)控,及時發(fā)現(xiàn)異常,譬如:監(jiān)控活動連接數(shù)超過CPU核心數(shù)告警,及時排查原因,并通過程序啟動提前預(yù)埋過載保護策略;
過載保護策略可能需要業(yè)務(wù)方一起參與:例如在連接失敗或超時情況下會有相應(yīng)提示或引導(dǎo)新用戶到其他流程中,減少用戶重復(fù)請求次數(shù)。在異常情況出現(xiàn)時,采取減少請求數(shù),異步限流降低拆、分享請求速率等措施減輕數(shù)據(jù)庫端壓力。例如QQ紅包,能力業(yè)務(wù)峰值較大時,就會引導(dǎo)用戶休息一會兒,或加入其它策略;
異地災(zāi)備:我們前面的工作做完,基本就能撐住業(yè)務(wù)的壓力了,但是考慮到活動期間系統(tǒng)的容災(zāi)能力,這里也建議企業(yè)根據(jù)自身的業(yè)務(wù)特點來考慮是否需要異地災(zāi)備的方案。
擴容數(shù)據(jù)庫。怎么快速擴容?擴容時需要注意哪些問題?
祝海強:擴容的目的是解決可能的數(shù)據(jù)庫性能和容量瓶頸。擴容時需要注意以下幾點:
合理設(shè)置讀策略,讓備機承擔(dān)讀請求比例(并設(shè)置更靈活的讀策略,確保在數(shù)據(jù)一致性和性能之間的均衡)。
如果故障無法避免,有沒有備選方案將損失降到最低?
祝海強:如果故障無法避免。我們應(yīng)該從兩個角度確保業(yè)務(wù)快速恢復(fù),降低損失:
一是從技術(shù)策略上,需要平衡系統(tǒng)性能和數(shù)據(jù)安全;例如某些涉及交易的核心數(shù)據(jù)庫故障后,數(shù)據(jù)庫需要花大量時間核對數(shù)據(jù)方能重新恢復(fù)數(shù)據(jù)庫,那么如果啟用了數(shù)據(jù)強一致的方案,就可以很容易恢復(fù)業(yè)務(wù)。
二是從管理策略上,讓故障恢復(fù)流程爛熟于心,每個步驟對應(yīng)責(zé)任人,銜接順利,并且做好嚴(yán)格的管控,避免越忙越亂導(dǎo)致誤操作。
如何從容應(yīng)對每一次挑戰(zhàn),騰訊云有沒有結(jié)合自身實踐經(jīng)驗的分享?
根據(jù)業(yè)務(wù)的使用場景,如果業(yè)務(wù)的數(shù)據(jù)庫在云上,可以借用云上數(shù)據(jù)庫彈性擴容縮容的特點,將活動期間數(shù)據(jù)庫的規(guī)格升級到大規(guī)格,活動結(jié)束后,再縮容回來降低成本,這樣可以讓用戶的整體成本實現(xiàn)良性循環(huán)。
與其他公司的同類品相比,騰訊云數(shù)據(jù)庫的優(yōu)勢在哪?
祝海強:首先是穩(wěn)定性,我們對外提供的數(shù)據(jù)庫達到99.95%的高可用性,這個是得到過工信部可信云認(rèn)證的,目前已經(jīng)有大量的企業(yè)運行在騰訊云上。另外通過大量的軟硬件優(yōu)化,在同等配置下,我們的性能只高不低。而且我們支持基于MySQL、PostgreSQL、SQLServer等多種引擎數(shù)據(jù)庫,可以為不同業(yè)務(wù)提供不同的產(chǎn)品。最后,在春節(jié)期間,騰訊云將一如既往的提供7*24h人工值守服務(wù),協(xié)助云上的每個用戶順利過好春節(jié)。
數(shù)據(jù)庫行業(yè),還有哪些難以防范的攻擊,騰訊云有哪些心得?
祝海強:安全是云數(shù)據(jù)庫的重中之重,我們內(nèi)部對安全的要求,一直擺在最優(yōu)先的位置。目前對于數(shù)據(jù)的攻擊層出不窮,有些容易預(yù)防,有些則難以察覺。
而對于數(shù)據(jù)庫本身來講,我們的建議是,對整個業(yè)務(wù)系統(tǒng)和數(shù)據(jù)庫,都要做到6個維度進行數(shù)據(jù)安全保護:攻擊者進不去,非授權(quán)者信息拿不到,竊取保密信息看不懂,系統(tǒng)和信息篡改不了,系統(tǒng)工作癱不了。
攻擊者進不去:至少需要從網(wǎng)絡(luò)層杜絕攻擊者接觸到數(shù)據(jù)庫;例如,應(yīng)該避免通過互聯(lián)網(wǎng)訪問管理數(shù)據(jù)庫,避免未經(jīng)授權(quán)內(nèi)網(wǎng)設(shè)備訪問數(shù)據(jù)庫;如果值班同事需要在家運維,也應(yīng)選擇通過VPN訪問數(shù)據(jù)庫;條件差點兒至少應(yīng)該采用復(fù)雜密碼,使用不常見端口,且僅在必要的時間開放互聯(lián)網(wǎng)訪問數(shù)據(jù)庫。
非授權(quán)者信息拿不到:例如,梳理每一個數(shù)據(jù)庫帳號權(quán)限,最小粒度授權(quán),避免多人多系統(tǒng)共用一套帳號;高權(quán)限帳號必須和物理設(shè)備綁定;移出非必要工具,及時升級數(shù)據(jù)庫,并在數(shù)據(jù)庫前端部署必要的安全設(shè)備。
竊取保密信息看不懂:我們需要讓核心數(shù)據(jù)庫加密,或讓核心字段加密存儲,加密也建議采用雙重加密:例如用戶密碼字段等;另外,加密密鑰需存儲在更安全位置。
系統(tǒng)和信息篡改不了:例如,部署數(shù)據(jù)庫防火墻,數(shù)據(jù)庫安全審計系統(tǒng)都是放篡改的手段;如果節(jié)前來不及,先利用SQL注入漏洞掃描對系統(tǒng)做全面的檢查,保證接口透傳SQL時將特殊字符做轉(zhuǎn)義,避免透過SQL注入篡改數(shù)據(jù)。
系統(tǒng)工作癱不了:從網(wǎng)絡(luò)和業(yè)務(wù)方面,接入防DDOS攻擊系統(tǒng)或接入CDN是減少業(yè)務(wù)癱瘓的有效辦法。
這里的安全命題非常大,不僅僅部署幾臺防火墻,做些技術(shù)準(zhǔn)備就好;更需要每個企業(yè)從管理制度到技術(shù)方案都要嚴(yán)格要求。而騰訊把這些安全相關(guān)的經(jīng)驗沉淀下來,并將整體安全解決方案開放到了騰訊云給企業(yè)來使用,包括防DDoS,放SQL注入,提供數(shù)據(jù)庫安全審計安全特性,也歡迎大家節(jié)后使用。
如何在數(shù)據(jù)庫順利部署海量服務(wù)?
胥彪:互聯(lián)網(wǎng)領(lǐng)域,應(yīng)對海量服務(wù)方案很多,比較成熟和具有性價比的方案是采用分布式數(shù)據(jù)庫。
例如,騰訊云兼容MySQL協(xié)議的分布式數(shù)據(jù)庫TDSQL,支撐了騰訊云90%的計費業(yè)務(wù),兼容PostgreSQL協(xié)議的分布式數(shù)據(jù)庫PostgreSQL-XZ,支撐微信支付的核心模塊。而正是通過內(nèi)部海量業(yè)務(wù)和多年積累,騰訊云分布式數(shù)據(jù)庫也在業(yè)內(nèi)具有良好的口碑。這些在騰訊云官網(wǎng)和網(wǎng)絡(luò)上都有介紹,歡迎大家了解。