創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!

如何利用SpringAOP 實現(xiàn)主從讀寫分離?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
深刻討論為什么要讀寫分離?
為了服務(wù)器承載更多的用戶?提升了網(wǎng)站的響應(yīng)速度?分?jǐn)倲?shù)據(jù)庫服務(wù)器的壓力?就是為了雙機熱備又不想浪費備份服務(wù)器?上面這些回答,我認(rèn)為都不是錯誤的,但也都不是完全正確的。「讀寫分離」并不是多么神奇的東西,也帶不來多么大的性能提升,也許更多的作用的就是數(shù)據(jù)安全的備份吧。
從一個庫到讀寫分離,從理論上對服務(wù)器壓力來說是會帶來一倍的性能提升,但你仔細(xì)思考一下,你的應(yīng)用服務(wù)器真的很需要這一倍的提升么?那倒不如你去試著在服務(wù)器使用一下緩存系統(tǒng),如 Memcached、Redis 這些分布式緩存,那性能可能是幾十倍的提升。而且,在服務(wù)器硬件異常強悍及性能廉價的今天,完全更沒必要了,所以,在今天,我認(rèn)為它更多的職責(zé)就是為了數(shù)據(jù)安全而設(shè)計的,同時又提升了一些性能,這樣也挺好。
可能我們更應(yīng)該稱之為主從分離。
利用 AOP 實現(xiàn)讀寫分離
讀寫分離方式很簡單,就是在你讀數(shù)據(jù)是去連接從庫,在你寫數(shù)據(jù)的時候去連接主庫,具體代碼實現(xiàn)當(dāng)然就是連接時候去操作了,這沒什么難度,在代碼里寫就是了。可是,有追求的程序猿都是不是這么解決問題的呢!
其實通過上篇的 Spring AOP 攔截器的基本實現(xiàn) 我們知道 AOP 可以實現(xiàn)在方法開始執(zhí)行前后插入執(zhí)行我們想要的代碼,那這樣,我們是不是可以在執(zhí)行數(shù)據(jù)庫操作前根據(jù)業(yè)務(wù)來動態(tài)切換數(shù)據(jù)源呢?
思考一下這個方式理論上好像是可行的,這種方式首先不需要在業(yè)務(wù)代碼中去做切換,二是可能以后我們不需要讀寫分離了,把 AOP 切換的代碼去掉就行了,三是可能就是拓展性好了。
等不了了,開始擼代碼
你可能想深入的了解的話,我這里給你幾個程序里用到的關(guān)鍵字enum(枚舉)、annotation(自定義注解)、JoinPoint(注入點)、AbstractRoutingDataSource(數(shù)據(jù)源接口子類),你理解了這些就知道了,其實你并不需要深入某些深層的東西,了解下即可。
一、建立JdbcContextHolder.java類
public class JdbcContextHolder {
private static final ThreadLocal<String> contextHolder = new ThreadLocal<String>();
public static void setJdbcType(String jdbcType) {
contextHolder.set(jdbcType);
}
public static void setSlave() {
setJdbcType("slave");
}
public static void setMaster() {
clearJdbcType();
}
public static String getJdbcType() {
return (String) contextHolder.get();
}
public static void clearJdbcType() {
contextHolder.remove();
}
}
本文題目:如何利用SpringAOP實現(xiàn)主從讀寫分離-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.chinadenli.net/article34/dccsse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、網(wǎng)站策劃、品牌網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容