成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Session實(shí)戰(zhàn)-傳統(tǒng)單體應(yīng)用集群部署解決方案

Ku_Andrew / 1547人閱讀

摘要:它還提供透明的整合允許以應(yīng)用程序容器即中立的方式替換。其他功能包括群集會(huì)話使得支持群集會(huì)話變得輕而易舉,而不會(huì)受限于特定于應(yīng)用程序容器的解決方案。這意味著開(kāi)發(fā)人員使用可借助支持的實(shí)現(xiàn)切換實(shí)現(xiàn)。容器初始化配置創(chuàng)建了一個(gè)名為實(shí)現(xiàn)的。

場(chǎng)景值1

一個(gè)維護(hù)了幾百年的單體老項(xiàng)目,突然就火起來(lái)了,訪問(wèn)人數(shù)突然暴增,服務(wù)器資源告急,擔(dān)心一下駕崩,老板一個(gè)電話過(guò)來(lái)跟你說(shuō):“!4@!#?。。?。?¥@!”,然后你得大半夜從睡夢(mèng)中醒來(lái)屁顛屁顛的整服務(wù)器。

場(chǎng)景值2

下班了,準(zhǔn)備發(fā)完版本就回去。等等,老板還在演示,又不能中斷服務(wù)器去部署應(yīng)用。一不小心,一個(gè)鐘過(guò)去了,還沒(méi)結(jié)束,你得等啊等啊,終于可以發(fā)布了。然后你利索的./shutdown下去,代碼啪啦啪啦的上傳完,準(zhǔn)備啟動(dòng)了,盯著啟動(dòng)日志,天哪,怎么log卡住不動(dòng)了。然后客服機(jī)立馬就有人來(lái)找你麻煩了。

更多場(chǎng)景值,此處省略好多 ...

Spring Session是什么

Spring Session提供了一個(gè)管理用戶會(huì)話信息的API和實(shí)現(xiàn)。它還提供透明的整合:

HttpSession - 允許以應(yīng)用程序容器(即Tomcat)中立的方式替換HttpSession。其他功能包括:

群集會(huì)話 - Spring Session使得支持群集會(huì)話變得輕而易舉,而不會(huì)受限于特定于應(yīng)用程序容器的解決方案。

多個(gè)瀏覽器會(huì)話 - 春季會(huì)話支持在單個(gè)瀏覽器實(shí)例中管理多個(gè)用戶的會(huì)話(即與Google類似的多個(gè)經(jīng)過(guò)身份驗(yàn)證的帳戶)。

RESTful API - Spring Session允許在頭文件中提供會(huì)話標(biāo)識(shí)符以使用RESTful API

WebSocket - 提供HttpSession在接收WebSocket消息時(shí)保持活動(dòng)狀態(tài)的能力

白話:spring session抽象了一套API,并基于這套API對(duì)servlet容器提供的session進(jìn)行無(wú)侵入集成,比如使用redis進(jìn)行session管理,實(shí)現(xiàn)所謂的分布式session。

Spring Session坐標(biāo)

以Maven做為依賴管理,基于redis的Spring Session實(shí)現(xiàn)


    org.springframework.session
    spring-session-data-redis
    1.0.2.RELEASE
    pom
Spring Session怎么使用

Spring session對(duì)主流的Servlet容器如Tomcat提供透明的整合HttpSession。這意味著開(kāi)發(fā)人員使用HttpSession可借助Spring Session支持的實(shí)現(xiàn)切換實(shí)現(xiàn)。

使用redis

Redis有多種客戶端實(shí)現(xiàn),常用的有Jedis和Lettuce。具體差別讀者可另行翻閱其他資料。本文以Jedis為例。

基于java配置

Sring Java配置

@EnableRedisHttpSession
public class Config{
    @Bean
    public LettuceConnectionFactory connectionFactory() {
        return new JedisConnectionFactory();
    }
}

說(shuō)明:默認(rèn)的JedisConnectionFactory()構(gòu)造方法是鏈接localhost:6379無(wú)密碼的redis-server,實(shí)際生產(chǎn)環(huán)境可按需選擇合適的構(gòu)造方法。

Java Servlet容器初始化
Spring配置創(chuàng)建了一個(gè)名為springSessionRepositoryFilter實(shí)現(xiàn)的Spring Bean Filter。該springSessionRepositoryFilterbean負(fù)責(zé)HttpSession用Spring Session支持的自定義實(shí)現(xiàn)來(lái)替換它。

