新聞中心
Redis服務(wù)支持5000萬的QPS,有什么好的思路?
論實際項目用阿里云,雖然很貴,但實現(xiàn)簡單,假如做技術(shù)秀,自行開發(fā)x86+fpga或gpu,畢竟redis用處,這是十分簡單的數(shù)據(jù)結(jié)構(gòu),5000w就是50m,看每條數(shù)據(jù)大小多少了,一條pcie3.0 16x不夠就用兩條三條四條,進一步作秀,用fpga處理tcp/ip協(xié)議,一個節(jié)點做5000w真不是問題,只是為什么說這是作秀?一系列的開發(fā)過程,多種平臺技術(shù)混合使用,沒多少企業(yè)愿意這么干

5000萬QPS的系統(tǒng)是什么概念?我先說一個數(shù)字google一天做50億查詢;紐約交易所平均一天20-30M筆交易;全球最大廣告交易平臺Double Click的QPS為2M。除了面試沒有人會真的遇到這樣的挑戰(zhàn)。
簡單地說,5000萬QPS以現(xiàn)在技術(shù)手段,除非做客戶端提前知道數(shù)據(jù)的分布,知道去哪個節(jié)點,數(shù)據(jù)不會在節(jié)點中同步。如果用Redis一個CPU大概可以做到5KQPS,每個節(jié)點主從。也就是說犧牲可用性。
雖然知道你問這個問題的時候,其實自己并沒有想的太清楚,但是為了漲粉,我還是愿意來評論一下。
我想對redis來說,單機qps 5000w暫時肯定是不能的事情了,所以需要分布式集群來解決這個問題。
但是現(xiàn)實中的分布式方案,其實都是在各種現(xiàn)有條件下的權(quán)衡結(jié)果,我想現(xiàn)實中5000wqps的應(yīng)用可能主要會有以下場景。
1.純讀場景(存儲量單機可存儲)
對于純讀場景,其實是離線寫 + 在線讀的模式,單純的加機器就可以完成你的需求。
單機我記得10w沒問題,那你可能需要500臺機器,如果你是多idc,那么N + 1冗余考慮到的話,可能實際會多點。
這就是面試閑打牙說的。
就像一個20-30人的公司,面試問的都是一天億級數(shù)據(jù)量的問題。這個規(guī)模的公司,流量有限,數(shù)據(jù)量一天最高峰能到幾百萬就不錯了,還不是天天如此。本身面試的人也很少有真的處理億級數(shù)據(jù)量的問題的人。雙方有時純空對空交流。
不過現(xiàn)實世界真有悲劇,搞微服務(wù),日活高峰也就1000的系統(tǒng),弄了上千臺服務(wù)再跑,基本都空跑,一年服務(wù)器錢老多了。
程序員如何設(shè)計一個rpc框架?
RPC框架全稱叫“Remote Procedure Call”-遠程過程調(diào)用。
在分布式應(yīng)用大放異彩的今天,軟件研發(fā)工作(微服務(wù)、中臺)是一定離不開分布式,既然說到分布式就一定離不開RPC,所以RPC框架也是廣大程序員進階路上必須跨過去的一道坎,也是工作中經(jīng)常會用到的。因此,了解并掌握RPC框架的底層原理和其設(shè)計思想也是每一個程序員的必備技能之一。
各大互聯(lián)網(wǎng)公司都或多或少實現(xiàn)了自己的RPC框架,其中比較出名且常用的有:
阿里巴巴的dubbo:這個大家應(yīng)該都用到過吧?GitHub地址:https://github.com/apache/dubbo
基于阿里巴巴fork的當當版dubbox:這個貌似也都用到過?在dubbo不死不活的那幾年。GitHub地址:https://github.com/dangdangdotcom/dubbox
谷歌grpc:谷歌版本的rpc,GitHub地址(Java版):https://github.com/grpc/grpc-java
大家可以自己去GitHub上去搜索這三大框架并進行學(xué)習(xí)。
如果我們自己去實現(xiàn)一個簡單的RPC框架要怎么做?這個時候我們應(yīng)該意識到我們是在寫一個框架,寫一個框架意味著我們無法再隨意的使用第三方依賴包,也就是除了一些工具類包可以使用,其他的都需要我們用Java一行一行的寫出來。
下面提供一下如何用Java實現(xiàn)一個簡單的RPC功能(談不上框架):
到此,以上就是小編對于redis 動態(tài)修改配置的問題就介紹到這了,希望這2點解答對大家有用。
文章標題:程序員如何設(shè)計一個rpc框架?
當前地址:http://m.fisionsoft.com.cn/article/cccooso.html


咨詢
建站咨詢
