SAP Spartacus Session affinity
參見這個討論。
后端運行在多個 pods/節點時,當子序列請求過早進入時,后端將無法跨集群發送緩存失效請求。此外,如果多個請求分散在多個節點上,則會消耗延遲和不必要的資源。
對于單個客戶端,Spartacus 應該盡可能多地與單個后端交互。這在傳統上稱為“粘性會話”。
CCv2為此做了部分準備。它將 ROUTE cookie 添加到響應中。但是,此 cookie 不可配置且不使用 SameSite 策略。這意味著解耦的店面可能無法使用它,因為它作用于不同的域。今天似乎只有 chrome 有這個問題,但未來預計會有更多的瀏覽器出現。
不幸的是,今天的 Spartacus 不使用 ROUTE cookie。 Cookie 根本不會隨任何請求一起發送。為了利用 ROUTE cookie,必須執行以下操作:
為了確保 Spartacus(或更好:angular)將隨請求發送 cookie,請求必須使用 withCredentials: true 選項完成。 這可以在攔截器中完成,以便我們以通用方式執行此操作并確保沒有請求忘記這一點。
一旦前端這些增強到位,就會拋出錯誤,因為必須完成額外的后端配置。 必須添加一個新的配置屬性 corsfilter.ycommercewebservices.allowCredentials = true。
SAP Spartacus 端具體增強方式:
首先在 occ-config.ts 里增加一個配置項:useWithCredentials
然后新建一個 interceptor,如果檢測到配置里啟用了 withCredentials 的選項,就對所有的 HTTP 請求進行攔截,添加對應的 withCredentials 信息。
最后在 module 里注入這個 HTTP interceptor 實現:
測試方法
(1) 驗證是否為第一個 OCC 請求檢索了響應 cookie ROUTE
(2) 驗證 ROUTE cookie 是否已添加到所有子序列請求中
測試結果:
當我們第一次加載 SPA 時,我們在第一次 occ 調用的響應中獲得了 ROUTE cookie。
然后我們在后續的occ請求中獲取ROUTE cookie。
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP Spartacus Session affinity的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 比亚迪:新一代王朝和海洋系列部分车型将搭
- 下一篇: 我国科研人员开发出可精准检测与治疗癌症的