日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

P8级别的顶级“并发编程”宝典,最全指南

發(fā)布時(shí)間:2023/11/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P8级别的顶级“并发编程”宝典,最全指南 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

前幾天我上班路上,和小區(qū)門(mén)口開(kāi)車(chē)的師傅閑聊,發(fā)現(xiàn)他們雖然學(xué)歷不高,但掙錢(qián)的途徑不少,比如固定接送多位客戶,然后能通過(guò)朋友圈拓展新客戶,而且通過(guò)客戶口口相傳,也能不斷拉到生意,算下來(lái)每月也能掙1萬(wàn)5出頭,好的話能有2萬(wàn),我在上海,做IT的要月入2萬(wàn),如果不是996,估計(jì)本科畢業(yè)還得干幾年。

可能有人會(huì)說(shuō)了,他們第一不交金,第二未必穩(wěn)定,但這批師傅學(xué)歷也就高中,對(duì)于這個(gè)學(xué)歷來(lái)說(shuō),這個(gè)收入不能算低。反觀我們,可能不少做IT的人,一心只做技術(shù),只拿固定工資,不去拓展掙錢(qián)途徑,或者雖然到處找活干,但和路邊裝修隊(duì)相比,只是多了份固定工資,總之很難突破收入瓶頸。

所以我們IT人除了在不斷提升自己的技術(shù)能力之外,更得積極主動(dòng)地拓展掙錢(qián)途徑,本文就將圍繞這點(diǎn)展開(kāi)。

CAP原則

在分布式系統(tǒng)要滿足CAP原則,一個(gè)提供數(shù)據(jù)服務(wù)的存儲(chǔ)系統(tǒng)無(wú)法同時(shí)滿足:數(shù)據(jù)一致性、數(shù)據(jù)可用性、分區(qū)耐受性。

C數(shù)據(jù)一致性:所有應(yīng)用程序都能訪問(wèn)到相同的數(shù)據(jù)。 A數(shù)據(jù)可用性:任何時(shí)候,任何應(yīng)用程序都可以讀寫(xiě)訪問(wèn)。 P分區(qū)耐受性:系統(tǒng)可以跨網(wǎng)絡(luò)分區(qū)線性伸縮。(通俗來(lái)說(shuō)就是數(shù)據(jù)的規(guī)模可擴(kuò)展) 在大型網(wǎng)站中通常都是犧牲C,選擇AP。為了可能減小數(shù)據(jù)不一致帶來(lái)的影響,都會(huì)采取各種手段保證數(shù)據(jù)最終一致。

  • 數(shù)據(jù)強(qiáng)一致:各個(gè)副本的數(shù)據(jù)在物理存儲(chǔ)中總是一致的。

  • 數(shù)據(jù)用戶一致:數(shù)據(jù)在物理存儲(chǔ)的各個(gè)副本可能是不一致的,但是通過(guò)糾錯(cuò)和校驗(yàn)機(jī)制,會(huì)確定一個(gè)一致的且正確的數(shù)據(jù)返回給用戶。

  • 數(shù)據(jù)最終一致:物理存儲(chǔ)的數(shù)據(jù)可能不一致,終端用戶訪問(wèn)也可能不一致,但是一段時(shí)間內(nèi)數(shù)據(jù)會(huì)達(dá)成一致。

一致性算法

  • 使一組服務(wù)器在一個(gè)值上達(dá)成一致,所以活躍的特征在于最終每個(gè)服務(wù)器都可以決定一個(gè)值。

  • 通過(guò)值的一致能夠?qū)崿F(xiàn)對(duì)同一個(gè)數(shù)據(jù)的請(qǐng)求會(huì)讓同一個(gè)服務(wù)器來(lái)處理。

  • Paxos和Raft都是通過(guò)選取master來(lái)實(shí)現(xiàn)多節(jié)點(diǎn)下值的一致性,從而借助一致性hash算法來(lái)分配請(qǐng)求。

一致性Hash算法 一致性Hash算法可以根據(jù)不同的屬性參數(shù)(通常是IP和端口號(hào)),生成一串不相同的Hash值,并將Hash值轉(zhuǎn)換成0-2^32-1的整數(shù), 不同范圍的值由不同服務(wù)器進(jìn)行處理。(B-C之間的由B處理)。

Raft算法和Paxos算法

Raft算法是在Paxos算法的基礎(chǔ)上的進(jìn)行優(yōu)化。 Raft在Paxos的基礎(chǔ)上主要做了兩個(gè)方向的優(yōu)化: 1.將復(fù)雜的分布式共識(shí)問(wèn)題拆分成領(lǐng)導(dǎo)選舉、日志復(fù)制和安全性三個(gè)問(wèn)題 2.壓縮狀態(tài)空間:相對(duì)于Paxos施加了更合理的限制,減少了系統(tǒng)狀態(tài)過(guò)多而產(chǎn)生的不確定因素。

領(lǐng)導(dǎo)選舉(具體以zookeeper舉例) 其基本的特性有:

  • zookeeper在配置集群時(shí)節(jié)點(diǎn)數(shù)不可小于3

  • 節(jié)點(diǎn)只有獲得半數(shù)以上的投票才能當(dāng)選Leader

  • zookeeper在啟動(dòng)時(shí)會(huì)通過(guò)廣播機(jī)制來(lái)把投票結(jié)果告訴其他的節(jié)點(diǎn)

  • zookeeper在啟動(dòng)時(shí)首先會(huì)給自己投票,然后與其他已啟動(dòng)的節(jié)點(diǎn)進(jìn)行通信,通過(guò)比較id從而判斷是否能獲取其他節(jié)點(diǎn)的投票

