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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

菜鸟架构笔记:上部

發(fā)布時(shí)間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 菜鸟架构笔记:上部 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

  • 從零開始學(xué)架構(gòu)
            • 李運(yùn)華|著
      • 程序設(shè)計(jì)與架構(gòu)設(shè)計(jì)
      • 架構(gòu)即人性!切勿好大喜功。
      • 組件與模塊
      • 框架Framework和架構(gòu)Architecture
      • 高**的誤區(qū)
      • 以史為鑒
      • 架構(gòu)設(shè)計(jì)的主要目的
      • 高屋建瓴,有的放矢,而非貪大求全
      • 任務(wù)分配器與業(yè)務(wù)服務(wù)器
      • 系統(tǒng)的高可用
      • 數(shù)據(jù)+邏輯=業(yè)務(wù)
      • CAP定理
      • 高可用狀態(tài)決策
      • 可擴(kuò)展性
      • 創(chuàng)新
      • 安全
      • 規(guī)模
      • 名詞解釋
      • 規(guī)范
      • 建筑
      • 備選方案
      • 關(guān)系數(shù)據(jù)庫
      • CAP
            • CAP理論的實(shí)踐
      • 正常情況下,不存在CP和AP的選擇(即:當(dāng)P可以舍棄時(shí)),可以同時(shí)滿足CA。
      • 分區(qū)期間(一年可能5分鐘(4個(gè)9)、50分鐘(5個(gè)9))
      • BASE
      • FMFA(Failure mode and effects analysis)故障模式與影響分析
      • 存儲高可用
            • 主備倒換(主讀寫,備備份)與主從倒換(主讀寫,從讀)
            • 開源的數(shù)據(jù)集中集群
            • 數(shù)據(jù)分散集群
      • 分布式事務(wù)算法
            • 分布式一致性算法
      • 數(shù)據(jù)分區(qū)
            • 復(fù)制規(guī)則
      • 計(jì)算高可用
            • 主備
            • 主從
            • 對稱集群與非對稱集群
      • 業(yè)務(wù)高可用
      • 異地多活設(shè)計(jì)步驟
            • 3.數(shù)據(jù)同步
            • 4.異常處理

從零開始學(xué)架構(gòu)

照著做,你也能成為架構(gòu)師

李運(yùn)華|著

技術(shù)成就夢想,堅(jiān)持就能成功

程序設(shè)計(jì)與架構(gòu)設(shè)計(jì)

程序設(shè)計(jì)的關(guān)鍵思維是邏輯和實(shí)現(xiàn)。
架構(gòu)設(shè)計(jì)的關(guān)鍵思維是判斷和取舍。

架構(gòu)即人性!切勿好大喜功。

