2020尚硅谷-穀粒商城(02)分佈式環境搭建

分佈式解決方案

nacos 配置中心、註冊中心
ribbon 負載均衡
openfeign rpc調用
sentinel 流量控制、熔斷
gateway api網關
sleuth 調用鏈監控
seata 分佈式事務

nacos簡單配置

  1. 在 common 模塊中,導入nacos 相關依賴。這樣各個微服務模塊都可以使用。
  2. 配置文件改爲 bootstrap.yml 其中只寫服務名稱、端口、環境、nacos 地址
spring:
  profiles:
    active: dev # 環境
  cloud:
    nacos:
      discovery:# nacos 註冊中心
        server-addr: 192.168.2.3:8848
      config: // nacos 配置中心
        server-addr: 192.168.2.3:8848
        file-extension: yaml
        namespace: product # 讀取配置時所在空間
  application:
    name: gulimall-product # 服務名稱
server:
  port: 35200

main函數主啓動上,添加服務發現註解@EnableDiscoveryClient

  1. 在 nacos 網頁上添加namespace和每個服務對應的配置信息在這裏插入圖片描述
    注意 Date Id 按照 服務名-環境.yaml 書寫

nacos 持久化

  1. 首先準備好相關數據庫。建表語句如下。(踩坑nacos 不支持mysql utf8mb4,所以不要在 my.cnf 中指定這種字符集)

https://blog.csdn.net/samHuangLiang/article/details/104966744

  1. 修改數據庫的隔離級別

SET @@transaction_isolation=‘READ-COMMITTED’;

  1. 下載 docker 環境 nacos,並啓動

docker pull nacos/nacos-server:1.2.1

docker run --env MODE=standalone --name nacosGrain -d -p 8848:8848 nacos/nacos-server:1.2.1

  1. 進入容器配置 nacos

docker exec -it nacosGrain bash
vi conf/application.properties

修改數據庫相關配置

# spring
server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos}
server.contextPath=/nacos
server.port=${NACOS_SERVER_PORT:8848}
spring.datasource.platform=mysql
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
db.num=${MYSQL_DATABASE_NUM:1}
db.url.0=jdbc:mysql://192.168.2.3:23306/gulimall_nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&serverTimezone=Asia/Shanghai
# db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

gateway 微服務網關搭建

  1. 新建 gulimall-gateway 模塊,引入 gateway 依賴和 common 依賴
  2. 主啓動加上 @EnableDiscoveryClient
  3. 配置文件
spring:
  application:
    name: gulimall-gateway
  profiles:
    active: dev 
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.2.13:8848
      config:
        server-addr: 192.168.2.13:8848
        file-extension: yaml
        namespace: gateway
  1. nacos 中配置文件
spring:
  cloud:
    gateway:
      routes:
        - id: route_baidu
          uri: https://www.baidu.com
          predicates:
            - Query=url,baidu
        - id: route_qq
          uri: https://www.qq.com
          predicates:
            - Query=url,qq
server:
  port: 20088
  1. 測試

踩坑。如果在啓動網關時,報錯:沒有找到數據庫配置信息,那麼在main函數上加上
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章