為了讓我們Filter發(fā)揮它的魔力,Spring需要加載Config.java。最后,我們需要確保我們的Servlet容器(即Tomcat)使用我們springSessionRepositoryFilter的每個(gè)請(qǐng)求。
幸運(yùn)的是,Spring Session提供了一個(gè)AbstractHttpSessionApplicationInitializer,繼承它,把配置傳入進(jìn)去即可,代碼如下:

public class Initializer extends AbstractHttpSessionApplicationInitializer {
    publicInitializer() {
        super(Config.class);
    }
}

基于xml配置

bean 配置





基于xml的配置也相當(dāng)簡(jiǎn)單,這里注意一下p命名空間,添加引用xmlns:p="http://www.springframework.org/schema/p"

web.xml 配置 filter


    springSessionRepositoryFilter
    org.springframework.web.filter.DelegatingFilterProxy


    springSessionRepositoryFilter
    /*
    REQUEST
    ERROR

到此為止,應(yīng)用已經(jīng)集成了Spring Session,感覺(jué)不要太爽了!

測(cè)試Spring Session

把瀏覽器本地緩存先清一清

輸入訪問(wèn)地址 http://localhost:8080/login


注意看中間的紅色部分,沒(méi)有了原來(lái)的jessionid,但是新增了 session。這是實(shí)現(xiàn)分布式session的關(guān)鍵。

登錄系統(tǒng),訪問(wèn)到主頁(yè)

關(guān)閉服務(wù)器,重啟

刷新頁(yè)面,咦?不需要重新登錄?

集群部署(負(fù)載均衡)

這里不是本文重點(diǎn),就不展開(kāi)細(xì)說(shuō)了,由于上面已經(jīng)解決了應(yīng)用服務(wù)器session共享的問(wèn)題,所以集群實(shí)現(xiàn)也是非常的簡(jiǎn)便,通過(guò)nginx反向代理到2個(gè)部署到應(yīng)用的tomcat即可。

推薦

ifast是一款基于Spring Boot + Mybatis + Mybatis Plus搭建的快速開(kāi)發(fā)平臺(tái)。ifast集成了代碼生成器,具有高效的開(kāi)發(fā)效率。以Spring Boot為基礎(chǔ)框架,Mybatis plus為數(shù)據(jù)訪問(wèn)層, Apache Shiro為權(quán)限授權(quán)層,Ehcahe對(duì)常用數(shù)據(jù)進(jìn)行緩存,基于Bootstrap構(gòu)建的hplus作為前端框架。
訪問(wèn)請(qǐng)點(diǎn)擊 Java快速開(kāi)發(fā)腳手架 ifast

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39947.html

相關(guān)文章

  • Spring Session實(shí)戰(zhàn)-傳統(tǒng)單體應(yīng)用集群部署解決方案

    摘要:它還提供透明的整合允許以應(yīng)用程序容器即中立的方式替換。其他功能包括群集會(huì)話使得支持群集會(huì)話變得輕而易舉,而不會(huì)受限于特定于應(yīng)用程序容器的解決方案。這意味著開(kāi)發(fā)人員使用可借助支持的實(shí)現(xiàn)切換實(shí)現(xiàn)。容器初始化配置創(chuàng)建了一個(gè)名為實(shí)現(xiàn)的。 場(chǎng)景值1 一個(gè)維護(hù)了幾百年的單體老項(xiàng)目,突然就火起來(lái)了,訪問(wèn)人數(shù)突然暴增,服務(wù)器資源告急,擔(dān)心一下駕崩,老板一個(gè)電話過(guò)來(lái)跟你說(shuō):!4@!#?。。?。?¥@!...

    W_BinaryTree 評(píng)論0 收藏0
  • 天天吹微服務(wù),單體應(yīng)用有啥不好?

    摘要:?jiǎn)误w應(yīng)用,由于就是一個(gè)項(xiàng)目,所有的功能都是寫在一個(gè)項(xiàng)目中,不可避免的出現(xiàn)項(xiàng)目過(guò)度復(fù)雜的情況。 單體應(yīng)用確實(shí)有問(wèn)題! 最近在研究微服務(wù)架構(gòu),有一點(diǎn)點(diǎn)心得,打算在公眾號(hào)上寫幾篇文章和大家慢慢分享下。 這個(gè)話題有點(diǎn)大,我會(huì)分幾篇文章和大家慢慢說(shuō),今天就先來(lái)說(shuō)說(shuō)傳統(tǒng)的單體應(yīng)用有哪些弊端,正是因?yàn)閱误w應(yīng)用存在的弊端,使得我們不得不考慮發(fā)展微服務(wù)。 人類發(fā)展的歷史就是一個(gè)社會(huì)分工不斷細(xì)化的歷史,...

    fish 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<