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