乐优商城
樂優商城項目概述:
- 1. 項目介紹
- 1.1 系統架構
- 1.1.1 架構圖
- 1.1.2 系統架構解讀
- 1.2 技術選型
- 1.2.1 前后端相關技術
- 1.2.2 相關技術解讀
- 2. 微服務
- 3. 總結
- 3.1 nginx反向代理
- 3.2 Rabbitmq
- 3.3 Jwt與RSA非對稱加密
- 3.4 Redis
- 3.5 Thymeleaf
- 4. 后端微服務
- 4.1 注冊微服務:LyRegister
- 4.2 網關微服務:LyGateway
- 4.3 商品微服務:LyItemApplication
- 4.4 上傳微服務:LyUploadApplication
- 4.5 搜索微服務:LySearchApplication
- 4.6 頁面微服務:LyPageApplication
- 4.7 用戶中心微服務:LyUserApplication
- 4.8 短信微服務:LySmsApplication
- 4.9 授權微服務:LyAuthApplication、
- 4.10 購物車微服務:LyCartApplication
- 4.11 訂單微服務:LyOrderApplication
- 5. 微服務安全問題
- 6. 程序代碼
1. 項目介紹
- 樂優商城是一個全品類的電商購物網站(B2C)。
- 用戶可以在線購買商品、加入購物車、下單、秒殺商品
- 可以評論已購買商品
- 管理員可以在后臺管理商品的上下架、促銷活動
- 管理員可以監控商品銷售狀況
- 客服可以在后臺處理退款操作
1.1 系統架構
1.1.1 架構圖
樂優商城架構縮略圖:
nginx的負載均衡
CDN
1.1.2 系統架構解讀
整個樂優商城可以分為兩部分:后臺管理系統、前臺門戶系統。
-
后臺管理:
- 后臺系統主要包含以下功能(部分功能有待完善):
- 商品管理,包括商品分類、品牌、商品規格等信息的管理
- 銷售管理,包括訂單統計、訂單退款處理、促銷活動生成等
- 用戶管理,包括用戶控制、凍結、解鎖等
- 權限管理,整個網站的權限控制,采用JWT鑒權方案,對用戶及API進行權限控制
- 統計,各種數據的統計分析展示
- 后臺系統會采用前后端分離開發,而且整個后臺管理系統會使用Vue.js框架搭建出單頁應用(SPA)。
- 預覽圖:
- 后臺系統主要包含以下功能(部分功能有待完善):
-
前臺門戶
- 前臺門戶面向的是客戶,包含與客戶交互的一切功能。例如:
- 搜索商品
- 加入購物車
- 下單90
- 評價商品等等
- 前臺系統我們會使用Nuxt結合Vue完成頁面開發。出于SEO優化的考慮,我們將不采用單頁應用。
- 前臺門戶面向的是客戶,包含與客戶交互的一切功能。例如:
1.2 技術選型
1.2.1 前后端相關技術
前端技術:
- 基礎的HTML、CSS、JavaScript(基于ES6標準)
- Vue.js 2.0以及基于Vue的UI框架:Vuetify
- 前端構建工具:WebPack
- 前端安裝包工具:NPM
- Vue腳手架:Vue-cli
- Vue路由:vue-router
- ajax框架:axios
- 基于Vue的富文本框架:quill-editor
后端技術:
- 基礎的SpringMVC、Spring 5.0和MyBatis3
- Spring Boot 2.0.1版本
- Spring Cloud 最新版 Finchley.RC1
- Redis-4.0
- RabbitMQ-3.4
- Elasticsearch-5.6.8
- nginx-1.10.2
- FastDFS - 5.0.8
- MyCat
- Thymeleaf
- JWT
1.2.2 相關技術解讀
上面的技術組合可以在項目中解決以下電商中的典型問題:
-
利用Node.js及Vue.js技術棧,實現前后端分離開發
-
利用SpringCloud技術棧,實現真正的微服務實戰開發,并且是基于SpringBoot2.0和SpringCloud最新版本Finchley.RC1實現,業內領先。
-
貼近真實的電商數據庫設計,解決全品類電商的SPU和SKU管理問題
-
基于FastDFS解決大數據量的分布式文件存儲問題
-
基于Elasticsearch高級聚合功能,實現商品的智能過濾搜索
-
基于Elasticsearch高級聚合功能,實現銷售業務的復雜統計及報表輸出
-
基于LocalStorage實現離線客戶端購物車,減輕服務端壓力。
-
基于JWT技術及RSA非對稱加密實現真正無狀態的單點登錄。
-
結合JWT和RSA非對稱加密,自定義Feign過濾器實現自動化服務間鑒權,解決服務對外暴露的安全問題
-
基于阿里大于實現SMS功能,解決電商短信通知問題
-
基于RabbitMQ實現可靠消息服務,解決服務間通信問題
-
基于RabbitMQ實現可靠消息服務,解決分布式事務問題
-
使用微信SDK實現微信掃碼支付,符合主流付款方式
-
基于Redis搭建高可用集群,實現可靠緩存服務即熱點數據保存。
redis持久化,集群,哨兵,主從,緩存擊穿,熱點key。
-
基于Redis和Mq來應對高可用高并發的秒殺場景
-
基于MyCat實現數據庫的讀寫分離和分庫分表
發視頻
-
基于Thymeleaf實現頁面模板和靜態化,提高頁面響應速度和并發能力
-
基于Nginx實現初步的請求負載均衡和請求限流
2. 微服務
項目系統架構-微服務框架
3. 總結
3.1 nginx反向代理
nginx反向代理
3.2 Rabbitmq
消息隊列-Rabbitmq處理消息及在Spring中的應用
3.3 Jwt與RSA非對稱加密
Jwt與RSA非對稱加密
3.4 Redis
Redis
3.5 Thymeleaf
Thymeleaf
4. 后端微服務
無論是前臺還是后臺系統,都共享相同的微服務集群,包括:
4.1 注冊微服務:LyRegister
樂優商城–服務(一): 注冊微服務(LyRegister)
采用
- Spring Cloud Netflix中的Eureka實現了服務注冊中心以及服務注冊與發現;
- 而服務間通過Ribbon或Feign實現服務的消費以及均衡負載;
- 通過Spring Cloud Config實現了應用多環境的外部化配置以及版本管理;
- 為了使得服務集群更為健壯,使用Hystrix的融斷機制來避免在微服務架構中個別服務出現異常時引起的故障蔓延。
架構圖:
對于整個樂優項目,我們會在Eureka注冊每個微服務,列表如下:
4.2 網關微服務:LyGateway
樂優商城–服務(二) : 網關微服務(LyGateway)
在該架構中,我們的服務集群包含:內部服務Service A和Service B,他們都會注冊與訂閱服務至Eureka Server,而Open Service是一個對外的服務,通過均衡負載公開至服務調用方。我們把焦點聚集在對外服務這塊,直接暴露我們的服務地址,這樣不太合理,因此避免對外服務地址的暴露,引入網關——Zuul
網關的主要功能有:
- 路由
- 身份與安全認證(權限控制)
- 限流
- 負載均衡
不管是來自于客戶端(PC或移動端)的請求,還是服務內部調用。一切對服務的請求都會經過Zuul這個網關,然后再由網關來實現 鑒權、動態路由等等操作。Zuul就是我們服務的統一入口。
4.3 商品微服務:LyItemApplication
樂優商城–服務(三) : 商品微服務(LyItemApplication)–前半部分
樂優商城–服務(三) : 商品微服務(LyItemApplication)–后半部分
4.4 上傳微服務:LyUploadApplication
樂優商城–服務(四) : 上傳微服務(LyUploadApplication)
4.5 搜索微服務:LySearchApplication
樂優商城–服務(五) : 搜索微服務(LySearchApplication)
4.6 頁面微服務:LyPageApplication
樂優商城–服務(六) : 頁面微服務(LyPageApplication)
4.7 用戶中心微服務:LyUserApplication
樂優商城–服務(七) : 用戶中心微服務(LyUserApplication)
4.8 短信微服務:LySmsApplication
樂優商城–服務(八) :短信微服務(LySmsApplication)
4.9 授權微服務:LyAuthApplication、
樂優商城–服務(九) :授權微服務(LyAuthApplication)–前半部分
樂優商城–服務(九) :授權微服務(LyAuthApplication)–后半部分
4.10 購物車微服務:LyCartApplication
樂優商城–服務(十) :購物車微服務(LyCartApplication)
4.11 訂單微服務:LyOrderApplication
樂優商城–服務(十一) :訂單微服務(LyOrderApplication)
5. 微服務安全問題
樂優商城–關于微服務的安全問題
6. 程序代碼
程序代碼
總結
- 上一篇: hadoop 计算几点 主节点_01-H
- 下一篇: LiveWriter测试