日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

INFINI GATEWAY 极限网关初体验 ElasticSearch 两个集群数据同步

發布時間:2024/8/23 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 INFINI GATEWAY 极限网关初体验 ElasticSearch 两个集群数据同步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 極限網關-配置說明
      • 配置文件
      • 日志、數據目錄
      • 定義入口
      • 定義路由
      • 定義流程
      • 定義資源
    • 使用Demo
      • 寫入兩個ES集群
    • 極限網關-常見問題
      • shutdown: ORM handler is not registered
    • 極限網關地址

極限網關-配置說明

極限網關的大部分配置都可以通過 gateway.yml 來進行配置,配置修改完成之后,需要重啟網關程序才能生效。

配置文件

vim /etc/gateway/gateway.yml

日志、數據目錄

path.data: data path.logs: log

定義入口

  • 每一個網關都至少要對外暴露一個服務的入口,用來接收業務的操作請求,這個在極限網關里面叫做 entry,通過下面的參數即可定義
entry:- name: es_gatewayenabled: truerouter: defaultnetwork:binding: 0.0.0.0:8000

這里定義了一個名為 es_gateway 的服務入口,監聽的地址是 0.0.0.0:8000,使用了一個名為 default 的路由來處理請求。

定義路由

  • 極限網關通過路由來判斷流量的去向,一個典型的路由配置示例如下:
router:- name: defaultdefault_flow: cache_first

這里定義了一個名為 default 的路由,也就是業務處理的主流程,請求轉發、過濾、緩存等操作都在這里面進行。

定義流程

  • 一個請求流程定義了一系列請求處理的工作單元,是一個典型的管道式工作方式,一個典型的配置示例如下:
flow:- name: cache_firstfilter:- name: get_cache- name: elasticsearchparameters:elasticsearch: prod - name: set_cache

上面的配置定義了一個名為 cache_first 的處理流,使用了三個不同的 filter,分別是 get_cache、elasticsearch 和 set_cache,這些 filter 會依據配置的先后順序依次執行。 各個 filter 的處理結果分別如下:

  • get_cache,這個 filter 主要用來從緩存里面拿數據,如果之前發生過相同的請求,并且緩存還存在且有效的情況下,這個 filter 可以直接拿到緩存然后立即返回,不用繼續往下處理;
  • elasticsearch,這個 filter 主要用來將請求轉發給后端的 Elasticsearch 集群,并且將 Elasticsearch 返回的響應內容繼續往下傳遞;
  • set_cache,這個 filter 會將執行結果緩存到本地內存,有一些參數限制,比如狀態碼,請求大小等,并設置一定的過期時間,以方便下次重復請求可以直接使用緩存,一般要和 get_cache 組合使用。

定義資源

這里的資源主要是指 Elasticsearch 后端服務器資源,極限網關支持多個 Elasticsearch 集群,可以實現將請求轉發到多個不同集群,也可以支持請求的藍綠發布、灰度切換等,定義一個 Elasticsearch 后端資源的方式示例如下:

elasticsearch: - name: prodenabled: trueendpoint: http://192.168.3.201:9200discovery:enabled: truerefresh:enabled: truebasic_auth:username: elasticpassword: pass

通過參數 endpoint 來設置 Elasticsearch 的訪問地址,如果 Elasticsearch 開啟了身份認證,可以通過 basic_auth 來指定用戶名和密碼信息,該用戶需要有能夠獲取集群狀態信息的權限。 通過參數 discover 可以開啟自動的后端節點的自動發現,用于自動檢測后端節點的情況,能夠自動識別新增和離線的節點。

使用Demo

寫入兩個ES集群

  • 提示
    flow設置兩個es集群時,發送請求會按照順序執行,比如下面配置查詢時會先執行dev再執行prd,通過8000接口返回的數據是最后一個配置返回的結果
