分布式系統(tǒng)中的一些問題

一.?CAP理論慌核,BASE理論?

CAP:

C:強(qiáng)一致性,保證每一節(jié)點(diǎn)(微服務(wù))統(tǒng)一時(shí)間點(diǎn)數(shù)據(jù)的完全一致

A:可用性,整個(gè)系統(tǒng)是一直可用的,而且是正常響應(yīng)時(shí)間。不允許出現(xiàn)用戶訪問失敗的情況

P:分區(qū)容錯(cuò)性概荷,某一個(gè)節(jié)點(diǎn)或者網(wǎng)絡(luò)分區(qū)發(fā)生故障時(shí),整個(gè)系統(tǒng)還是可用的碌燕,對于用戶來說沒有影響

注意:CAP理論就是說在分布式存儲(chǔ)系統(tǒng)中误证,最多只能實(shí)現(xiàn)上面的兩點(diǎn)。P一定要實(shí)現(xiàn)修壕,所以就是CP和AP的權(quán)衡愈捅。

BASE:

BA:基本可用,系統(tǒng)出現(xiàn)問題慈鸠,用戶的響應(yīng)時(shí)間增加了蓝谨,或者非核心功能不可用了。都是可以的青团。

S:軟狀態(tài)譬巫,數(shù)據(jù)同步允許有延遲,這一段延遲的狀態(tài)就是軟狀態(tài)壶冒。

E:數(shù)據(jù)最終一致性缕题,在經(jīng)過一段時(shí)間的數(shù)據(jù)同步后,最終能達(dá)到一直就行胖腾,不要求實(shí)時(shí)烟零。

總結(jié):cap是最理想化的,base是對cap的一些理解,更加現(xiàn)實(shí)化,是對cap的妥協(xié)瘪松。

二.?負(fù)載均衡算法,類型?

算法:

輪詢法锨阿;加權(quán)輪詢法

隨機(jī)法宵睦;加權(quán)隨機(jī)法

源地址哈希法:根據(jù)客戶端ip地址,通過哈希計(jì)算得到一個(gè)數(shù)值墅诡,對服務(wù)器列表進(jìn)行取模壳嚎,得到的結(jié)果就是要訪問的服務(wù)器的序號。

可以保證同一個(gè)ip地址的客戶末早,每次請求都會(huì)映射到指定的服務(wù)器.

最小連接數(shù)法:比較靈活和智能烟馅,比如A服務(wù)器有5個(gè)鏈接,B有3個(gè)然磷,C沒有鏈接郑趁。下次請求就會(huì)進(jìn)入C服務(wù)器。

類型:

DNS實(shí)現(xiàn)的負(fù)載均衡:訪問一個(gè)域名姿搜,映射到不同的ip地址

硬件負(fù)載均衡:F5和A10

軟件負(fù)載均衡: Nginx寡润,HAproxy,LVS等

三.分布式架構(gòu)下,session共享有什么方案?

使用jwt

使用cookie?(有安全風(fēng)險(xiǎn))

服務(wù)器之間進(jìn)行session同步:保證每個(gè)服務(wù)器都有session信息舅柜,消耗比較大梭纹。

ip綁定策略:比如使用Ngnix進(jìn)行源地址哈希法的負(fù)載均衡,讓每一個(gè)ip固定訪問一個(gè)服務(wù)器致份, 但是這種就失去分布式的作用变抽。

使用redis存儲(chǔ):是業(yè)界最廣泛的。 可實(shí)現(xiàn)不同服務(wù)知举,不同平臺(tái)(網(wǎng)頁/app)瞬沦,甚至不同語言的session共享。

四.?分布式id生成方案?

UUID:時(shí)間戳+時(shí)鐘序列(計(jì)數(shù)器)+唯一的IEEE機(jī)器識(shí)別碼(比如網(wǎng)卡的MAC地址)

對數(shù)據(jù)庫不友好雇锡,因?yàn)殡S機(jī)不連續(xù)逛钻。mysql的主鍵默認(rèn)使用聚集索引,造成索引不連續(xù)

數(shù)據(jù)庫自增:對于數(shù)據(jù)庫集群模型锰提,要設(shè)置不同的數(shù)據(jù)庫起始值不同曙痘,但是步長(自增幾)相同。

