2021-08-11 nacos gateway

最近忙的不行
本地安裝nacos ,它既是注冊中心,又是配置中心 默認(rèn)端口8848(珠穆朗瑪峰的高度)
下載安裝自行百度,我是在windos中安裝的 用的是1.4.1,
下載地址:

https://github.com/alibaba/nacos/releases/tag/1.4.1
image.png

下載后解壓
解壓的文件中的conf中有個sql文件


image.png

解壓之后,要把nacos需要的表sql文件,導(dǎo)入到數(shù)據(jù)庫中,
解壓文件中的conf中有個配置文件


image.png

修改為自己的數(shù)據(jù)庫相關(guān)信息
image.png

并且要配置好nacos中連接數(shù)據(jù)庫的基本信息,這樣nacos才算安裝好了积糯。
由于本地是單機啟動,所以解壓之后,在nacos的bin目錄下,調(diào)用cmd命令窗,然后執(zhí)行

startup.cmd -m standalone

安裝啟動之后,訪問 http://localhost:8848/nacos/, 默認(rèn)的用戶名密碼,都是:nacos
本地啟動服務(wù)注冊進nacos之后,都會在這個列表中展示

nacos服務(wù)列表.png

nacos 的配置在配置列表中,可以單獨為每個服務(wù)簡歷配置文件,然后在服務(wù)啟動,注冊進nacos時候,回去讀取各自的配置,并且在nacos中的配置,優(yōu)先級高于每個服務(wù)中的yml的配置文件
例如:
vse-console-basic 這個服務(wù),已經(jīng)注冊進nacos,他會自行去讀取nacos配置列表中的vse-console-basic.json文件,當(dāng)讀取不到的時候,走自己的配置文件(vse-console-basic 這個項目中的yml配置文件).
新建配置文件的時候,主要dataid 與 服務(wù)在nacos中注冊的名稱相同,那么該服務(wù)就會默認(rèn)讀取該配置
如下:
dataid.png

=================================================================================================

gateway 是一個統(tǒng)一路徑的路由的作用,比如,我有十個服務(wù),端口為8001---8010,如果不統(tǒng)一的話,那么訪問十個服務(wù),需要十個端口,當(dāng)用了路由之后,可以將端口統(tǒng)一為路由的端口,再由路由轉(zhuǎn)發(fā)給各個服務(wù),工作過程大概是,gateway接到請求后,會去注冊中心讀取已經(jīng)注冊的服務(wù)列表,然后根據(jù)請求路徑,轉(zhuǎn)發(fā)給各個服務(wù),這樣,訪問十個服務(wù),只要訪問路由的一個端口就可以了,本文中注冊中心是nacos,路由是gateway。

gateway可以同樣也是一個服務(wù)慕购,啟動之后也要注冊到nacos中,同其他的服務(wù)部分配置一樣,都是需要注冊到nacos,然后他還有自己獨有的配置,如路由轉(zhuǎn)發(fā)配置
例如

server:
  port: 8110
  version: V1.0.0
