springCloud筆記一:架構演進與分佈式系統基礎知識
傳統架構演進到分佈式系統
- 互聯網剛開始的架構
- 用戶增多後
- 用戶繼續增多
增加nginx的集羣分發:和網關分發
網關主要用來攔截用戶信息,是否登錄的。
負載均衡器:高可用,LVS+keepalive
- 單體應用
開發速度慢,啓動時間長,依賴龐大,等等。
- 微服務
易開發,理解和維護。
獨立的部署和啓動等。
不足:
分佈式系統—》分佈式事務問題,需要管理多個服務,----》服務治理問。
微服務核心基礎講解
- 講解微服務核心知識
1、網關:路由轉發+過濾器。
api/v1/product 商品模塊
api/v1/user 用戶模塊
過濾器用來檢測用戶是否登錄系統,動態插拔作用
2、服務註冊發現:調用和被調用方的信息和維護
每個服務啓動時,都會向註冊中心進行註冊。
3、配置中心:管理配置,動態更新。
每個服務都有一個application.properties,如果要修改都要進行修改,然後再提交,部署。當服務有上百個時,很麻煩。可以添加一個配置中心,把所有的服務配置集中在一起,並可視化。並進行動態更新。
4、鏈路追蹤:分析調用鏈路耗時。(qbs)
例子:用戶下單—》查詢商品服務獲取商品價格----》xxxx服務。通過鏈路追蹤,就可以查詢出那個地方qbs高了,然後進行處理。
5、負載均衡:分發負載
通過ngxin進行負載均衡。
6、熔斷:保護自己和被調用方。
熔斷:當一個服務調用另一個服務時,突然特別慢。熔斷機制就會發現,然後暫停其他服務調用這個服務接口,等待x分鐘後,再去測試,如果測試滿足要求就走正常流程。
常見的微服務框架
- 服務中的角色
consumer:調用方
provider;被調用方
一個接口一般都會充當兩個角色(不是同時充當)
- dubbo:
zookeeper+dubbo+springMVC/SpringBoot
配套:
通信方式:RPC
註冊中心:zookeper/redis
配置中心:diamond
- springCloud:
全家桶+輕鬆嵌入第三方組件(Netflix 奈飛)
配套:
通信方式:http restful
註冊中心:eruka/consul
配置中心:config
斷路器:hystrix
網關:zuul
分佈式追蹤系統:sleuth+zipkin
微服務下電商項目基礎模塊設計
- 用戶服務
1、用戶信息接口
用戶信息接口
登錄接口
2、商品服務
商品列表
商品詳情
3、訂單服務
我的訂單
下單接口