文章總結(jié)2021上半年度

1.數(shù)據(jù)庫優(yōu)化方案

硬件層面:升級機(jī)器配置,初期性能提升效果較明顯,但是成本高,不作為優(yōu)先方案
軟件層面:(按優(yōu)先級)sql調(diào)優(yōu)、表結(jié)構(gòu)優(yōu)化、讀寫分離、數(shù)據(jù)庫集群、分庫分表

sql調(diào)優(yōu)

簡化代碼的嵌套或者關(guān)聯(lián)join等操作,根據(jù)需要的情況盡可能的命中索引,讓數(shù)據(jù)變化少的字段、有優(yōu)化添加索引的字段、主鍵等優(yōu)先被判斷

表結(jié)構(gòu)優(yōu)化

添加冗余字段

架構(gòu)優(yōu)化

增加集群、訪問數(shù)據(jù)庫前加入redis減少訪問壓力,讀多于寫時,可使主實例負(fù)責(zé)寫,反之亦可

分庫分表

業(yè)界流傳標(biāo)準(zhǔn),數(shù)據(jù)量達(dá)到500萬可考慮分表,而系統(tǒng)發(fā)展到一定規(guī)模,必然需要分庫操作,單數(shù)據(jù)庫是有性能瓶頸的。
拆分表有垂直切分和水平切分,垂直切分切分字段,細(xì)分類別。水分切分可根據(jù)數(shù)據(jù)類型,數(shù)據(jù)入庫時間等進(jìn)行劃分

最后分庫分表帶來了復(fù)雜性,比如跨庫關(guān)聯(lián)查詢、分布式事務(wù)

、排序分頁函數(shù)計算問題、分布式id、多數(shù)據(jù)源等
解決方案有如下可參考


image.png

2.緩存一致性問題解決方案

對于緩存和數(shù)據(jù)庫的一致性來說

1.先刪緩存在更新數(shù)據(jù)庫
保證一致性,可采用延遲雙刪,更新完數(shù)據(jù)庫后,在slepp一段時間,再次刪除緩存,sleep的時間要大于讀寫緩存的時間
2.先更新數(shù)據(jù)庫在刪除緩存
可采用消息隊列,更新完成后往隊列發(fā)消息,消費到消息在刪除緩存,借住了消息隊列的重試機(jī)制,但實際上這樣依舊不能保證緩存一致性,引入了消息隊列后怎么保證消息不丟失不說,消息隊列響應(yīng)的這段時間依舊會有短暫的不一致
還可采用進(jìn)階版消息隊列,借助監(jiān)聽binlog消息隊列來做刪除緩存操作
如果對一致性要求不是很高,也可以采用設(shè)置緩存的過期時間來保證數(shù)據(jù)的一致性

對于分布式系統(tǒng)中緩存的一致性

用的是hash算法計算出放在哪一臺服務(wù)器,但擴(kuò)容時數(shù)據(jù)重新分布,需要變動的數(shù)據(jù)多,影響性能,進(jìn)而采取了hash環(huán),依靠虛擬節(jié)點對應(yīng)真實節(jié)點來實現(xiàn)負(fù)載均衡的情況下盡可能的減少服務(wù)器擴(kuò)容帶來的數(shù)據(jù)遷移問題

3.分布式算法

四大理論基礎(chǔ):

1.拜占庭將軍問題
2.CAP理論
3.ACID理論
4.BASE理論

八大分布式協(xié)議和算法:

1.Paxos算法
2.Raft算法
3.一致性Hash算法
4.Gossip協(xié)議算法
5.Quorum NWR算法
6.FBFT算法 7.POW算法 8.ZAB協(xié)議
拜占庭問題的解法


image.png

4.設(shè)計模式

工廠模式

工廠封裝好了客戶想要的產(chǎn)品,客戶對象只需要根據(jù)需求去申請即可

單例模式

在全局中保證某一類只有一個實例,比如在spring中的類就使用注入的方式注入全局的單例

適配器模式

把一個類的接口變換為客戶端所期待的另一種接口,中間多一層處理,我的理解像dto實體就可以用來處理一些數(shù)據(jù)合并、數(shù)據(jù)轉(zhuǎn)換,最后返回客戶端想要的數(shù)據(jù)集合對象

門面模式

提供了一個高層次的接口作為一個系統(tǒng)的入口,使得系統(tǒng)易于使用,一個系統(tǒng)應(yīng)只有一個門面類,此類是一個單例模式

代理模式

給某一個對象提供一個代理對象,并由其對源對象進(jìn)行引用,客戶端分辨不出代理對象和真實對象

策略模式

在不影響客戶端的情況下,根據(jù)不同的環(huán)境和行為進(jìn)行算法的變換,提供所謂不同的策略

模板方法模式

相當(dāng)于寫一個抽象類,實現(xiàn)或構(gòu)造了部分邏輯,也聲明了一些抽象方法

訪問者模式

訪問者模式:訪問者模式的目的是封裝一些施加于某種數(shù)據(jù)結(jié)構(gòu)元素之上的操作。一旦這些操作需要修改的話,接受這個操作的數(shù)據(jù)結(jié)構(gòu)可以保持不變。訪問者模式適用于數(shù)據(jù)結(jié)構(gòu)相對未定的系統(tǒng),它把數(shù)據(jù)結(jié)構(gòu)和作用于結(jié)構(gòu)上的操作之間的耦合解脫開,使得操作集合可以相對自由的演化。訪問者模式使得增加新的操作變的很容易,就是增加一個新的訪問者類。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容