path.data: data path.logs: logentry:- name: es_gatewayenabled: truerouter: defaultnetwork:binding: 0.0.0.0:8000router:- name: defaultdefault_flow: cache_first# 順序執行,讀取寫入按照順序執行 flow:- name: cache_firstfilter:#- name: get_cache- name: elasticsearchparameters:elasticsearch: dev- name: elasticsearchparameters:elasticsearch: prd#- name: set_cache# 對應的ES節點 elasticsearch: - name: defaultenabled: trueendpoint: http://10.8.10.12:9200 - name: devenabled: trueendpoint: http://10.8.10.12:9200 - name: prdenabled: trueendpoint: http://10.8.10.15:9200modules: - name: elasticenabled: trueelasticsearch: devstore:enabled: truemonitoring:enabled: falseorm:enabled: trueinit_template: truetemplate_name: ".gateway-default"index_prefix: "gateway_"
  • 通過極限網關創建索引,分別去dev、prd兩個集群查看發現均創建成功
curl -XPUT http://10.8.10.13:8000/test_index_20210625_03 -H 'Content-Type: application/json' -d' {"settings":{"number_of_shards":6,"number_of_replicas":0},"mappings":{"properties":{"account_holder_name":{"type":"text","fields":{"keyword":{"type":"keyword","ignore_above":256}}}}} } '
  • 寫入數據,分別查看兩個集群均寫入成功
curl -XPOST http://10.8.10.13:8000/test_index_20210625_03/_doc/id2 -H 'Content-Type: application/json' -d' {"properties":{"account_holder_name":"極限網關測試插入數據"} } '
  • 查詢數據,返回數據成功。修改最后配置的一個es集群prd數據,再次查詢發現返回的數據也被修改,判斷出返回的數據是最后一個配置的集群prd的數據
curl -XGET http://10.8.10.13:8000/test_index_20210625_03/_doc/id2 -H 'Content-Type: application/json'

極限網關-常見問題

shutdown: ORM handler is not registered

[06-25 13:54:25] [ERR] [app.go:334] shutdown: ORM handler is not registeredgoroutine 1 [running]: infini.sh/framework.(*App).Shutdown(0xc00023d480)/var/lib/jenkins/go/src/infini.sh/framework/app.go:338 +0x243 panic(0xf02600, 0xc00015dae0)/usr/local/go/src/runtime/panic.go:679 +0x1b2 infini.sh/framework/core/orm.getHandler(...)/var/lib/jenkins/go/src/infini.sh/framework/core/orm/orm.go:216 infini.sh/framework/core/orm.GetIndexName(0xf956a0, 0xc00018eb40, 0xf956a0, 0xc00018eb40)/var/lib/jenkins/go/src/infini.sh/framework/core/orm/orm.go:176 +0xdf infini.sh/framework/modules/elastic.loadESBasedElasticConfig()/var/lib/jenkins/go/src/infini.sh/framework/modules/elastic/elastic.go:92 +0xf9 infini.sh/framework/modules/elastic.ElasticModule.Start(0xc000281ee8, 0xc000036628)/var/lib/jenkins/go/src/infini.sh/framework/modules/elastic/elastic.go:334 +0x21f infini.sh/framework/core/module.Start()/var/lib/jenkins/go/src/infini.sh/framework/core/module/module.go:87 +0xc80 main.main.func1()/var/lib/jenkins/go/src/infini.sh/gateway/main.go:96 +0x662 infini.sh/framework.(*App).Start(0xc00023d480, 0x10133e0, 0x10133e8)/var/lib/jenkins/go/src/infini.sh/framework/app.go:261 +0x52a main.main()/var/lib/jenkins/go/src/infini.sh/gateway/main.go:65 +0x35a
  • 原因

沒有引用model

  • 解決方法:

配置文件中加入

modules: - name: elasticenabled: trueelasticsearch: devstore:enabled: truemonitoring:enabled: falseorm:enabled: trueinit_template: truetemplate_name: ".gateway-default"index_prefix: "gateway_"

極限網關地址

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的INFINI GATEWAY 极限网关初体验 ElasticSearch 两个集群数据同步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。