谷粒商城--分布式基礎篇P1~P27


谷粒商城--分布式基礎篇P1~P27

去年3月份谷粒商城分布式基礎、進階、高級剛出的時候就開始學了,但是中途因為一些事就中斷了,結果一直到現在才有時間重新開始學,看到現在網上這么多人都學完了,確實感覺到很慚愧,重新整理學習筆記吧,后續不斷更新。


csdn csdn csdn csdn csdn


【谷粒商城--分布式基礎篇P1~P27】: https://blog.csdn.net/Empire_ing/article/details/118860147


@

🔥1.分布式基本概念

1.微服務

​ 將一個大型單體應用,拆分成各個獨立部署運行的單個微服務


2.分布式&集群&節點
  • 分布式:京東不同業務分布在不同地方(指的是一種實現方式)
  • 集群:每個業務由多台服務器來實現完成(指的是具體的物理形態)
  • 節點:集群中的一個服務器

3.遠程調用&負載均衡
  • 遠程調用:各個微服務之間互相調用(springcloud中采用HTTP+JSON方式)
  • 負載均衡:在上述調用或者用戶訪問的時候采用將請求均衡分配給A,B,C等其他機器來實現,不要讓任何一台機器太忙,也不要讓任何一台機器太閑(基於各種負載均衡算法:輪詢、最小連接、散列)

4.注冊中心&配置中心
  • 注冊中心:各個微服務在注冊中心中注冊,這樣哪些服務掛了都能知道,方便統一管理
  • 配置中心:上面說了,每個微服務是由多台服務器來實現,所以修改每個微服務相關配置需要由配置中心統一管理。

5.服務熔斷&服務降級
  • 服務熔斷:微服務A調用微服務B時,若B掛了,則A的頻繁訪問需要啟用斷路保護機制,返回一個默認數據,避免耗時等待和浪費請求資源
  • 服務降級:系統高峰期,系統資源緊張,讓非核心業務降級運行,去處理其他業務。比如淘寶在天貓雙十一,就無法訪問退單的微服務,這里就是將退單的服務降級、讓服務掛掉,不讓你訪問,或者報錯等等。

6.API網關
  • API GateWay網關:攔截用戶請求,包含了上面負載均衡、熔斷、認證、限流等功能。相當於大門保安



🔥2.項目架構

1.架構流程

img


2.項目技術

img



🔥3.分布式項目啟動相關報錯

node環境:node.js--版本v10.20.0 (下面命令一定要以管理員身份啟動

注:很多情況下npm會報錯,但是使用cnpm就能正常下載啟動

1.npm install 失敗

所以我整體啟動流程是:

#管理員身份切換到renren-fast-vue下(node.js-v10.20.0)
npm config set registry http://registry.npm.taobao.org/
cnpm install
npm run dev

在這里插入圖片描述


2.renren-fast-vue啟動頁面報錯 :<% if (process.env.NODE_ENV === ‘production‘) { %> <% }else { %> <% } %>
cnpm rebuild node-sass --save-dev
npm uninstall node-sass
cnpm install node-sass@4.14
npm run dev

3.renren-fast項目啟動失敗
4.Nacos啟動失敗:



🔥4.分布式項目內容

​ 在上述前后端基本環境配置好后,每次項目啟動都需要提前准備的環境:nacos啟動、renren-fast啟動。然后就可以啟動項目編寫代碼了。

1.Nacos注冊中心、配置中心

​ 所有微服務(包括GateWay網關)注冊到注冊中心中,可以統一管理配置各個微服務配置文件。導入主要流程分如下幾步

  1. 導入dependency配置
    在這里插入圖片描述

  2. 啟動類加入@EnableDiscoveryClient自動配置

  3. 配置文件導入nacos的發現spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 (當然也有namespace、group、extension-configs可以配置)


2.OpenFeign遠程調用

​ 微服務A想調用微服務B中的接口。導入主要流程分如下幾步

  1. 導入dependency配置
    在這里插入圖片描述

  2. 啟動類加入``@EnableFeignClients(basePackages = "com.empirefree.gulimall.member.feign")`自動配置、

  3. 編寫Feignservice文件

package com.empirefree.gulimall.member.feign;

import com.empirefree.common.utils.R;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

@FeignClient("gulimall-coupon")
public interface CouponFeignService {
    @RequestMapping("/coupon/coupon/member/list")
    public R membercoupones();
}

  1. 注入使用接口即可(Feignservice是從nacos注冊中心中找到被調用的服務接口,然后就可以再調用者中進行調用,所以必須先啟動nacos)
  @Autowired
  private CouponFeignService couponFeignService;

3.GateWay網關

​ 這里先從簡,只配置nacos注冊中心與gateway路由,后面做大了再改。

spring:
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848

spring:
  cloud:
    gateway:
      routes:
        - id: product_route
          uri: lb://gulimall-product
          predicates:
            - Path=/api/product/**
          filters:

4.實現效果

在這里插入圖片描述
在這里插入圖片描述


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM