日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

云數(shù)據(jù)庫 Tair(兼容 Redis)開發(fā)運維規(guī)范

云數(shù)據(jù)庫 Tair(兼容 Redis)擁有極強的性能,阿里云結(jié)合多年的運維經(jīng)驗,從業(yè)務(wù)部署、Key的設(shè)計、SDK、命令、運維管理等維度展示云數(shù)據(jù)庫 Tair(兼容 Redis)開發(fā)運維規(guī)范,為您設(shè)計高效的業(yè)務(wù)系統(tǒng)提供參考,幫助您充分發(fā)揮Tair的能力。

了解Tair性能邊界

圖 1. Tair性能邊界Redis性能邊界

資源類別

說明

計算資源

使用通配符、Lua并發(fā)、1對多的PUBSUB、熱點Key等會大量消耗計算資源,集群架構(gòu)下還會導(dǎo)致訪問傾斜,無法有效利用所有數(shù)據(jù)分片。

存儲資源

Streaming慢消費、大Key等會占用大量存儲資源,集群架構(gòu)下還會導(dǎo)致數(shù)據(jù)傾斜,無法有效利用所有數(shù)據(jù)分片。

網(wǎng)絡(luò)資源

掃描全庫(KEYS命令)、大Value、大Key的范圍查詢(如HGETALL命令)等會消耗大量的網(wǎng)絡(luò)資源,且極易引發(fā)線程阻塞。

重要

Tair的高并發(fā)能力不等同于高吞吐能力,例如將大Value存在Tair里以期望提升訪問性能,此類場景往往不會有特別大的收益,反而會影響Tair整體的服務(wù)能力。

集群架構(gòu)下,熱點Key、大Key或大Value等還會引發(fā) 存儲或訪問傾斜 ,在生產(chǎn)環(huán)境中,您應(yīng)當避免觸達Tair的性能邊界。

業(yè)務(wù)部署規(guī)范

重要程度

規(guī)范

說明

★★★★★

確定使用場景為 高速緩存內(nèi)存數(shù)據(jù)庫

  • 高速緩存:建議關(guān)閉AOF以降低開銷,同時,由于數(shù)據(jù)可能會被淘汰,業(yè)務(wù)設(shè)計上避免強依賴緩存中的數(shù)據(jù)。例如Tair被寫滿后,會觸發(fā)數(shù)據(jù)淘汰策略以挪移出空間給新的數(shù)據(jù)寫入,根據(jù)業(yè)務(wù)的寫入量會相應(yīng)地導(dǎo)致延遲升高。

    重要

    如需使用通過數(shù)據(jù)閃回按時間點恢復(fù)數(shù)據(jù)功能,AOF功能需保持開啟狀態(tài)。

  • 內(nèi)存數(shù)據(jù)庫:應(yīng)選購Tair(企業(yè)版)持久內(nèi)存型,支持命令級持久化,同時應(yīng)通過監(jiān)控報警關(guān)注內(nèi)存使用率。具體操作,請參見報警設(shè)置

★★★★★

就近部署業(yè)務(wù),例如將業(yè)務(wù)部署在同一個專有網(wǎng)絡(luò)VPC下的ECS實例中。

Tair具備極強的性能,如果部署位置過遠(例如業(yè)務(wù)服務(wù)器與Tair實例通過公網(wǎng)連接),網(wǎng)絡(luò)延遲將極大影響讀寫性能。

說明

針對多地部署應(yīng)用的場景,您可以通過全球多活功能,借助其提供的跨域復(fù)制(Geo-replication)能力,快速實現(xiàn)數(shù)據(jù)異地災(zāi)備和多活,降低網(wǎng)絡(luò)延遲和業(yè)務(wù)設(shè)計的復(fù)雜度。更多信息,請參見Tair全球多活簡介

★★★★☆

為每個業(yè)務(wù)提供單獨的Tair實例。

避免業(yè)務(wù)混用,尤其需要避免將同一Tair實例同時用作高速緩存和內(nèi)存數(shù)據(jù)庫業(yè)務(wù)。帶來的影響例如針對某個業(yè)務(wù)淘汰策略設(shè)置、產(chǎn)生的慢請求或執(zhí)行FLUSHDB命令影響將擴散至其他業(yè)務(wù)。

★★★★☆

設(shè)置合理的過期淘汰策略。

Tair默認的默認逐出策略為 volatile-lru ,關(guān)于各逐出策略的說明,請參見Redis配置參數(shù)列表

★★★☆☆

合理控制壓測的數(shù)據(jù)和壓測時間。

Tair不會對您壓測的數(shù)據(jù)執(zhí)行自動刪除操作,您需要自行控制壓測數(shù)據(jù)的數(shù)據(jù)量和壓測時間,避免對業(yè)務(wù)造成影響。

Key設(shè)計規(guī)范

重要程度

規(guī)范

說明

★★★★★

設(shè)計合理的Key中Value的大小,推薦小于10 KB。

過大的Value會引發(fā)數(shù)據(jù)傾斜、熱點Key、實例流量或CPU性能被占滿等問題,應(yīng)從設(shè)計源頭上避免此類問題帶來的影響。

