● Queryable State实现原理与配置方法

Queryable State 是 Apache Flink 提供的一个特性,它允许外部系统查询 Flink 作业的状态。这是通过将 Flink 的状态暴露为一个可查询接口来实现的,使得外部应用可以直接访问和查询 Flink 中的状态数据,而不需要触发整个 Flink 作业的计算。

### 实现原理

1. **状态注册**:
   - Flink 作业中的状态需要被注册为 Queryable State。这通常是在作业初始化时完成的。

2. **外部服务**:
   - Flink 提供了一个独立的 Queryable State 服务,该服务负责接收外部查询请求并返回状态数据。

3. **状态访问**:
   - 外部系统通过一个特定的网络接口(如 HTTP 或 TCP)向 Queryable State 服务发送查询请求。

4. **状态检索**:
   - Queryable State 服务根据请求中的信息(如状态名称、状态键等)从 Flink 作业的状态后端检索状态数据。

5. **响应返回**:
   - 检索到的状态数据被转换为响应并发送回外部系统。

### 配置方法

1. **启用 Queryable State 服务**:
   - 在 Flink 作业的配置中启用 Queryable State 服务,并设置一个端口用于查询。

```java
import org.apache.flink.configuration.Configuration;
import org.apache.flink.runtime.state.QueryableStateOptions;

Configuration config = new Configuration();
config.setBoolean(QueryableStateOptions.ENABLE_QUERYABLE_STATE_SERVER, true);
config.setString(QueryableStateOptions.QUERYABLE_STATE_SERVER_ADDRESS, "localhost");
config.setInteger(QueryableStateOptions.QUERYABLE_STATE_SERVER_PORT, 8181);
```

2. **注册状态**:
   - 在 Flink 作业中,使用 `registerTypeWithKvStateRegistry` 方法注册需要被查询的状态。

```java
import org.apache.flink.api.common.state.ValueStateDescriptor;
import org.apache.flink.runtime.state.KvStateRegistry;
// ...

KvStateRegistry kvStateRegistry = getRuntimeContext().getKvStateRegistry();
ValueStateDescriptor<String> stateDescriptor = new ValueStateDescriptor<>("myStateName", String.class);
kvStateRegistry.register(stateDescriptor);
```

3. **启动 Queryable State 服务**:
   - 在 Flink 作业启动时,Queryable State 服务会自动启动,并监听配置的端口。

4. **查询状态**:
   - 外部系统可以通过构建合适的查询请求来查询状态。例如,使用 HTTP 请求查询特定键的状态:

```http
GET http://localhost:8181/myStateName/key123
```

5. **安全性**:
   - 考虑到安全性,可能需要对 Queryable State 服务进行安全配置,如使用 SSL/TLS 加密通信。

6. **监控和日志**:
   - 监控 Queryable State 服务的性能,并记录访问日志,以便于问题诊断和性能优化。

Queryable State 提供了一种灵活的方式,允许外部系统直接与 Flink 作业交互,获取实时的状态信息。这对于需要实时监控和决策支持的应用程序非常有用。然而,也需要注意保护 Queryable State 服务,避免未授权的访问和潜在的安全风险。

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

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

相关文章

浏览器原理之浏览器机制

事件机制 一 事件是什么&#xff1f;事件模型&#xff1f; 事件 是浏览器或用户自身发出的某种特定交互的信号。这包括但不限于鼠标点击、按键操作、页面加载、滚动等。 事件模型 主要包括三个阶段&#xff1a; 捕获阶段&#xff1a;事件从文档根节点向下传递到目标节点&am…

PyQt6实战7--文本编辑器

一个简单的文本编辑器 features: 1.open 一个文件夹作为项目 2.save 保存当前窗口的内容 3.退出 4.双击文件可以打开文件内容 5.简单的python高亮 6.双击相同文件&#xff0c;会找到之前打开过的文件 打开一个文件夹 打开项目&#xff0c;双击打开文件 保存 代码&#xf…

雷电模拟器+python

import os import time from compare import compare #上一段代码我存为了compare.pyclass Ldconsole: #请根据自己软件的路径来console rF:\leidian\LDPlayer9\dnconsole.exe ld rF:\leidian\LDPlayer9\ld.exeadb rF:\leidian\LDPlayer9\adb.exe #这个类其实不用写的&…

CSRF漏洞

文章目录 目录 文章目录 一.什么是CSRF 二.CSRF漏洞工作原理 一.什么是CSRF CSRF&#xff08;Cross-Site Request Forgery&#xff09;漏洞&#xff0c;也被称为跨站请求伪造漏洞&#xff0c;是一种Web应用程序安全漏洞。当受害者在已经登录了某个网站的情况下&#xff0c;访问…

密码学 | 数字签名方法:Schnorr 签名

⚠️原文&#xff1a;Introduction to Schnorr Signatures ⚠️写在前面&#xff1a;适用于有一点密码学基础的亲故&#xff0c;否则建议跑路。 1 Schnorr 签名的定义 假设你有密钥对 ( x , X x ∗ G ) ( x, X x * G ) (x,Xx∗G)&#xff0c;那么消息 m m m 的 Schnor…