spring:
  application:
    name: vse-console-gateway
  profiles:
    active: dev
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
        prefix: ${spring.application.name}
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
    gateway:
      discovery:
        locator:
          enabled: true
      routes:
        - id: vse-console-auth
          uri: lb://vse-console-auth
          predicates:
            - Path=/v1/console/auth/**
        - id: vse-console-auth-tenant
          uri: lb://vse-console-auth
          predicates:
            - Path=/v1/console/*/auth/**
        - id: vse-console-basic
          uri: lb://vse-console-basic
          predicates:
            - Path=/v1/console/basic/**
        - id: vse-console-basic-tenant
          uri: lb://vse-console-basic
          predicates:
            - Path=/v1/console/*/basic/**
        - id: vse-console-event
          uri: lb://vse-console-event
          predicates:
            - Path=/v1/console/event/**
        - id: vse-console-event-tenant
          uri: lb://vse-console-event
          predicates:
            - Path=/v1/console/*/event/**
        - id: vse-console-message
          uri: lb://vse-console-message
          predicates:
            - Path=/v1/console/message/**
        - id: vse-console-message-tenant
          uri: lb://vse-console-message
          predicates:
            - Path=/v1/console/*/message/**
        - id: vse-console-upms
          uri: lb://vse-console-upms
          predicates:
            - Path=/v1/console/upms/**
        - id: vse-console-upms-tenant
          uri: lb://vse-console-upms
          predicates:
            - Path=/v1/console/*/upms/**
        - id: vse-console-vedio
          uri: lb://vse-console-vedio
          predicates:
            - Path=/v1/console/vedio/**
        - id: vse-console-vedio-tenant
          uri: lb://vse-console-vedio
          predicates:
            - Path=/v1/console/*/vedio/**
  main:
    allow-bean-definition-overriding: true

  #rabbitmq配置
  rabbitmq:
    addresses: 192.168.86.196
    username: mix
    password: jovision
    port: 5672
    virtual-host: /
  redis:
    # redis 服務(wù)器地址
    host: 192.168.86.196
    # Redis 服務(wù)器端連接端口
    port: 6379
    # redis 服務(wù)器連接密碼
    password: Mix-redis
    # 連接超時時間(毫秒)
    timeout: 1000
    # redis 數(shù)據(jù)庫索引,默認(rèn)為0
    database: 1
feign:
  hystrix:
    enabled: true
#hystrix的超時時間
hystrix:
  command:
    default:
      coreSize: 100
      maxQueueSize: 100
      queueSizeRejectionThreshold: 200
      execution:
        timeout:
          enabled: true
        isolation:
          thread:
            timeoutInMilliseconds: 6000
#ribbon的超時時間
ribbon:
  ReadTimeout: 6000
  ConnectTimeout: 6000
nacos:
  data-id: route-console-gateway.json
  group-id: DEFAULT_GROUP
  timeout: 5000

其中 routes:部分為路由代理的關(guān)鍵配置

 - id: vse-console-basic  // 配置時候的唯一id,不重復(fù)即可
   uri: lb://vse-console-basic // 在注冊中心注冊的服務(wù)名稱
    predicates:                    // 關(guān)鍵字,斷言
            - Path=/v1/console/basic/**  //匹配規(guī)則  訪問vse-console-basic 這個服務(wù)的所有接口都必須以/v1/console/basic/開頭(所有以 /v1/console/basic/ 為開頭的服務(wù),都會進入vse-console-basic 這個服務(wù)中)
 - id: vse-console-basic-tenant
   uri: lb://vse-console-basic
   predicates:
            - Path=/v1/console/*/basic/** //匹配規(guī)則  訪問vse-console-basic 這個服務(wù)的所有接口都必須以/v1/console/*/basic/開頭(所有以 /v1/console/*/basic/ 為開頭的服務(wù),都會進入vse-console-basic 這個服務(wù)中)

其實上面的配置,可以看到 uri 這個關(guān)鍵字,我粘貼出來的,相當(dāng)于是重復(fù)的兩個,都是對vse-console-basic 這個服務(wù)的匹配規(guī)則的限制,為什么寫兩段呢??
這兩段是或者的關(guān)系,即 路徑 /v1/console/basic/** 或者 /v1/console//basic/* 均可以
如果寫成

 - id: vse-console-basic
   uri: lb://vse-console-basic
    predicates:
            - Path=/v1/console/basic/**
            - Path=/v1/console/*/basic/**

這個是并且的關(guān)系.........經(jīng)過實踐發(fā)現(xiàn)這個坑,弄了好久~~

這是其一
只是相當(dāng)于在gateway中的固定的配置,其實,gateway還可以動態(tài)路由的配置,其實這不是新東西,為什么這么說呢?
它的動態(tài)路由,其實就是讀取nacos中的配置文件,這樣在nacos中隨時修改,那么gateway都可以立即獲取感知到,如果改了剛剛routes中的配置,也就是相當(dāng)于動態(tài)路由了.

如何實現(xiàn)呢?

nacos:
  data-id: route-console-gateway.json
  group-id: DEFAULT_GROUP
  timeout: 5000

就是這段代碼,它會去nacos讀取配置列表中data-id為 route-console-gateway的配置,如果讀取到了,那么其實也就是實現(xiàn)了動態(tài)路由煤辨。讀取不到称鳞,還是走剛剛的我粘貼中的yml配置文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末纤壁,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子把曼,更是在濱河造成了極大的恐慌杨帽,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗤军,死亡現(xiàn)場離奇詭異注盈,居然都是意外死亡,警方通過查閱死者的電腦和手機叙赚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門老客,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人震叮,你說我怎么就攤上這事胧砰。” “怎么了苇瓣?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵尉间,是天一觀的道長。 經(jīng)常有香客問我击罪,道長哲嘲,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任媳禁,我火速辦了婚禮眠副,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竣稽。我一直安慰自己囱怕,他們只是感情好霍弹,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著娃弓,像睡著了一般典格。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上忘闻,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天钝计,我揣著相機與錄音,去河邊找鬼齐佳。 笑死,一個胖子當(dāng)著我的面吹牛债沮,可吹牛的內(nèi)容都是我干的炼吴。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼疫衩,長吁一口氣:“原來是場噩夢啊……” “哼硅蹦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起闷煤,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤童芹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鲤拿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體假褪,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年近顷,在試婚紗的時候發(fā)現(xiàn)自己被綠了生音。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡窒升,死狀恐怖缀遍,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情饱须,我是刑警寧澤域醇,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站蓉媳,受9級特大地震影響譬挚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜督怜,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一殴瘦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧号杠,春花似錦蚪腋、人聲如沸丰歌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽立帖。三九已至,卻和暖如春悠砚,著一層夾襖步出監(jiān)牢的瞬間晓勇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工灌旧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绑咱,地道東北人。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓枢泰,卻偏偏與公主長得像描融,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衡蚂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容