三大原則:

  • 合適原則——合適優(yōu)于業(yè)界領(lǐng)先。
  • 簡單原則——簡單優(yōu)于復(fù)雜。
    《UNIX編程藝術(shù)》Kiss:KeepItSimple,Stupid!
  • 演化原則——演化優(yōu)于一步到位。
  • 系統(tǒng)是其內(nèi)部的諸多有關(guān)聯(lián)的個(gè)體按照相應(yīng)的規(guī)則
    運(yùn)行出的具備新的能力的東西。

    組件與模塊

    從邏輯的角度來拆分系統(tǒng)得到的單元是模塊
    從物理的角度來拆分系統(tǒng)得到的單元是組件

    劃分模塊的主要目的是職責(zé)劃分
    劃分組件的主要目的是單元復(fù)用

    component組件,零件,屬于物理范疇。

    框架Framework和架構(gòu)Architecture

    不同角度理解問題,所抽象出的概念是不同的。

    高**的誤區(qū)

    不能一味的追求高性能、高可用和高擴(kuò)展!
    Done is better than perfect!

    以史為鑒

    探索一個(gè)事務(wù)的目的,最好的方式就是去追尋這個(gè)事物出現(xiàn)的
    歷史背景推動因素
    屁股決定腦袋,位置決定想法。
    事物的量級達(dá)到一定程度后,問題也會***變質(zhì)***。
    模塊、對象再到組件,差別是隨著軟件的復(fù)雜度不斷增加,拆分
    的粒度越來越粗,拆分的角度越來越高。

    架構(gòu)設(shè)計(jì)的主要目的

    是為了解決復(fù)雜度帶來的問題。
    低成本是架構(gòu)設(shè)計(jì)的附加約束。

    高屋建瓴,有的放矢,而非貪大求全

    不同架構(gòu)應(yīng)該針對不同的復(fù)雜點(diǎn)。

    任務(wù)分配器與業(yè)務(wù)服務(wù)器

    任務(wù)分配隨著量級的增加,性能損耗越來越高,整體收益會大打折扣。
    任務(wù)分解,拆大為小,進(jìn)而更容易找到關(guān)鍵性能點(diǎn)進(jìn)行突破,且不會
    牽一發(fā)而動全身,方便調(diào)優(yōu)。
    拆分后的子系統(tǒng)之間交流也有成本,所以拆分的粒度要適度。

    系統(tǒng)的高可用

    通過冗余實(shí)現(xiàn)無中斷。相當(dāng)于功能備份。
    存儲高可用的難點(diǎn)不在于如何備份數(shù)據(jù),而在于如何減少或規(guī)避數(shù)據(jù)不一致
    對業(yè)務(wù)造成的影響。

    數(shù)據(jù)+邏輯=業(yè)務(wù)

    即便是毫秒級別的傳輸延時(shí),也會照成數(shù)據(jù)的不一致,進(jìn)而導(dǎo)致業(yè)務(wù)出現(xiàn)問題。

    CAP定理

    consistency
    available
    partitionTolerance
    存儲高可用不可能同時(shí)滿足一致性、可用性、分區(qū)容錯(cuò)性,最多滿足
    其中兩個(gè),在做架構(gòu)設(shè)計(jì)時(shí)要結(jié)合業(yè)務(wù)進(jìn)行取舍。由于網(wǎng)絡(luò)延時(shí)等不可避免,
    所以通常在一致性與可用性之間進(jìn)行取舍。

    高可用狀態(tài)決策

    獨(dú)裁式:一個(gè)決策者與多個(gè)上報(bào)者
    協(xié)商式:主從通信問題
    民主式:投票選舉,腦裂混亂問題

    可擴(kuò)展性

    設(shè)計(jì)模式
    正確預(yù)測變化,完美封裝變化。
    唯一不變的是變化
    變與不變,穩(wěn)定層與變化層的確立。

    創(chuàng)新

    小公司引入新技術(shù),大公司創(chuàng)造新技術(shù)。

    安全

    功能上的安全,在攻與防的矛盾中逐步完善。
    架構(gòu)上的安全
    防火墻一般不適用海量用戶訪問與高并發(fā)。
    運(yùn)營商或云服務(wù)商具備強(qiáng)大的帶寬和流量清洗能力。

    規(guī)模

    規(guī)模的線性增加帶來的是復(fù)雜度的指數(shù)增加。
    數(shù)據(jù)越來越多,系統(tǒng)復(fù)雜度也會由量變帶來質(zhì)變。
    大數(shù)據(jù)的三架馬車。
    傳統(tǒng)mysql推薦單表5000萬行左右。

    名詞解釋

    CDN:Content Delivery Network
    GSLB:Global Server Load Balance

    規(guī)范

    憑借個(gè)人經(jīng)驗(yàn)與感覺設(shè)計(jì)架構(gòu)。
    積累自己的儲備庫。
    大公司具備的平臺、資源和積累是架構(gòu)衍生的關(guān)鍵。
    環(huán)境逼迫創(chuàng)新。
    情境激活靈感。

    建筑

    對于建筑來說,永恒是主題。
    對于軟件來說,變化是主題。
    條條大路通羅馬,要綜合選擇。

    備選方案

    3-5個(gè)
    幾乎沒有無暇的方案
    如果你有一把錘子,那么所有的問題在你看來都是釘子。
    不要被既有經(jīng)驗(yàn)局限。
    備選階段關(guān)注技術(shù)選型,而不是技術(shù)細(xì)節(jié)。
    360度環(huán)評:最簡派、最牛派、最熟派、領(lǐng)導(dǎo)派
    極端情況的出現(xiàn)畢竟是小概率事件,留有較多余力的時(shí)候再去考慮。
    舉例:
    1.橫向擴(kuò)展
    2.系統(tǒng)拆分
    不同的方案,面對不同的公司情況,考慮問題的側(cè)重點(diǎn)應(yīng)該不同。
    權(quán)值的設(shè)定應(yīng)該依具體情況而定。
    按優(yōu)先級選擇。
    詳細(xì)方案的設(shè)計(jì)階段可能顯露出備選方案中遺漏的關(guān)鍵點(diǎn),進(jìn)而導(dǎo)致
    備選方案全局否定。架構(gòu)師應(yīng)該在早期看的更深入。
    海納百川,博采眾長。

    關(guān)系數(shù)據(jù)庫

    高性能數(shù)據(jù)庫集群:

    • 讀寫分離:將訪問壓力分散到多個(gè)節(jié)點(diǎn)。主機(jī)讀寫,從機(jī)讀操作。
      主從復(fù)制延遲問題:
      1.寫操作后的讀操作指定發(fā)給主機(jī)。
      2.從機(jī)讀取失敗后再讀一次主機(jī),二次讀取會增加主機(jī)壓力。
      3.關(guān)鍵業(yè)務(wù)全部指向主機(jī),非關(guān)鍵業(yè)務(wù)由從機(jī)完成。
    • 分庫分表:既分散訪問壓力,又分散存儲壓力。
      join操作問題:無法使用join
      事務(wù)問題:分布式事務(wù)解決方案性能不高。
      成本問題:業(yè)務(wù)分庫一般后期進(jìn)行。前期業(yè)務(wù)規(guī)模小且不穩(wěn)定。
    • 單表數(shù)據(jù)拆分的兩種方式:
      垂直拆分:不常用的字段剝離出去。
      水平拆分:如果單表行數(shù)超過5000萬,相對來說可以考慮拆分。
      范圍路由:單表水平分段建議100萬到2000萬之間。
      最后一張表可能導(dǎo)致分布不均。
      Hash路由:所有表分布均勻,但后期擴(kuò)充要重分布。
      配置路由:記錄拆分信息,利于擴(kuò)充,但多一次查詢。
      拆分難點(diǎn):粒度選取。
      舉例:count()
      拆分后的多個(gè)表求總記錄數(shù),需要把每張表的count()
      累加求和,性能會受到影響。引入記錄數(shù)表記錄當(dāng)前表
      的行數(shù),又會導(dǎo)致同步更新的問題,復(fù)雜度增加。
      order by操作無法進(jìn)行,需要單表排序后引入中間件匯總排序。
    • 讀寫分離實(shí)現(xiàn):
      程序代碼封裝:實(shí)現(xiàn)簡單,但每個(gè)語言都需要自己實(shí)現(xiàn)一次,無法通用。
      如:TDDL(Taobao Distributed Data Layer)頭都大了!
      中間件封裝:數(shù)據(jù)庫中間件對業(yè)務(wù)服務(wù)器提供的是標(biāo)準(zhǔn)SQL接口。
      實(shí)現(xiàn)復(fù)雜,主從切換服務(wù)器無感知。
      如:mysql-proxy、mysql-router、奇虎360的Atlas。
    • NoSQL
      關(guān)系數(shù)據(jù)庫的缺點(diǎn):
      1.無法存儲數(shù)據(jù)結(jié)構(gòu),存儲的是行記錄。
      2.schema擴(kuò)展不方便。擴(kuò)充列導(dǎo)致表長時(shí)間鎖定。
      3.大數(shù)據(jù)場景下IO較高。即使是對某一列進(jìn)行統(tǒng)計(jì),
      關(guān)系數(shù)據(jù)庫也會將整行進(jìn)行讀取。
      4.且全文搜索能力比較弱。
      NoSQL!= no sql 而是 NoSQL = Not only sql
      針對上述缺點(diǎn)常見的NoSql方案:
      1.k-v存儲:Redis
      2.文檔數(shù)據(jù)庫:MongoDB
      3.列式數(shù)據(jù)庫:HBase
      4.全文搜索引擎:Elasticsearch
      1.Redis事務(wù)只支持I(是單進(jìn)程單線程的工作模式)和C,不支持
      A(不支持回滾)和D.
      2.no-schema的文檔數(shù)據(jù)庫,如JSON數(shù)據(jù)是自描述的,無需在使用前
      定義字段,讀取一個(gè)JSON中的不存在的字段也不會導(dǎo)致SQL的語法錯(cuò)誤。
      JSON比起先要執(zhí)行DDL的關(guān)系數(shù)據(jù)庫要方便更多。但某些對事務(wù)要求嚴(yán)格
      的業(yè)務(wù)場景是不能使用文檔數(shù)據(jù)庫的。通常可以sql+noSql組合使用。
      3.行式存儲可以同時(shí)高效讀取多個(gè)列,也可以同時(shí)在一行中對多個(gè)列進(jìn)行
      寫操作。但在海量數(shù)據(jù)進(jìn)行統(tǒng)計(jì)的場景中并不適用。普通行式數(shù)據(jù)庫一般
      壓縮率在3:1到5:1左右,而列式數(shù)據(jù)庫壓縮率一般在8:1到30:1左右。
      4.全局搜索引擎技術(shù)原理:倒排索引。
      正排索引:根據(jù)文檔名稱來查詢文檔內(nèi)容。
      倒排索引:根據(jù)關(guān)鍵詞來查詢文檔內(nèi)容。
      全文搜索引擎的索引對象是單詞和文檔,而關(guān)系數(shù)據(jù)庫的索引對象是鍵和行。
      全文搜索引擎在支持關(guān)系型數(shù)據(jù)全文搜索時(shí)需要JSON(不唯一)與表對應(yīng)轉(zhuǎn)換。
      Elasticsearch是分布式的文檔存儲數(shù)據(jù)庫。它能存儲和檢索復(fù)雜的數(shù)據(jù)結(jié)構(gòu)
      ————序列化稱為JSON文檔————以實(shí)時(shí)的方式。在Elasticsearch中,每個(gè)字
      段的所有數(shù)據(jù)都是默認(rèn)被索引的。即每個(gè)字段都有為了快速索引設(shè)置的專用倒
      排索引。而且,不像其他多數(shù)的數(shù)據(jù)庫,它能在相同的查詢中使用所有的倒排
      索引,并以驚人的速度返回結(jié)果。
    • 緩存
      將可能重用的數(shù)據(jù)放到內(nèi)存中,一次生成,多次使用,避免每次使用都去訪問
      存儲系統(tǒng)。
      緩存穿透:故意訪問不存在的數(shù)據(jù),空值替代。
      生成緩存耗費(fèi)時(shí)間和資源,當(dāng)競爭對手故意爬取所有分頁時(shí)(通常
      緩存前10頁比如),會拖慢整體。
      緩存雪崩:緩存失效后引起系統(tǒng)性能極具下降。
      解決方法:1.更新鎖機(jī)制:加鎖保證只有一個(gè)線程進(jìn)行緩存更新。
      2.后臺更新機(jī)制:后臺線程更新緩存而不是由業(yè)務(wù)線程更新緩存。
      緩存本身的有效期設(shè)置為永久,后臺線程定時(shí)更新緩存。
      定時(shí)讀取:頻繁查看被踢的數(shù)據(jù),及時(shí)更新空值。
      消息隊(duì)列通知:業(yè)務(wù)線程發(fā)現(xiàn)緩存丟失主動發(fā)消息
      通知后臺線程更新緩存。相對簡單,且可以用于系統(tǒng)
      預(yù)熱。
      緩存熱點(diǎn):某明星大咖的消息復(fù)制多份緩存,緩解服務(wù)器壓力。
      PPC:Process per Connection,每次有new connection,then fork a new process.
    • some problems:
  • Fork is expensive.
  • IPC:Interprocess Communication is expensive.
  • The increasing number of processes are not good for
    performance.
    • solvable method:
      1.prefork,which needs system solve “驚群” phenomenon.
      2.TPC:Thread per Connection.
      3.進(jìn)程池:
      read操作改為非阻塞,然后進(jìn)程不斷地輪詢多個(gè)連接,
      但這并不優(yōu)雅,且連接達(dá)到幾千上萬的時(shí)候,效率低下。
      4.I/O多路復(fù)用結(jié)合線程池:Reactor 即:反應(yīng)堆(事件反應(yīng))非阻塞
      同步網(wǎng)絡(luò)模型
      當(dāng)多個(gè)連接共用一個(gè)阻塞對象后,進(jìn)程只需要在一個(gè)阻塞對
      象上等待,而無需再輪詢所有的連接。
      當(dāng)某條連接有新的數(shù)據(jù)可以處理時(shí),操作系統(tǒng)會通知進(jìn)程,
      進(jìn)程從阻塞狀態(tài)返回,開始進(jìn)行業(yè)務(wù)處理。
      Reactor模式也稱為Dispatcher模式,即:I/O多路復(fù)用
      統(tǒng)一監(jiān)聽事件,收到事件后分配給某個(gè)進(jìn)程。
      實(shí)用類型:單Reactor單進(jìn)程/單線程。
      單Reactor多線程。
      多Reactor多進(jìn)程/線程。
      上述具體線程還是進(jìn)程依具體編程環(huán)境及平臺有
      關(guān)。java一般使用多線程。
      5.Proactor 前攝器 類比proactive主動的,主動器
      Reactor:來了事件我通知你,你來處理。
      Proactor:來了事件我來處理,處理完了我通知你。
      解釋:”我“是操作系統(tǒng),”事件“是新的連接、有數(shù)據(jù)可讀、數(shù)據(jù)可寫。
      流程:
      1.Proactor Initiator負(fù)責(zé)創(chuàng)建Proactor和Handler,并
      將Proactor和Handler都通過Asynchronous Operation
      Processor注冊到內(nèi)核。
      2.Asynchronous Operation Processor負(fù)責(zé)處理注冊請
      求,并完成I/O操作后通知Proactor。
      3.Asynchronous Operation Processor完成I/O操作后
      通知Proactor。
      4.Proactor根據(jù)不同的事件類型回調(diào)不同的Handler進(jìn)行
      業(yè)務(wù)處理。
      5.Handler完成業(yè)務(wù)處理,Handler也可以注冊新的
      Handler到內(nèi)核進(jìn)程。
      目前windows下采用IOCP,而linux采用Reactor模式為主
      因?yàn)閘inux下的AIO并不完善。
      集群高性能:負(fù)載均衡不只是為了計(jì)算單元的負(fù)載達(dá)到均衡狀態(tài),而是一種綜合的考慮。
    • DNS負(fù)載均衡
      地域級別的均衡。就近原則。
    • 硬件負(fù)載均衡
      集群級別負(fù)載均衡。昂貴,擴(kuò)展能力大。
    • 軟件負(fù)載均衡
      機(jī)器級別負(fù)載均衡。通過軟件實(shí)現(xiàn)負(fù)載均衡功能。
    • 負(fù)載均衡算法
      任務(wù)平分類:輪詢
      負(fù)載均衡類:權(quán)重輪詢
      性能最優(yōu)類:按服務(wù)器性能分配,適當(dāng)概率判斷服務(wù)器性能
      Hash類:同IP或者同session id歸屬到同一服務(wù)器

    CAP

    • What is Partition Tolerance?

    System continues to work despite message loss or partial failure.
    The System will continue to function when network partitons occur.

    • What is CP?當(dāng)發(fā)生分區(qū)時(shí),返回錯(cuò)誤。
    • What is AP?當(dāng)發(fā)生分區(qū)時(shí),返回錯(cuò)誤值。
    CAP理論的實(shí)踐
    • 需要將系統(tǒng)內(nèi)的數(shù)據(jù)按照不同的應(yīng)用場景和要求進(jìn)行分類,每類數(shù)據(jù)選擇不同的的策略。
    • 比如:用戶信息數(shù)據(jù)選擇AP,而用戶賬號數(shù)據(jù)選擇CP。
    • AP相當(dāng)于是放寬了一致性的要求,可用就好。CP由于追求強(qiáng)一致性而導(dǎo)致不可用情況發(fā)生。
    • CAP是忽略網(wǎng)絡(luò)延遲的。有時(shí)強(qiáng)一致性的要求導(dǎo)致只能單點(diǎn)寫入,其他節(jié)點(diǎn)備份,無法做到分布式情況下多點(diǎn)寫入。但并不意味著系統(tǒng)無法應(yīng)用分布式架構(gòu),可以兩個(gè)節(jié)點(diǎn)各自負(fù)責(zé)一半業(yè)務(wù),同時(shí)備份另一半。這樣即便其中一個(gè)節(jié)點(diǎn)發(fā)生故障,也只是影響一半的用戶。

    正常情況下,不存在CP和AP的選擇(即:當(dāng)P可以舍棄時(shí)),可以同時(shí)滿足CA。

    • 此情況我們需要考慮分區(qū)發(fā)生情況下的CP與AP的選擇,同時(shí)也要考慮P沒有發(fā)生情況下的CA的實(shí)現(xiàn)。
    • 不同的數(shù)據(jù)CA實(shí)現(xiàn)方式可能不一樣,比如:用戶賬號數(shù)據(jù)可以采用消息隊(duì)列,因?yàn)榭梢员容^好的控制實(shí)時(shí)性。而用戶信息數(shù)據(jù)可以采用數(shù)據(jù)庫同步的方式來實(shí)現(xiàn),因?yàn)閷?shí)現(xiàn)簡單。

    分區(qū)期間(一年可能5分鐘(4個(gè)9)、50分鐘(5個(gè)9))

    • 分區(qū)發(fā)生,則記錄相關(guān)日志。
    • 分區(qū)故障解決后,系統(tǒng)根據(jù)日志進(jìn)行數(shù)據(jù)恢復(fù)。
    • CAP關(guān)注的粒度是數(shù)據(jù),而不是整個(gè)系統(tǒng)。

    BASE

    • Basically Available 登錄比注冊重要。
    • Soft State 允許數(shù)據(jù)存在中間狀態(tài)(CAP理論中的數(shù)據(jù)不一致),但不影響系統(tǒng)整體可用性。
    • Eventual Consistency 系統(tǒng)中的所有副本經(jīng)過一定時(shí)間后,最終能夠達(dá)到一致性的狀態(tài)。是對AP方案的一個(gè)補(bǔ)充。

    FMFA(Failure mode and effects analysis)故障模式與影響分析

    • 是一套分析和思考的方法,應(yīng)用于各個(gè)領(lǐng)域。
    • 像登錄、注冊才是功能點(diǎn)。
    • 故障模式關(guān)注現(xiàn)象和對應(yīng)影響,即便原因不同。盡量使用量化描述,而非泛化。
    • 對于故障現(xiàn)象,殊途同歸,殊因同果,應(yīng)不同對待。

    存儲高可用

    主備倒換(主讀寫,備備份)與主從倒換(主讀寫,從讀)
    • 問題關(guān)鍵點(diǎn):狀態(tài)判斷、倒換決策和數(shù)據(jù)沖突修復(fù)。
    • 互連式與中介式(MongoDB(A)),還有模擬式(將備機(jī)模擬為客戶端進(jìn)而判別主機(jī)狀態(tài))。
    • 主主倒換需要雙向復(fù)制。
    開源的數(shù)據(jù)集中集群
    • ZooKeeper,ZAB協(xié)議,開源
    數(shù)據(jù)分散集群
    • 均衡性
    • 容錯(cuò)性
    • 可伸縮性
    • Hadoop,Namenode是一個(gè)中心服務(wù)器,負(fù)責(zé)數(shù)據(jù)分區(qū)的分配。HDFS,master/slave.

    分布式事務(wù)算法

    • 2PC(Two-phase commit protocol)
    • 提交請求階段,看看是否有No存在,都yes則提交執(zhí)行階段。
    • 強(qiáng)一致性算法,簡單,但不好用。
    • 3PC(Three-phase commit protocol)
    • 在2PC中間插入一個(gè)準(zhǔn)備階段。
    分布式一致性算法
    • Paxos,state machine replication(active replication)各個(gè)節(jié)點(diǎn)間復(fù)制操作
    • Raft,state machine replication(active replication)
    • ZAB,primary backup(passive replication)Leader節(jié)點(diǎn)執(zhí)行操作,將執(zhí)行結(jié)果復(fù)制給其他節(jié)點(diǎn)。

    數(shù)據(jù)分區(qū)

    • 地理級別重大災(zāi)害規(guī)避風(fēng)險(xiǎn)。每個(gè)區(qū)域負(fù)責(zé)一部分?jǐn)?shù)據(jù)。
    • 國家洲際間分區(qū)僅作為備份,而城市之間由于延遲低、業(yè)務(wù)相似,分區(qū)同時(shí)適合對外提供服務(wù)。
    復(fù)制規(guī)則
    • 集中式 所有分區(qū)將數(shù)據(jù)備份到備份中心。
    • 互備式 形成閉合鏈,但如何加入新的一環(huán)。
    • 獨(dú)立式 一對一,不同區(qū)域。

    計(jì)算高可用

    主備

    冷備(未啟動)與 溫備(已啟動)

    主從

    從機(jī)也干活,主機(jī)有故障,從機(jī)升級主機(jī)(一般升級配置),新增從機(jī)。

    對稱集群與非對稱集群

    業(yè)務(wù)高可用

    • 異地多活,把雞蛋放到多個(gè)籃子里。
    • 優(yōu)先實(shí)現(xiàn)核心業(yè)務(wù)的異地多活架構(gòu)!
    • 物理(地理等)因素導(dǎo)致無法很快。所以取舍:核心數(shù)據(jù)最終一致性。采用多種手段,保證絕大部分用戶的核心業(yè)務(wù)異地多活!
    • 保證最終一致性,不保證實(shí)時(shí)一致性。

    異地多活設(shè)計(jì)步驟

    • 1.業(yè)務(wù)分級,根據(jù)不同標(biāo)準(zhǔn)不同情境(核心、訪問量、盈利)區(qū)分業(yè)務(wù)。
    • 2.數(shù)據(jù)分類,根據(jù)(數(shù)據(jù)量、唯一性、實(shí)時(shí)性、可丟失性、可恢復(fù)性)
    3.數(shù)據(jù)同步
    • 存儲系統(tǒng)同步(延遲高)
    • 消息隊(duì)列同步(無事務(wù)性和無時(shí)序性業(yè)務(wù))
    • 重復(fù)生成(如:cookie、session)
    4.異常處理
    • 多通道同步
    • 同步和訪問結(jié)合:本地沒有去其他接口找。
    • 日志記錄
    • 用戶補(bǔ)償

    總結(jié)

    以上是生活随笔為你收集整理的菜鸟架构笔记:上部的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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