INFINI GATEWAY 极限网关初体验 ElasticSearch 两个集群数据同步
文章目錄
- 極限網(wǎng)關(guān)-配置說(shuō)明
- 配置文件
- 日志、數(shù)據(jù)目錄
- 定義入口
- 定義路由
- 定義流程
- 定義資源
- 使用Demo
- 寫入兩個(gè)ES集群
- 極限網(wǎng)關(guān)-常見(jiàn)問(wèn)題
- shutdown: ORM handler is not registered
- 極限網(wǎng)關(guān)地址
極限網(wǎng)關(guān)-配置說(shuō)明
極限網(wǎng)關(guān)的大部分配置都可以通過(guò) gateway.yml 來(lái)進(jìn)行配置,配置修改完成之后,需要重啟網(wǎng)關(guān)程序才能生效。
配置文件
vim /etc/gateway/gateway.yml日志、數(shù)據(jù)目錄
path.data: data path.logs: log定義入口
- 每一個(gè)網(wǎng)關(guān)都至少要對(duì)外暴露一個(gè)服務(wù)的入口,用來(lái)接收業(yè)務(wù)的操作請(qǐng)求,這個(gè)在極限網(wǎng)關(guān)里面叫做 entry,通過(guò)下面的參數(shù)即可定義
這里定義了一個(gè)名為 es_gateway 的服務(wù)入口,監(jiān)聽(tīng)的地址是 0.0.0.0:8000,使用了一個(gè)名為 default 的路由來(lái)處理請(qǐng)求。
定義路由
- 極限網(wǎng)關(guān)通過(guò)路由來(lái)判斷流量的去向,一個(gè)典型的路由配置示例如下:
這里定義了一個(gè)名為 default 的路由,也就是業(yè)務(wù)處理的主流程,請(qǐng)求轉(zhuǎn)發(fā)、過(guò)濾、緩存等操作都在這里面進(jìn)行。
定義流程
- 一個(gè)請(qǐng)求流程定義了一系列請(qǐng)求處理的工作單元,是一個(gè)典型的管道式工作方式,一個(gè)典型的配置示例如下:
上面的配置定義了一個(gè)名為 cache_first 的處理流,使用了三個(gè)不同的 filter,分別是 get_cache、elasticsearch 和 set_cache,這些 filter 會(huì)依據(jù)配置的先后順序依次執(zhí)行。 各個(gè) filter 的處理結(jié)果分別如下:
- get_cache,這個(gè) filter 主要用來(lái)從緩存里面拿數(shù)據(jù),如果之前發(fā)生過(guò)相同的請(qǐng)求,并且緩存還存在且有效的情況下,這個(gè) filter 可以直接拿到緩存然后立即返回,不用繼續(xù)往下處理;
- elasticsearch,這個(gè) filter 主要用來(lái)將請(qǐng)求轉(zhuǎn)發(fā)給后端的 Elasticsearch 集群,并且將 Elasticsearch 返回的響應(yīng)內(nèi)容繼續(xù)往下傳遞;
- set_cache,這個(gè) filter 會(huì)將執(zhí)行結(jié)果緩存到本地內(nèi)存,有一些參數(shù)限制,比如狀態(tài)碼,請(qǐng)求大小等,并設(shè)置一定的過(guò)期時(shí)間,以方便下次重復(fù)請(qǐng)求可以直接使用緩存,一般要和 get_cache 組合使用。
定義資源
這里的資源主要是指 Elasticsearch 后端服務(wù)器資源,極限網(wǎng)關(guān)支持多個(gè) Elasticsearch 集群,可以實(shí)現(xiàn)將請(qǐng)求轉(zhuǎn)發(fā)到多個(gè)不同集群,也可以支持請(qǐng)求的藍(lán)綠發(fā)布、灰度切換等,定義一個(gè) Elasticsearch 后端資源的方式示例如下:
elasticsearch: - name: prodenabled: trueendpoint: http://192.168.3.201:9200discovery:enabled: truerefresh:enabled: truebasic_auth:username: elasticpassword: pass通過(guò)參數(shù) endpoint 來(lái)設(shè)置 Elasticsearch 的訪問(wèn)地址,如果 Elasticsearch 開(kāi)啟了身份認(rèn)證,可以通過(guò) basic_auth 來(lái)指定用戶名和密碼信息,該用戶需要有能夠獲取集群狀態(tài)信息的權(quán)限。 通過(guò)參數(shù) discover 可以開(kāi)啟自動(dòng)的后端節(jié)點(diǎn)的自動(dòng)發(fā)現(xiàn),用于自動(dòng)檢測(cè)后端節(jié)點(diǎn)的情況,能夠自動(dòng)識(shí)別新增和離線的節(jié)點(diǎn)。
使用Demo
寫入兩個(gè)ES集群
- 提示
flow設(shè)置兩個(gè)es集群時(shí),發(fā)送請(qǐng)求會(huì)按照順序執(zhí)行,比如下面配置查詢時(shí)會(huì)先執(zhí)行dev再執(zhí)行prd,通過(guò)8000接口返回的數(shù)據(jù)是最后一個(gè)配置返回的結(jié)果
- 通過(guò)極限網(wǎng)關(guān)創(chuàng)建索引,分別去dev、prd兩個(gè)集群查看發(fā)現(xiàn)均創(chuàng)建成功
- 寫入數(shù)據(jù),分別查看兩個(gè)集群均寫入成功
- 查詢數(shù)據(jù),返回?cái)?shù)據(jù)成功。修改最后配置的一個(gè)es集群prd數(shù)據(jù),再次查詢發(fā)現(xiàn)返回的數(shù)據(jù)也被修改,判斷出返回的數(shù)據(jù)是最后一個(gè)配置的集群prd的數(shù)據(jù)
極限網(wǎng)關(guān)-常見(jiàn)問(wèn)題
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- 原因
沒(méi)有引用model
- 解決方法:
配置文件中加入
modules: - name: elasticenabled: trueelasticsearch: devstore:enabled: truemonitoring:enabled: falseorm:enabled: trueinit_template: truetemplate_name: ".gateway-default"index_prefix: "gateway_"極限網(wǎng)關(guān)地址
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的INFINI GATEWAY 极限网关初体验 ElasticSearch 两个集群数据同步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Flink keyby 数据倾斜问题处理
- 下一篇: 串口通信参数