★★★★★

設(shè)計合理的Key名稱與長度。

  • Key名稱:

    • 使用可讀字符串作為Key名,如果使用Key名拼接庫、表和字段名時,推薦使用英文冒號(:)分隔。例如project:user:001

    • 在能完整描述業(yè)務(wù)的前提下,盡量簡化Key名的長度,例如username可簡化為u

    • 由于大括號({})為Redis的hash tag語義,如果使用的是集群架構(gòu)的實例,Key名稱需要正確地使用大括號避免 引發(fā)數(shù)據(jù)傾斜 ,更多信息,請參見keys-hash-tags

      說明

      集群架構(gòu)下執(zhí)行同時操作多個Key的命令時(例如RENAME命令),如果被操作的Key未使用hash tag讓其處于相同的數(shù)據(jù)分片,則命令無法正常執(zhí)行。

  • 長度:推薦Key名的長度不超過128字節(jié)(越短越好)。

★★★★★

對于支持子Key的復(fù)雜數(shù)據(jù)結(jié)構(gòu),應(yīng)避免一個Key中包含過多的子Key(推薦低于1,000)。

說明

常見的復(fù)雜數(shù)據(jù)結(jié)構(gòu)例如Hash、Set、Zset、Geo、Stream及Tair(企業(yè)版)特有的exHash、Bloom、TairGIS等。

由于某些命令(例如HGETALL)的時間復(fù)雜度直接與Key中的子Key數(shù)量相關(guān)。如果頻繁執(zhí)行時間復(fù)雜度為O(N)及以上的命令,且Key中的子Key數(shù)量過多容易引發(fā)慢請求、數(shù)據(jù)傾斜或熱點Key問題。

★★★★☆

推薦使用串行化方法將Value轉(zhuǎn)變?yōu)榭勺x的結(jié)構(gòu)。

