現在我們有一個zuul+redis+springcloud,然后有多個springboot做的微服務,其中有一個專門做個人中心的微服務,我們會在這個服務做注冊登錄操作,然后別的微服務做業務處理。因為是第一次做,不知道這個網關究竟可不可以做到多個微服務之間的session共享,就是我們在微服務A做了登錄操作,保存用戶資訊到session,然后在微服務B里面取到用戶資訊。多個微服務的專案名是不一樣的。如果是同一個微服務,部署在不同的服務器上面這種情況我們是可以做到session共享。
uj5u.com熱心網友回復:
不如用haproxy做負載均衡 使用iphash 保持session一致性uj5u.com熱心網友回復:
用redis session共享也行嘛uj5u.com熱心網友回復:
不建議系統設計成這樣子微服務連資料庫都是隔離的,你這連快取都能共享,這個不合理,各個服務都能訪問session,如果個人中心升級,session存盤的物件結構變化其他服務是不是都得升級?
服務倒是可以有辦法多個版本兼容,但你session只有一個,你這耦合度太高,有違微服務架構的初衷
建議做成松散的授權登錄模式比較好
uj5u.com熱心網友回復:
Session ID 是基于瀏覽器Cookie隨發送請求的時候自動附帶的,只要你的網關服務Zuul沒有過濾掉Cookie的HTTP Header,你的上游服務是可以獲取得到ID標識,并在適當的過濾器或者攔截器進行查詢并封裝到Request Session中的,至于你的Session資訊是存盤在Redis還是其他的地方,完全可以自己定。不過我記得Spring好像對這方面是有支持的,建議你看一下Spring-Session這個專案。https://docs.spring.io/spring-session/docs/current/reference/html5/
uj5u.com熱心網友回復:
第一次設計,也沒大佬帶領不知道怎么設計,現在這個session問題解決了,只要把各個微服務統一不要用path路徑就能共享了,但是現在我們資料庫也根據微服務劃分了,每個微服務對應一個資料庫,現在有些資料要從別的微服務獲取,不知道用哪種方式合理點,我們最壞的打算就是模擬http做為各個微服務之間的互動
uj5u.com熱心網友回復:
feign 可以呼叫其他服務的資料
uj5u.com熱心網友回復:
做負載均衡的時候使用iphash策略uj5u.com熱心網友回復:
https://blog.csdn.net/luckyZQC/article/details/105731463參考這個
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/63218.html
標籤:Java EE
上一篇:java資料庫入門求助帖
下一篇:java專案運行不了!!!
