国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Spring Session實戰-傳統單體應用集群部署解決方案

W_BinaryTree / 3065人閱讀

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

場景值1

一個維護了幾百年的單體老項目,突然就火起來了,訪問人數突然暴增,服務器資源告急,擔心一下駕崩,老板一個電話過來跟你說:“!4@!#!!¥@!¥1¥@!”,然后你得大半夜從睡夢中醒來屁顛屁顛的整服務器。

場景值2

下班了,準備發完版本就回去。等等,老板還在演示,又不能中斷服務器去部署應用。一不小心,一個鐘過去了,還沒結束,你得等啊等啊,終于可以發布了。然后你利索的./shutdown下去,代碼啪啦啪啦的上傳完,準備啟動了,盯著啟動日志,天哪,怎么log卡住不動了。然后客服機立馬就有人來找你麻煩了。

更多場景值,此處省略好多 ...

Spring Session是什么

Spring Session提供了一個管理用戶會話信息的API和實現。它還提供透明的整合:

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

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

多個瀏覽器會話 - 春季會話支持在單個瀏覽器實例中管理多個用戶的會話(即與Google類似的多個經過身份驗證的帳戶)。

RESTful API - Spring Session允許在頭文件中提供會話標識符以使用RESTful API

WebSocket - 提供HttpSession在接收WebSocket消息時保持活動狀態的能力

白話:spring session抽象了一套API,并基于這套API對servlet容器提供的session進行無侵入集成,比如使用redis進行session管理,實現所謂的分布式session。

Spring Session坐標

以Maven做為依賴管理,基于redis的Spring Session實現


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

Spring session對主流的Servlet容器如Tomcat提供透明的整合HttpSession。這意味著開發人員使用HttpSession可借助Spring Session支持的實現切換實現。

使用redis

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

基于java配置

Sring Java配置

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

說明:默認的JedisConnectionFactory()構造方法是鏈接localhost:6379無密碼的redis-server,實際生產環境可按需選擇合適的構造方法。

Java Servlet容器初始化
Spring配置創建了一個名為springSessionRepositoryFilter實現的Spring Bean Filter。該springSessionRepositoryFilterbean負責HttpSession用Spring Session支持的自定義實現來替換它。

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

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

基于xml配置

bean 配置





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

web.xml 配置 filter


    springSessionRepositoryFilter
    org.springframework.web.filter.DelegatingFilterProxy


    springSessionRepositoryFilter
    /*
    REQUEST
    ERROR

到此為止,應用已經集成了Spring Session,感覺不要太爽了!

測試Spring Session

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

輸入訪問地址 http://localhost:8080/login


注意看中間的紅色部分,沒有了原來的jessionid,但是新增了 session。這是實現分布式session的關鍵。

登錄系統,訪問到主頁

關閉服務器,重啟

刷新頁面,咦?不需要重新登錄?

集群部署(負載均衡)

這里不是本文重點,就不展開細說了,由于上面已經解決了應用服務器session共享的問題,所以集群實現也是非常的簡便,通過nginx反向代理到2個部署到應用的tomcat即可。

推薦

ifast是一款基于Spring Boot + Mybatis + Mybatis Plus搭建的快速開發平臺。ifast集成了代碼生成器,具有高效的開發效率。以Spring Boot為基礎框架,Mybatis plus為數據訪問層, Apache Shiro為權限授權層,Ehcahe對常用數據進行緩存,基于Bootstrap構建的hplus作為前端框架。
訪問請點擊 Java快速開發腳手架 ifast

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69410.html

相關文章

  • Spring Session實戰-傳統單體應用集群部署解決方案

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

    Ku_Andrew 評論0 收藏0
  • 天天吹微服務,單體應用有啥不好?

    摘要:單體應用,由于就是一個項目,所有的功能都是寫在一個項目中,不可避免的出現項目過度復雜的情況。 單體應用確實有問題! 最近在研究微服務架構,有一點點心得,打算在公眾號上寫幾篇文章和大家慢慢分享下。 這個話題有點大,我會分幾篇文章和大家慢慢說,今天就先來說說傳統的單體應用有哪些弊端,正是因為單體應用存在的弊端,使得我們不得不考慮發展微服務。 人類發展的歷史就是一個社會分工不斷細化的歷史,...

    fish 評論0 收藏0

發表評論

0條評論

W_BinaryTree

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<