收穫一:明白了電商系統中的一些知識點,例如sku和spu的概念,另外,類目、品牌、商品、規格參數、規格參數組的設計以及它們關係也是相對複雜的,學完之後自己也能梳理清楚了。
收穫二:之前以爲在微服務中,所有的請求都會過網關,由網關進行路由,但是並不是這樣。例如上傳服務,如果上傳文件也經Zuul網關,會造成不必要的網絡負擔,在高併發的情況下,有可能會造成整個系統的癱瘓,因此文件上傳的請求是不經過網關來處理的。
收穫三:庫表設計的技巧。像spu和spuDetail會分在不同的表裏,主要是spu和spuDetail讀的頻率不一樣,並且spuDetail中商品詳情屬於大字段,分開存儲會好一些,同樣的,sku和庫存也會分開存儲,這是因爲讀寫的頻率不一樣。另外,常規庫表設計應該遵循三範式,但是有時候字段冗餘可以減少不必要查詢,這是值得的。
收穫四:學習了JWT,包括JWT的概念、數據格式和交互流程,之前是聽說過,這次是能親自實戰,感覺收穫滿滿。
收穫五:整合SpringBoot+ElasticSearch完成商品搜索,以後有需要用到搜索引擎相關的東西,可以直接拿過來進行優化。
商品分頁展示
實現搜索
leyou-portal 前臺頁面
start nginx
live-server --port=9002
商品詳情頁(spuId.html)
服務:leyou-goods-web,其端口爲8084
nginx --port=8084
需要portal服務的9092端口提供圖片解析
-
後臺接口
-
使用 thymeleaf修改item.html
頁面靜態化(存在磁盤上)
- nginx代理靜態頁面
優化:新建線程處理頁面靜態化
<div th:text-"${message}">數據詳情</div>
1.商品詳情頁
thymeleaf語法
1.引入thymeleaf啓動器
2.關閉thymeleaf緩存:spring.thymeleaf.cache=false ctrl+shift+f9
3.th:text th:utext th:each ${} /*[[${數據模型}]]*/
4.頁面數據的組織
2.頁面靜態化
context:thymeleaf的運行上下文,存放數據模型
TemplateResolver:模板解析器,模板的位置,名稱,後綴信息
TemplateEngine:模板解析引擎
templateEngine.process("item", context, printWriter)