zookeeper在選舉過(guò)程中的角色:領(lǐng)導(dǎo)者、跟隨者、觀察者、競(jìng)選者

日志復(fù)制 在共識(shí)算法中,所有服務(wù)器節(jié)點(diǎn)都會(huì)包含一個(gè)有限狀態(tài)自動(dòng)機(jī),名為復(fù)制狀態(tài)機(jī)(replicated state machine)。每個(gè)節(jié)點(diǎn)都維護(hù)著一個(gè)復(fù)制日志(replicated logs)的隊(duì)列,復(fù)制狀態(tài)機(jī)會(huì)按序輸入并執(zhí)行該隊(duì)列中的請(qǐng)求,執(zhí)行狀態(tài)轉(zhuǎn)換并輸出結(jié)果。可見(jiàn),如果能保證各個(gè)節(jié)點(diǎn)中日志的一致性,那么所有節(jié)點(diǎn)狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換和輸出也就都一致。

可見(jiàn),日志由一個(gè)個(gè)按序排列的entry組成。每個(gè)entry內(nèi)包含有請(qǐng)求的數(shù)據(jù),還有該entry產(chǎn)生時(shí)的領(lǐng)導(dǎo)任期值。每個(gè)節(jié)點(diǎn)上的日志隊(duì)列用一個(gè)數(shù)組log[]表示。

領(lǐng)導(dǎo)節(jié)點(diǎn)選舉出來(lái)后,集群就可以開(kāi)始處理客戶端請(qǐng)求了。當(dāng)客戶端發(fā)來(lái)請(qǐng)求時(shí),領(lǐng)導(dǎo)節(jié)點(diǎn)首先將其加入自己的日志隊(duì)列,再并行地發(fā)送AppendEntries RPC消息給所有跟隨節(jié)點(diǎn)。最終實(shí)現(xiàn)節(jié)點(diǎn)數(shù)據(jù)的一致性。

安全性 Raft安全保障機(jī)制有5種:

  • 選舉安全性:節(jié)點(diǎn)要3個(gè)以上,避免“腦裂”的方式

  • 領(lǐng)導(dǎo)者只追加:客戶端發(fā)出的請(qǐng)求都是插入領(lǐng)導(dǎo)者日志隊(duì)列的尾部,沒(méi)有修改或刪除的操作。

  • 日志匹配:每條AppendEntries都會(huì)包含最新entry之前那個(gè)entry的下標(biāo)與任期值,如果跟隨節(jié)點(diǎn)在對(duì)應(yīng)下標(biāo)找不到對(duì)應(yīng)任期的日志,就會(huì)拒絕接受并告知領(lǐng)導(dǎo)節(jié)點(diǎn)。(避免追隨者故障,導(dǎo)致數(shù)據(jù)不一致)

  • 領(lǐng)導(dǎo)者完全性:如果有一條日志在某個(gè)任期被提交了,那么它一定會(huì)出現(xiàn)在所有任期更大的領(lǐng)導(dǎo)者日志里。(master會(huì)優(yōu)先獲取日志的更新)

  • 狀態(tài)機(jī)安全性:如果一個(gè)節(jié)點(diǎn)已經(jīng)向其復(fù)制狀態(tài)機(jī)應(yīng)用了一條日志中的請(qǐng)求,那么對(duì)于其他節(jié)點(diǎn)的同一下標(biāo)的日志,不能應(yīng)用不同的請(qǐng)求。(避免master宕機(jī)時(shí),重新選舉,導(dǎo)致部分節(jié)點(diǎn)數(shù)據(jù)不一致)

Raft算法和Paxos算法在分布式中的使用

Consul vs Eureka vs Zookeeper

注: CAP: 數(shù)據(jù)一致性、數(shù)據(jù)可用性、分區(qū)耐受性 AP: 犧牲強(qiáng)一致性,部分節(jié)點(diǎn)宕機(jī),不會(huì)影響正常工作的節(jié)點(diǎn)。 CP: 犧牲數(shù)據(jù)可用性,為了保證數(shù)據(jù)的一致性,當(dāng)一臺(tái)機(jī)器出現(xiàn)故障時(shí),所有節(jié)點(diǎn)的數(shù)據(jù)都不能使用。

最后

一次偶然,從朋友那里得到一份“java高分面試指南”,里面涵蓋了25個(gè)分類(lèi)的面試題以及詳細(xì)的解析:JavaOOP、Java集合/泛型、Java中的IO與NIO、Java反射、Java序列化、Java注解、多線程&并發(fā)、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、數(shù)據(jù)結(jié)構(gòu)、算法、Elasticsearch 、Kafka 、微服務(wù)、Linux。

這不,馬上就要到招聘季了,很多朋友又開(kāi)始準(zhǔn)備“金三銀四”的春招啦,那我想這份“java高分面試指南”應(yīng)該起到不小的作用,所以今天想給大家分享一下。

請(qǐng)注意:關(guān)于這份“java高分面試指南”,每一個(gè)方向?qū)n}(25個(gè))的題目這里幾乎都會(huì)列舉,在不看答案的情況下,大家可以自行測(cè)試一下水平 且由于篇幅原因,這邊無(wú)法展示所有完整的答案解析

注意:關(guān)于這份“java高分面試指南”,每一個(gè)方向?qū)n}(25個(gè))的題目這里幾乎都會(huì)列舉,在不看答案的情況下,大家可以自行測(cè)試一下水平 且由于篇幅原因,這邊無(wú)法展示所有完整的答案解析

資料領(lǐng)取方式:點(diǎn)擊【java高分面試指南-25大專(zhuān)題分類(lèi)】

總結(jié)

以上是生活随笔為你收集整理的P8级别的顶级“并发编程”宝典,最全指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。