日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

個常見使用場景,redis使用場景( 六 )


appednfsync always 當設置appendfsync為always時,每一次寫操作都會調(diào)用一次fsync,這時數(shù)據(jù)是最安全的,當然,由于每次都會執(zhí)行fsync,所以其性能也會受到影響 。對于一般性的業(yè)務需求,建議使用RDB的方式進行持久化,原因是RDB的開銷并相比AOF日志要低很多,對于那些無法忍數(shù)據(jù)丟失的應用,建議使用AOF日志 。
4、集群管理的不同Memcached是全內(nèi)存的數(shù)據(jù)緩沖系統(tǒng),Redis雖然支持數(shù)據(jù)的持久化,但是全內(nèi)存畢竟才是其高性能的本質(zhì) 。作為基于內(nèi)存的存儲系統(tǒng)來說,機器物理內(nèi)存的大小就是系統(tǒng)能夠容納的最大數(shù)據(jù)量 。如果需要處理的數(shù)據(jù)量超過了單臺機器的物理內(nèi)存大小,就需要構建分布式集群來擴展存儲能力 。Memcached本身并不支持分布式,因此只能在客戶端通過像一致性哈希這樣的分布式算法來實現(xiàn)Memcached的分布式存儲 。
下圖給出了Memcached的分布式存儲實現(xiàn)架構 。當客戶端向Memcached集群發(fā)送數(shù)據(jù)之前,首先會通過內(nèi)置的分布式算法計算出該條數(shù)據(jù)的目標節(jié)點,然后數(shù)據(jù)會直接發(fā)送到該節(jié)點上存儲 。但客戶端查詢數(shù)據(jù)時,同樣要計算出查詢數(shù)據(jù)所在的節(jié)點,然后直接向該節(jié)點發(fā)送查詢請求以獲取數(shù)據(jù) 。相較于Memcached只能采用客戶端實現(xiàn)分布式存儲,Redis更偏向于在服務器端構建分布式存儲 。
最新版本的Redis已經(jīng)支持了分布式存儲功能 。Redis Cluster是一個實現(xiàn)了分布式且允許單點故障的Redis高級版本,它沒有中心節(jié)點,具有線性可伸縮的功能 。下圖給出Redis Cluster的分布式存儲架構,其中節(jié)點與節(jié)點之間通過二進制協(xié)議進行通信,節(jié)點與客戶端之間通過ascii協(xié)議進行通信 。
在數(shù)據(jù)的放置策略上,Redis Cluster將整個key的數(shù)值域分成4096個哈希槽,每個節(jié)點上可以存儲一個或多個哈希槽,也就是說當前Redis Cluster支持的最大節(jié)點數(shù)就是4096 。Redis Cluster使用的分布式算法也很簡單:crc16( key ) % HASH_SLOTS_NUMBER 。
為了保證單點故障下的數(shù)據(jù)可用性,Redis Cluster引入了Master節(jié)點和Slave節(jié)點 。在Redis Cluster中,每個Master節(jié)點都會有對應的兩個用于冗余的Slave節(jié)點 。這樣在整個集群中,任意兩個節(jié)點的宕機都不會導致數(shù)據(jù)的不可用 。當Master節(jié)點退出后,集群會自動選擇一個Slave節(jié)點成為新的Master節(jié)點 。
Kafka,Mq和Redis作為消息隊列使用時的差異有哪些?
Kafkakafka是個日志處理緩沖組件,主要在大數(shù)據(jù)信息處理中使用 。和傳統(tǒng)的消息隊列相比簡化了隊列結構和功能,以文件流形式處理存儲(持久化)消息(主要是日志) 。日志信息通常數(shù)據(jù)量巨大,處理組件一般會處理不過來,所以有了緩沖層kafka 。kafka支持巨大的日志吞吐量 。為了防止數(shù)據(jù)丟失,其消息被消費后不會直接丟棄,要多存儲一段時間,等超過設置的時間閾值才會丟棄 。
這是mq和redis所不具備的 。主要特點如下:巨型存儲量: 支持TB甚至PB級別數(shù)據(jù) 。高吞吐,高IO:一般配置的服務器就可實現(xiàn)單機每秒100K條以上的消息傳輸 。消息分區(qū),分布式消費:能保證消息順序傳輸 。支持離線數(shù)據(jù)處理(hadoop集群)和實時數(shù)據(jù)處理 。橫向擴展:支持在線水平擴展,以支持更大數(shù)據(jù)處理能力 。
redisredis是一個高性能的、原子操作的內(nèi)存鍵值對nosql 。支持高速訪問,可用做消息隊列的存儲,但是不具備消息隊列的任何功能和邏輯,要做為消息隊列來使用的話,隊列功能和邏輯要通過上層應用來自己實現(xiàn) 。MQ,消息隊列我們以RabbitMQ為例來做介紹 。它是用Erlang語言開發(fā)的開源消息隊列,支持多種協(xié)議包括AMQP,XMPP, SMTP, STOMP,適合于企業(yè)級的開發(fā) 。
MQ支持Broker構架,消息發(fā)送給客戶端時需要在中心隊列排隊 。對路由,負載均衡或者數(shù)據(jù)持久化都有很好的支持 。其他更多消息隊列還有ActiveMq,ZeroMq等,功能上大同小異 。有專門測試的結果表明,并發(fā)吞吐TPS比較,ZeroMq 最好,RabbitMq 次之,ActiveMq 最差 。更多信息,請關注蟲蟲,一起討論學習 。

推薦閱讀