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_"

极限网关地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509663.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

std::thread详解

转自&#xff1a;http://www.cnblogs.com/haippy/p/3236136.html 上一篇博客《C11 并发指南一(C11 多线程初探)》中只是提到了 std::thread 的基本用法&#xff0c;并给出了一个最简单的例子&#xff0c;本文将稍微详细地介绍 std::thread 的用法。 std::thread 在 <thread&…

Kafka 详细配置参数说明

参数值参数文件描述auto.create.topics.enableserver.properties【说明】是否允许自动创建Topic&#xff0c;若是false&#xff0c;就需要通过命令创建Topic。【默认值】true【取值范围】true或falselog.cleaner.backoff.msserver.properties【说明】检查是否有日志需要清理的时…

数据结构实验之栈三:后缀式求值

题目描述 对于一个基于二元运算符的后缀表示式&#xff08;基本操作数都是一位正整数&#xff09;&#xff0c;求其代表的算术表达式的值。输入 输入一个算术表达式的后缀式字符串&#xff0c;以‘#’作为结束标志。输出 求该后缀式所对应的算术表达式的值&#xff0c;并输出之…

std::mutex详解

Mutex 又称互斥量&#xff0c;C 11中与 Mutex 相关的类&#xff08;包括锁类型&#xff09;和函数都声明在 <mutex> 头文件中&#xff0c;所以如果你需要使用 std::mutex&#xff0c;就必须包含 <mutex> 头文件。 <mutex> 头文件介绍 Mutex 系列类(四种) st…

java中stack集合框架

栈(Stack):数据结构的一种,存储特点:Last In First Out. Stack 类表示后进先出&#xff08;LIFO&#xff09;的对象栈. 栈结构在生活中的体现: 1):QQ消息. A,B,C三个人先后发送消息,我们查看的时候发现最顶上的是最新的消息. 2):手枪弹夹的装和发射: 要来实现栈的存储,底层…

ElasticSearch Pipeline 为新增数据设置更新时间

文章目录模拟测试测试返回结果实际应用创建Pipeline查看创建Pipeline新增数据测试查看新增数据创建索引时直接设置Pipeline模拟测试 测试 POST _ingest/pipeline/_simulate {"pipeline": {"processors": [{"set": {"field": "t…

队列的基本操作

链式存储 typedef int QElemType; typedef int Status;//具体数据类型具体定义 typedef struct QNode//队列结点结构体 { QElemType data; QNode *next; } QNode, *Queueptr; typedef struct // 链队列类型 { Queueptr front; // 队头指针&#xff08;结构体类…

c++阻塞队列

基于C11的阻塞队列简单实现 转载请说明出处&#xff1a;http://blog.csdn.net/cywosp/article/details/9157379 在多线程编程中阻塞队列(Blocking Queue)是一种常用于实现生产者和消费者模型的数据结构。其与普通的队列区别在于&#xff0c;当队列为空时&#xff0c;从队列获取…

java中ArrayList类的操作

ArrayList类是Java集合框架出现之后用来取代Vector类的: 二者底层原理都是基于数组的算法,一模一样. 区别: Vector: 所有的方法都使用了synchronized修饰符. 线程安全但是性能较低. 适用于多线程环境. ArrayList:所有的方法都没有使用synchronized修饰符. 线程不安全但是性…

Elasticsearch Painless Script详解

文章目录1. Painless 简介Painless 的用途2. 参数3. 首选参数4. 简短脚本形式5. 通过 Painless 脚本访问字段6. 示例6.1 案例 1&#xff1a;Script Processsor6.2 案例 2&#xff1a;文档更新计数6.3 案例 3&#xff1a;搜索时的 Script 字段6.4 Script :Inline v.s Stored6.5 …

算术表达式的转换

题目描述 小明在学习了数据结构之后&#xff0c;突然想起了以前没有解决的算术表达式转化成后缀式的问题&#xff0c;今天他想解决一下。因为有了数据结构的基础小明很快就解出了这个问题&#xff0c;但是他突然想到怎么求出算术表达式的前缀式和中缀式呢&#xff1f;小明很困惑…

Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程

内容目录&#xff1a; Reactor实现架构对比面向对象的Reactor方案设计函数式编程的Reactor设计示例对比两者的时序图对比结论 Reactor事件驱动的两种设计实现&#xff1a;面向对象 VS 函数式编程 这里的函数式编程的设计以muduo为例进行对比说明&#xff1b; Reactor实现架构对…

ElasticSearch 快照 备份、恢复数据

文章目录ElasticSearch 设置备份文件地址注册快照存储库查看快照存储库保存结果创建快照异步创建指定索引进行快照查看全部快照在服务器查看备份的数据恢复数据本机恢复其他服务器恢复常见问题报错 doesnt match any of the locations specified by path.repo because this set…

java中LinkedList类的操作

LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法. 在LinkedList类中存在很多方法,但是功能都是相同的.LinkedList表示了多种数据结构的实现,每一种数据结构的操作名字不同. 面试题:编…

数据结构实验之栈七:出栈序列判定

题目描述 给一个初始的入栈序列&#xff0c;其次序即为元素的入栈次序&#xff0c;栈顶元素可以随时出栈&#xff0c;每个元素只能入栈依次。输入一个入栈序列&#xff0c;后面依次输入多个序列&#xff0c;请判断这些序列是否为所给入栈序列合法的出栈序列。 例如序列1&#x…

FileBeat + Pipeline 解析日志 保存至ElasticSearch(实战)

文章目录FileBeat Pipeline 解析日志 保存至ElasticSearch&#xff08;实战&#xff09;下载地址目的日志数据模拟Pipeline创建pipeline查看Pipeline是否创建成功创建FileBeat配置文件 filebeat.yml创建自定义字段 FileBeat fields.yml执行 FileBeatfilebeat 启动命令说明测试…

网络编程中的关键问题总结

内容目录&#xff1a; 连接建立连接断开消息到达发送消息消息发送完毕其它问题参考 网络编程中的关键问题总结 总结下网络编程中关键的细节问题&#xff0c;包含连接建立、连接断开、消息到达、发送消息等等&#xff1b; 连接建立 包括服务端接受 (accept) 新连接和客户端成功发…

List实现类性能和特点分析

面向接口编程: 接口类型 变量 new 实现类(); List list new ArrayList(); List实现类特点和性能分析: 三者共同的特点(共同遵循的规范): 1):允许元素重复. 2):记录元素的先后添加顺序. Vector类: 底层才有数组结构算法,方法都使用了synchronized修饰,线程安全,但是性能…

数据结构实验之栈八:栈的基本操作

题目描述 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式&#xff0c;push 和 pop。push一个值会将其压入栈顶&#xff0c;而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 输入 首先输入整数t&#xff08;1 < t < 10&#xff09;&#xff0c;代表测…

F5 BIGip 负载均衡 IP算法解密工具

BIGip是对负载均衡的实现&#xff0c;主要通过Virtual Server、iRules、Pool、Node、Monitor和Persistent&#xff08;会话保持&#xff09;实现。BIGip在实现会话保持机制时会在用户首次发起请求时&#xff0c;会为用户设置一个cookie&#xff0c;即服务端会添加set-cookie响应…