由于編程語言的字節(jié)碼隨著版本可能會變化,如果存儲裸對象(例如Java Object、C#對象)會導(dǎo)致整個軟件棧升級困難,推薦使用串行化方法將Value變成可讀的結(jié)構(gòu)。

SDK使用規(guī)范

重要程度

規(guī)范

說明

★★★★★

推薦使用JedisPool或者JedisCluster連接實例。

說明

Tair(企業(yè)版)內(nèi)存型實例推薦使用TairJedis客戶端,支持新數(shù)據(jù)結(jié)構(gòu)的封裝類。使用方法,請參見客戶端程序連接Redis

如果使用單連接的方式,一旦遇到單次超時則無法自動恢復(fù)。關(guān)于JedisPool的連接方法,請參見客戶端程序連接RedisJedisPool資源池優(yōu)化JedisCluster

★★★★☆

程序客戶端需要對超時和慢請求做容錯處理。

由于Tair服務(wù)可能因網(wǎng)絡(luò)波動或資源占滿引發(fā)超時或慢請求,您需要在程序客戶端上設(shè)計合理的容錯機制。

★★★★☆

程序客戶端應(yīng)設(shè)置相對寬松的超時重試時間。

如果超時重試時間設(shè)置的非常短(例如200毫秒以下),可能引發(fā)重試風(fēng)暴,極易引發(fā)業(yè)務(wù)層雪崩。更多信息,請參見Redis客戶端重連指南

命令使用規(guī)范

重要程度

規(guī)范

說明

★★★★★

避免執(zhí)行范圍查詢(例如KEYS *),使用多次單點查詢或SCAN命令來獲取延遲優(yōu)勢。

執(zhí)行范圍查詢可能導(dǎo)致服務(wù)發(fā)生抖動、引發(fā)慢請求或產(chǎn)生阻塞。

★★★★★

推薦使用擴展數(shù)據(jù)結(jié)構(gòu)(數(shù)據(jù)結(jié)構(gòu)模塊集成)實現(xiàn)復(fù)雜功能,避免使用Lua腳本。

Lua腳本會占用較多的計算和內(nèi)存資源,且無法被多線程加速,過于復(fù)雜或不合理的Lua腳本可能導(dǎo)致資源被占滿的情況。

★★★★☆

合理使用管道(pipeline)降低鏈路的往返時延RTT(Round-trip time)。

如果有多個操作命令需要被迅速提交至服務(wù)器端,且客戶端不依賴每個操作返回的結(jié)果,那么可以通過管道來作為優(yōu)化性能的批處理工具,注意事項如下:

  • 管道執(zhí)行期間客戶端將獨占與服務(wù)器端的連接,推薦為管道單獨建立一個連接,將其與常規(guī)操作分離。

  • 每個管道應(yīng)包含合理的命令數(shù)量(不超過100個)。

★★★★☆

正確使用Redis命令

使用事務(wù)(Transaction)時,需要注意其限制:

  • 不同于關(guān)系型數(shù)據(jù)庫的事務(wù)功能,Redis的事務(wù)功能不支持回滾(Rollback)。

  • 對于集群架構(gòu)的實例,需要使用hash tag確保命令所要操作的Key都分布在1個Hash槽中,同時還需要避免hash tag帶來的存儲傾斜問題。

  • 避免在Lua腳本中封裝事務(wù)命令,可能因編譯加載消耗較多的計算資源。

★★★★☆

避免使用Redis命令執(zhí)行大量的消息分發(fā)工作。

由于Pub和Sub不支持數(shù)據(jù)持久化,且不支持ACK應(yīng)答機制無法實現(xiàn)數(shù)據(jù)可靠性,當執(zhí)行大量消息分發(fā)工作時(例如訂閱客戶端數(shù)量超過100且Value超過1 KB),訂閱客戶端可能因服務(wù)端資源被占滿而無法接收到數(shù)據(jù)。

說明

為提升性能和均衡性,Tair對Pub和Sub類命令進行了優(yōu)化,集群架構(gòu)下,代理節(jié)點會根據(jù)channel name進行Hash計算,并分配至對應(yīng)數(shù)據(jù)節(jié)點。

運維管理規(guī)范

重要程度

規(guī)范

說明

★★★★★

充分了解不同的實例管理操作帶來的影響。

在對Tair實例執(zhí)行變更配置、重啟等操作時,實例的狀態(tài)將發(fā)生變化并產(chǎn)生某些影響(例如產(chǎn)生秒級的連接閃斷),在操作前您需要充分了解。更多信息,請參見實例狀態(tài)與影響

★★★★★

驗證客戶端程序的差錯處理能力或容災(zāi)邏輯。

Tair支持節(jié)點健康狀態(tài)監(jiān)測,當監(jiān)測到實例中的主節(jié)點不可用時,會自動觸發(fā)主備切換,保障實例的高可用性。在客戶端程序正式上線前,推薦手動觸發(fā)主備切換,可幫助您驗證客戶端程序的差錯處理能力或容災(zāi)邏輯。具體操作,請參見手動執(zhí)行主備切換

★★★★★

禁用高耗時或高風(fēng)險的命令。

生產(chǎn)環(huán)境中,無限制地使用命令可能帶來諸多問題,例如執(zhí)行FLUSHALL會直接清空全部數(shù)據(jù);執(zhí)行KEYS會阻塞Redis服務(wù)。為保障業(yè)務(wù)穩(wěn)定、高效率地運行,您可以根據(jù)實際情況禁用特定的命令,具體操作,請參見禁用高風(fēng)險命令

★★★★☆

及時處理阿里云發(fā)起的計劃內(nèi)運維操作(即待處理事件)

為提供更優(yōu)質(zhì)的服務(wù),持續(xù)提升產(chǎn)品性能和穩(wěn)定性,阿里云會不定期地發(fā)起計劃內(nèi)運維操作(即待處理事件),對部分實例所屬的機器執(zhí)行軟硬件或網(wǎng)絡(luò)換代升級(例如數(shù)據(jù)庫小版本升級)。當您收到來自阿里云的事件通知后,您可以查看本次事件的影響,根據(jù)業(yè)務(wù)需求評估是否需要調(diào)整執(zhí)行時間。更多信息,請參見查看并管理計劃內(nèi)事件

★★★★☆

為核心指標配置監(jiān)控報警,幫助掌握實例運行狀態(tài)。

為CPU使用率、內(nèi)存使用率、帶寬使用率等核心指標配置監(jiān)控報警,實時掌握實例運行狀態(tài)。具體操作,請參見報警設(shè)置

★★★★☆

通過Tair提供的豐富的運維功能,定期檢查實例狀態(tài)或輔助排查資源消耗異常問題。

  • 分析慢日志:幫助您快速找到慢請求問題發(fā)生的位置,定位發(fā)出請求的客戶端IP,為徹底解決超時問題提供可靠的依據(jù)。

  • 查看性能監(jiān)控Tair支持豐富的性能監(jiān)控指標,幫助您掌握Redis服務(wù)的運行狀況和進行問題溯源。

  • 發(fā)起實例診斷:幫助您從性能水位、訪問傾斜情況、慢日志等多方面評估實例的健康狀況,快速定位實例的異常情況。

  • 發(fā)起緩存分析:幫助您快速發(fā)現(xiàn)實例中的大Key,幫助您掌握Key在內(nèi)存中的占用和分布、Key過期時間等信息。

  • 實時Top Key統(tǒng)計:幫助您快速發(fā)現(xiàn)實例中的熱點Key,為進一步的優(yōu)化提供數(shù)據(jù)支持。

★★★☆☆

評估并開啟審計日志功能。

開通審計日志功能后,可記錄寫操作的審計信息,為您提供日志的查詢、在線分析、導(dǎo)出等功能,助您時刻掌握產(chǎn)品安全及性能情況。更多信息,請參見開通審計日志

重要

開通審計日志后,視寫入量或?qū)徲嬃靠赡軙?span id="73c26b4cebpan" outputclass="productName" data-tag="ph" data-ref-searchable="yes" data-reuse-tag="productSimpleName" data-type="productSimpleName" data-product-code="kvstore" docid="3761080" data-source="reuse_library" class="ph productName">Tair實例造成5%~15%的性能損失。如果業(yè)務(wù)對Tair實例的寫入量非常大,建議僅在運維需要(例如故障排查)期間開通審計功能,以免帶來性能損失。