吴恩达机器学习笔记 三十五 异常检测与监督学习

什么时候选择异常检测&#xff1f; 正样本 ( y 1 ) 的数量非常少 负样本 ( y 0 ) 的数量非常多 有很多不同的异常&#xff0c;现有的算法不能从正样本中得知什么是异常&#xff0c;或未来可能出现完全没见过的异常情况。 例如金融欺诈&#xff0c;隔几个月或几年就有新的…

java+idea+mysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码

javaideamysql采用医疗AI自然语言处理技术的3D智能导诊导系统源码 随着人工智能技术的快速发展&#xff0c;语音识别与自然语言理解技术的成熟应用&#xff0c;基于人工智能的智能导诊导医逐渐出现在患者的生活视角中&#xff0c;智能导诊系统应用到医院就医场景中&#xff0c…

jvm-接口调用排查

问题描述 线上碰到个问题&#xff0c;某个接口调用时间特别长&#xff0c;线上调用接口直接报gateway time out 分析处理 1、先关闭该功能 &#xff08;该功能是非核心功能&#xff09; 2、本地起服务连环境排查&#xff0c;发现本地正常。并且线上其他接口正常&#xff0c;…

机器学习笔记——浅析L2,1范数正则化的线性回归

前言 嘻嘻&#xff0c;刚开始搓逾期了快两周的线性回归实验报告&#xff0c;为了让报告稍微不那么平淡不得不啃论文。 本文从最基本的线性回归开始&#xff0c;对比不同正则化方法的特点和作用&#xff0c;推广到多任务问题并引出L2,1范数正则化&#xff0c;卑微小采购尝试去…

顺序表复习(C语言版)

数据结构是什么&#xff1f; 数据结构就是为了把数据管理起来&#xff0c;方便我们的增删查改 数据结构是计算机存储、组织数据的方式 数组就是一种最基础的数据结构 顺序表是什么&#xff1f; 顺序表就是数组 Int arr[100] {1,2,3,4,5,x,……} 修改某个数据&#xff1a…

【leetcode面试经典150题】56. 基本计算器(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…

Mac下删除旧版本.net sdk

参照微软官网给的方法,Releases dotnet/cli-lab (github.com) 好像不能直接的解决问题,我做一下补充,希望对需要删除旧版本sdk的小伙伴们有所帮助 1:下载工具包 Releases dotnet/cli-lab (github.com) 2:打开终端,cd切换到该文件的制定目录 3:然后按照提示一步步执行…

mybatis使用

mybatis使用 一、添加配置文件 在application.properties配置文件文件中添加数据库连接信息 spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver spring.datasource.urljdbc:mysql://localhost:3306/your_database_name?useUnicodetrue&characterEncodingUTF-…

java核心类

一,String字符串 1.1,String字符串是引用类型,且不可变 String str1 "Hello";String str2 str1.concat(" World"); // 使用concat方法连接字符串&#xff0c;返回一个新的字符串对象System.out.println(str1); // 输出&#xff1a;Hello&#xff0c;原始…

C语言:复习

文章目录 思维导图数组和指针库函数的模拟实现判断大小端 最近知识学的差不多了&#xff0c;因此开始复习&#xff0c;本篇开始的是对于C语言的复习 思维导图 下面就依据下图&#xff0c;进行内容的整理 数组和指针 这个模块算是C语言中比较大的一个模块了&#xff0c;具体概…

IO——线程

1. 什么是线程 1.1概念 线程是一个轻量级的进程&#xff0c;为了提高系统的性能引入线程。 线程和进程都参与统一的调度。 在同一个进程中可以创建的多个线程, 共享进程资源。 &#xff08;Linux里同样用task_struct来描述一个线程&#xff09; 1.2进程和线程的区别 相同点…

【Vue】Vue中使一个div铺满全屏

在Vue中实现div全屏铺满的方式与纯CSS实现类似&#xff0c;只是在Vue组件中应用CSS的方式略有不同。 最近在项目开发中&#xff0c;就遇到了这个问题&#xff0c;特此记录一下&#xff0c;方便大伙避坑。 有这么一段代码&#xff1a; <template><div class"fu…

JS - 在JS中常用的运算符

学过编程语言的都知道一种大部分编程语言其实都存在许多相似的地方&#xff0c;比如数学中的四则运算&#xff0c;这个在JS中同样生效&#xff0c;不过在JS中&#xff0c;有进行部分拓展&#xff0c;这个也是其他语言中都有的&#xff0c;每个语言都有其功能和特性&#xff0c;…

流媒体协议--RTMP

文章目录 RTMP播放基本流程TCP握手过程RTMP握手过程connect连接createStream 创建流play 播放命令deleteStream删除流RTMP数据组成 RTMP(Real Time Messaging Protocol)是一个应用层协议&#xff0c;主要用于在Flash player和服务器之间传输视频、音频、控制命令等内容。 该协议…

类和对象-对象特性-类对象作为类成员

类对象作为类成员 #include<iostream> #include<string> using namespace std; class Phone{ public:Phone(string pName){m_pNamepName;}string m_pName; }; class Person{ public:Person(string name,string pName):m_Name(name),m_Phone(pName){}string m_Nam…