架構閱讀筆記13

2022-08-03 16:00:23 字數 1476 閱讀 2832

閱讀筆記

微服務好處:實現跨團隊的解藕,實現更高的併發(目前單機只能實現c10k)不用在拷貝**,基礎服務可以公用,更好的支援服務治理,能夠更好的相容雲計算平台。

rpc:向呼叫本地方法一樣呼叫遠端函式。

客戶端:一般利用動態**生成乙個介面的實現類,在這個實現類裡通過網路把介面名稱,引數,方法序列化後傳出去,然後控制同步呼叫還是非同步呼叫,非同步呼叫需要設定乙個**函式,客戶端還需要維護負載均衡,超時處理,連線池管理等,連線池維護了和多個server的連線,靠此做負載均衡,當某個伺服器宕機後去除該連線。請求上下文維護了請求id和**函式,超時的請求當回覆報文到達後由於找不到請求上下文就會丟棄。

服務端:維護連線,網路收到請求後反序列化獲得方法名稱,介面名稱,引數名稱後通過反射進行呼叫,然後將結果在傳回客戶端。

序列化的方式:一種是只序列化欄位的值,反序列化的時候重新構建物件在把值設定進去,另外一種方式直接將整個物件的結構序列化成二進位制,前者節省空間,後者反序列化速度快,目前的序列化框架也是在反序列化時間和占用空間之間權衡。有點類似哈夫曼編碼,或者資料庫怎麼儲存一行一行的資料。

cap

c 一致性 a 可用性 p 分割槽容忍性  可以簡單地這樣理解:mysql 單機是c 主從同步複製 cp  主從非同步複製  ap

zookeeper  選擇了p,但是既沒有實現c也沒有實現a  而是選擇最終一致性,可以在多個節點上讀取,但是只允許乙個節點接受寫請求,其他節點接收的寫請求會**給主節點,只要過半節點返回成功就會提交,如果乙個客戶端連線的正好是沒有被提交的follower節點,那麼這個節點上讀取到的資料就是舊的,這樣就出現了資料的不一致,所以沒有完全實現c,由於需要過半節點返回成功才提交,如果超過半數返回失敗或者不返回,那麼zookeeper將出現不可用,所以也沒有完全實現a

當然衡量乙個系統是cp還是ap,可以根據他犧牲a更多還是犧牲c更多,而zk其實就是犧牲了a來滿足c,當超過集群半數的節點宕機後,系統將不可用,這也是不建議使用zk做註冊中心的原因。

cap理論只是描述了在分布式環境中一致性,可用性,分割槽容忍不能同時滿足,並沒有讓我們一定要三選二,由於網路分割槽在分布式環境下是不可避免的,所以為了追求高可用,往往我們會犧牲強一執行,採用弱一致性和最終一致性的方案 也就是著名的base理論,而base理論其實是針對傳統關係型資料的acid而言的,而acid的提出是基於單節點下的,而在分布式環境下,如何協調資料一致性,也就是在資料的隔離級別上做出取捨,而即使是單機的關係型資料庫也為了提高效能,也就是可用性,定義了隔離級別,去打破acid裡面的強一致性c,當然資料庫也是為業務服務的,某些業務或者說大部分業務都沒有強一致性的需求。

發布與部署:目前的大部分公司採用下面的部署方式

《架構漫談》閱讀筆記

在每個人都必須自己完成所有生活必須品的生產的時候,是沒有架構的 當然在個人來講,同一時刻只能做有限的事情,在時間上還是可能會產生架構的 一旦產生的分工,就把所有的事情,切分成由不同角色的人來完成,最後再通過交易,使得每個個體都擁有生活必須品,而不需要每個個體做所有的事情,只需要每個個體做好自己擅長的...

《架構漫談》閱讀筆記

架構漫談是由資深架構師王概凱執筆的系列專欄,通過對其閱讀,我從中逐步認識到了什麼是架構,怎樣做好架構,軟體架構如何落地等內容。一 什麼是架構 在軟體行業,對於什麼是架構一直有很多的爭論。事實上,架構在軟體發明時的n多年以前,就已經存在了,這個詞最早出現在建築上。架構產生的五個動力可以概括為 由個人執...

《架構漫談》閱讀筆記

軟體架構師如何工作?不同於軟體工程中只需要編碼的 低階 碼農,一名合格的軟體架構師首先要對架構有深刻的理解。那麼什麼是架構?從建築的角度解釋,架構是計畫 設計和建造建築物 物理結構的過程和生產活動。從這個定義上看,架構像乙個過程,但又不明確。為了弄清這個問題,我們首先要了解為什麼會產生架構?在最早期...