Leaf-segment:(美團(tuán)大眾點(diǎn)評的)采用每次獲取一個(gè)ID區(qū)間的方式立肘。

比如一次和數(shù)據(jù)庫的交互边坤, 就請求到100個(gè)id,數(shù)據(jù)來了直接用谅年。避免每次添加數(shù)據(jù)都請求一個(gè)id茧痒,增加了數(shù)據(jù)庫的壓力。 也是對數(shù)據(jù)庫自增策略的一個(gè)優(yōu)化融蹂。

雪花算法(最流行)

snowflake是Twitter開源的分布式ID生成算法旺订,結(jié)果是一個(gè)長度為64bit的long型的ID弄企。

其核心思想是:41位時(shí)間戳+10位機(jī)器id+12位序列號+符號位(0)。? 12bit作為毫秒內(nèi)的流水號区拳,就是說每個(gè)節(jié)點(diǎn)在每毫秒可以產(chǎn)生4096 個(gè)ID拘领,并且是趨勢遞增的。

這樣適合于Mysql的聚集索引樱调,因?yàn)橼厔葸f增约素。索引的連續(xù)性好。

缺點(diǎn):依賴于時(shí)間戳笆凌,時(shí)間戳是根據(jù)機(jī)器的時(shí)間得到的圣猎。比如linux中,如果人為的進(jìn)行時(shí)鐘回?fù)芷杏保涂赡茉斐蒳d重復(fù)样漆。

五.如何實(shí)現(xiàn)接口的冪等性?

接口冪等性就是用戶對于同一操作發(fā)起的一次請求或者多次請求的結(jié)果是一致的,,不會(huì)因?yàn)槎啻吸c(diǎn)擊而產(chǎn)生了副作用晦闰。比如注冊,支付時(shí)鳍怨,不會(huì)因?yàn)槎啻吸c(diǎn)擊產(chǎn)生不正確的結(jié)果呻右。

mysql 的唯一索引:比如注冊,設(shè)置賬號唯一鞋喇,多次插入時(shí)就不會(huì)成功声滥。但是需要每次操作數(shù)據(jù)庫,不好

token機(jī)制:服務(wù)器在訪問接口前就傳給用戶一個(gè)特定token并且保存在redis侦香,訪問接口帶上該token落塑, 判斷是否是第一次,是的話允許操作罐韩,完成邏輯后刪除token憾赁;不是的話不允許操作。

redis的setnx命令:如圖

版本控制:加樂觀鎖散吵,對于update時(shí)常用龙考。

狀態(tài)控制:例如訂單的狀態(tài)有已支付,未支付矾睦,支付中晦款,支付失敗等。只有處于未支付的時(shí)候才允許修改為支付中

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末枚冗,一起剝皮案震驚了整個(gè)濱河市缓溅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赁温,老刑警劉巖坛怪,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件州藕,死亡現(xiàn)場離奇詭異,居然都是意外死亡酝陈,警方通過查閱死者的電腦和手機(jī)床玻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沉帮,“玉大人锈死,你說我怎么就攤上這事∧潞荆” “怎么了待牵?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長喇勋。 經(jīng)常有香客問我缨该,道長,這世上最難降的妖魔是什么川背? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任贰拿,我火速辦了婚禮,結(jié)果婚禮上熄云,老公的妹妹穿的比我還像新娘膨更。我一直安慰自己,他們只是感情好缴允,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布荚守。 她就那樣靜靜地躺著,像睡著了一般练般。 火紅的嫁衣襯著肌膚如雪矗漾。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天薄料,我揣著相機(jī)與錄音敞贡,去河邊找鬼。 笑死都办,一個(gè)胖子當(dāng)著我的面吹牛嫡锌,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播琳钉,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼势木,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了歌懒?” 一聲冷哼從身側(cè)響起啦桌,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后甫男,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體且改,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年板驳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了又跛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡若治,死狀恐怖慨蓝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情端幼,我是刑警寧澤礼烈,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站婆跑,受9級特大地震影響此熬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滑进,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一犀忱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧郊供,春花似錦峡碉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吉执。三九已至疯淫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間戳玫,已是汗流浹背熙掺。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留咕宿,地道東北人币绩。 一個(gè)月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像府阀,于是被迫代替她去往敵國和親缆镣。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容