首页 文章 精选 留言 我的

精选列表

搜索[MoE动态路由],共10000篇文章
优秀的个人博客,低调大师

版本动态 | DataSphere Studio 1.0.1 版本发布

DataSphere Studio简介 DataSphere Studio(简称 DSS)是微众银行自研的数据应用开发管理集成框架。 基于插拔式的集成框架设计,及计算中间件 Linkis ,可轻松接入上层各种数据应用系统,让数据开发变得简洁又易用。 在统一的 UI 下,DataSphere Studio 以工作流式的图形化拖拽开发体验,将满足从数据交换、脱敏清洗、分析挖掘、质量检测、可视化展现、定时调度到数据输出应用等,数据应用开发全流程场景需求。 DSS 通过插拔式的集成框架设计,让用户可以根据需要,简单快速替换 DSS 已集成的各种功能组件,或新增功能组件。 借助于 Linkis 计算中间件的连接、复用与简化能力,DSS 天生便具备了金融级高并发、高可用、多租户隔离和资源管控等执行与调度能力。 GitHub:https://github.com/WeBankFinTech/DataSphereStudio 已集成的数据应用组件 DSS 通过实现多个 AppConn,已集成了丰富多样的各种上层数据应用系统,基本可满足用户的数据开发需求。 已集成的组件列表如下:(最新详情见GitHub) 1.0.1 版本说明 DSS-1.0.1版本包含所有 Project DSS-1.0.1。 该版本主要包含了以下三个改进和增强: 1、适配 Apache Linkis 1.0.3 版本。 2、http restful api风格使用spring mvc替换jersey。 3、优化全家桶一键安装部署脚本的日志打印。 新特性 - [DSS-444] 适配 Apache Linkis 1.0.3 版本。 - [DSS-445] http restful api风格使用spring mvc替换jersey。 功能增强 -[DSS-448] 优化全家桶一键安装部署脚本的日志打印。 BUG修复 - [DSS-499] [DSS-Execution] 修改appconn引擎复用配置参数,解决appconn引擎不能复用问题。 - [DSS-516] [DSS-Execution] 添加一个kill接口,解决工作流停止失败问题。 - [DSS-470] [DSS-Apiservice]修改apiservcice模块引用的日志打印类,解决模块编译错误问题。 - [DSS-448] [DSS-Package]更新dss应用组件ddl语句,解决组件列表数据错误问题。 - [DSS-448] [DSS-AppConn] 调整AppConnEngineConnExecutor接口参数,解决工作流节点删除异常问题。 - [DSS-448] [DSS-Standard] 优化SSO复用登录态的判断逻辑,解决登录不跳转问题。 - [DSS-476] [DSS-workflow] 修改原接口请求参数格式,解决工作空间创建报错问题。 贡献者 DSS 1.0.1发布离不开DSS社区的贡献者,感谢所有的社区贡献者!

优秀的个人博客,低调大师

项目动态|Apache Pulsar 2.7.3 版本介绍

本文原文作者是 StreamNative 工程师丛搏、刘昱。译者刘梓霖,传智教育工程师。 关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性。GitHub 地址:http://github.com/apache/pulsar/ 近期,Apache Pulsar 社区发布了 Pulsar 2.7.3 版本!新版本涵盖 32 位贡献者提供的改进和错误修复,并提交了 79 次变更。 版本亮点: •游标读取遵循调度字节率限制器的设置,不会再导致意外的结果。[1]•Ledger 滚动任务按预期执行。[2] 本博客介绍了 2.7.3 版本最值得关注的进展,如需了解所有性能升级和 bug 修复的完整列表,请查阅Pulsar 2.7.3 发布注记[3]。 Bug 修复和性能升级 Broker PR-9826[4]:游标读取遵循调度字节率限制器的限制。 问题:无论是命名空间还是主题策略在限制分发速率时都未考虑使用字节速率限制。 解决方案:修复了调度字节速率限制器设置的行为。游标读取会遵循此设置并且不会在导致意外的结果。 PR-11226[5]:Ledger 滚动计划任务按照预期执行。 问题:在此 PR 之前,ledger 在达到最大滚动时间之前执行滚动任务,导致 ledger 不能及时滚动。 解决方案:修复 ledger 滚动调度的时间,任务只能在 ledger 成功创建之后运行。 PR-11136[6]:在重启 broker 时,主题级别的保留策略能正常工作。 问题:在此 PR 之前,当为一个 topic 设置 topic 级保留策略然后重启 broker 时,该 topic 级别的保留策略不生效。 解决方案:修正了此策略的行为,使其在启动policyCacheInitMap后重放所有策略消息,并在重新启动 broker 时添加了保留策略检查测试。 PR-10977[7]:调用 lastMessageId API 不会再导致内存泄露。 问题:在此 PR 之前,调用lastMessageIdAPI 时存在内存泄露,导致 broker 进程被 Kubernetes 停止。 解决方案:为PersistentTopic.getLastMessageId增加了缺失的 entry.release() 调用,以确保 broker 不会耗尽内存。 PR-10594[8]:ZooKeeper 读取由 broker 缓存。 问题:当执行管理操作以获取租户的命名空间时,是 ZooKeeper 使用在 ZooKeeper 客户端读取的, 而不是从broker 缓存中读取。 解决方案:修复 ZooKeeper 在为租户获取命名空间列表时的缓存问题。 PR-10512[9]:调用LeaderService.isLeader()的监控线程不再被阻塞。 问题:当LeaderService改变为 leadership 状态时,会被一个synchronized块锁定,这也阻止了其他线程调用LeaderService.isLeader()。 解决方案:通过修改ClusterServiceCoordinator和WorkerStatsManager以检查其是否来自MembershipManager的 leader ,修复了监控线程的死锁条件,使其不被LeaderService.isLeader()阻塞。 PR-10414[10]:hasMessageAvailable可以成功读取消息。 问题:因消息被acknowledgmentsGroupingTracker过滤,当hasMessageAvailableAsync返回true时无法读取消息。 解决方案:通过修改acknowledgmentsGroupingTracker过滤重复消息,并在之后连接打开时清理消息来修复竞争条件。 Proxy PR-8048[11]:Proxy 支持自动创建分区 topic。 问题:Proxy 因使用的是当前的 ZooKeeper 元数据而没有创建分区。 解决方案:通过从可用 broker 中选择和获取,而不是使用当前的 ZooKeeper 元数据来更改 proxy 以处理PartitionMetadataRequest。 Pulsar admin PR-11140[12]:增加标识来表明是否在复制的集群上创建元数据路径。 问题:在复制的命名空间上创建分区 topic时,没有在复制的集群上创建元数据路径/managed-ledgers。 解决方案:增加了一个标识(createLocalTopicOnly),用来表明是否为复制集群中的分区 topic 创建元数据路径。 PR-11131[13]:禁止为不存在的 topic 设置策略。 问题:由于 topic 策略中存在重定向循环,用户可以为不存在的 topic 或者已分区的 topic 设置策略。 解决方案:此项修复为 topic 策略增加了一个权威标识,以避免重定向循环。用户无法为不存在的 topic 或单分区 topic 的分区设置 topic策略。如果你为 0 分区 topic 的分区设置策略,它会重定向到 broker 。 PR-10806[14]:服务发现不再将 topic 硬编码为持久性。 问题:当对分区的非持久 topic 使用查找服务发现时,就会返回 0 而不是分区数。Pulsar 客户端会以连接普通 topic 的方式尝试连接到该 topic。 解决方案:实现topicName.getDomain().value()而不是硬编码persistent。现在用户可以成功地对一个分区的非持久 topic 使用服务发现。 PR-10744[15]:其他连接器现在可以使用 KinesisBackoff类 问题:Pulsar 客户端实现项目中的 Kinesis sink 连接器Backoff类结合依赖org.apache.pulsar:pulsar-client-original增加了连接器的大小。 解决方案:在函数 io-core 项目中增加了一个新的类Backoff,以便 Kinesis sink 连接器和其他连接器可以使用此类。 客户端 PR-10506[16]:无法发送许可为零的FLOW请求。 问题:当 broker 接收到一个零许可的FLOW请求时,会抛出异常并且关闭连接。这会引发频繁的重连,并导致重复或者乱序的消息。 解决方案:增加了一个在发送FLOW请求之前验证其许可的验证功能,如果请求是零许可,则不能发送FLOW请求。 函数和连接器 PR-10769[17]:Kinesis sink 连接器确认成功的消息。 问题:Kinesis sink 连接器在发送成功后没有确认消息。 解决方案:为 Kinesis sink 连接器增加了消息发送成功后的确认。 Docker PR-10531[18]:在使用 Kubernetes 运行时,Function 名称不能超过 52 个字符。 问题:当使用 Kubernetes 运行时,如果提交的 function 长度有效(小于 55 个字符),就会创建一个无法产生 pod 的 StatefulSet。 解决方案:将 Kubernetes 运行时的 function 名称的最大长度从 55 个字符改为 53 个字符。通过这一修复, function 名字的长度不能超过 52 个字符。 依赖 PR-10907[19]:启动 TLS 后,pulsar-admin与 proxy 的连接稳定了。 问题:因为 Jetty 9.4.39 中引入了 SSL 缓存的错误,pulsar-admin在 TLS 连接中不稳定,,导致大型 function jar 包上传频繁失败。 解决方案:将 Jetty 升级到 9.4.42.v20210604,这样当启用 TLS 时,pulsar-admin与 proxy 的连接是最稳定的。 参与其中 新版本使用 欢迎大家下载[20]并使用新版本!如果在使用中遇到问题,可以通过提 issue[21]或在微信群交流的方式抛出疑问并与社区交流。 加入 Apache Pulsar 社区 Pulsar 项目的成长来源于社区,也扎根于社区。一次次新版本的筹备与发布离不开社区伙伴们的贡献。你是否愿意成为其中的一员呢? 参与开源,可以获得公司及社区内外的认可,结交来自各个领域、志同道合的小伙伴;同时也可以提高个人影响力,促进个人发展。参与开源不是码农的专属,社区、文档等各个方面都可以让大家发挥一技之长。 作为全球性开源项目,截至目前,Apache Pulsar 已拥有 435 名贡献者、9.4K+ Star 、2.3 K+ Fork 。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache Pulsar 项目的不断发展与前进。 •Apache Pulsar 官方贡献指南[22] •加入 Apache Pulsar 志愿者大家庭 译者信息 Hi~ 我叫刘梓霖,一名会 code 的斜杠青年 ~ 推荐阅读 •Pulsar 2.8.0 新增特性概览:独占 Producer、事务等•Apache Pulsar 2.7.1 版本正式发布! 引用链接 [1]游标读取遵循调度字节率限制器的设置,不会再导致意外的结果。:https://github.com/apache/pulsar/pull/11249 [2]Ledger 滚动任务按预期执行。:https://github.com/apache/pulsar/pull/11226 [3]Pulsar 2.7.3 发布注记:https://pulsar.apache.org/en/release-notes/ [4]PR-9826:https://github.com/apache/pulsar/pull/9826 [5]PR-11226:https://github.com/apache/pulsar/pull/11226 [6]PR-11136:https://github.com/apache/pulsar/pull/11136 [7]PR-10977:https://github.com/apache/pulsar/pull/10977 [8]PR-10594:https://github.com/apache/pulsar/pull/10594 [9]PR-10512:https://github.com/apache/pulsar/pull/10512 [10]PR-10414:https://github.com/apache/pulsar/pull/10414 [11]PR-8048:https://github.com/apache/pulsar/pull/8048 [12]PR-11140:https://github.com/apache/pulsar/pull/11140 [13]PR-11131:https://github.com/apache/pulsar/pull/11131 [14]PR-10806:https://github.com/apache/pulsar/pull/10806 [15]PR-10744:https://github.com/apache/pulsar/pull/10744 [16]PR-10506:https://github.com/apache/pulsar/pull/10506 [17]PR-10769:https://github.com/apache/pulsar/pull/10769 [18]PR-10531:https://github.com/apache/pulsar/pull/10531 [19]PR-10907:https://github.com/apache/pulsar/pull/10907 [20]下载:https://pulsar.apache.org/en/download/ [21]提 issue:https://github.com/apache/pulsar/issues [22]Apache Pulsar 官方贡献指南:http://pulsar.apache.org/en/contributing/

优秀的个人博客,低调大师

k8s-HPA动态伸缩

2 --> 一、认识HPA 参考: https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale/ HPA全称是Horizontal Pod Autoscaler,中文意思是POD水平自动伸缩. 可以基于 CPU 利用率自动扩缩 ReplicationController、Deployment、ReplicaSet 和 StatefulSet 中的 Pod 数量。 除了 CPU 利用率,内存占用外,也可以基于其他应程序提供的自定义度量指标来执行自动扩缩。 自定义度量参考: https://github.com/kubernetes/community/blob/master/contributors/design-proposals/instrumentation/custom-metrics-api.md Pod 自动扩缩不适用于无法扩缩的对象,比如 DaemonSet。 Pod 水平自动扩缩特性由 Kubernetes API 资源和控制器实现。资源决定了控制器的行为。 控制器会周期性的调整副本控制器或 Deployment 中的副本数量,以使得 Pod 的平均 CPU 利用率与用户所设定的目标值匹配。 二、HPA工作机制 Pod 水平自动扩缩器的实现是一个控制回路,由控制器管理器的 --horizontal-pod-autoscaler-sync-period 参数指定周期(默认值为 15 秒)。 每个周期内,控制器管理器根据每个 HorizontalPodAutoscaler 定义中指定的指标查询资源利用率。 控制器管理器可以从资源度量指标 API(按 Pod 统计的资源用量)和自定义度量指标 API(其他指标)获取度量值。 对于按 Pod 统计的资源指标(如 CPU), 控制器从资源指标 API 中获取每一个 HorizontalPodAutoscaler 指定的 Pod 的度量值,如果设置了目标使用率, 控制器获取每个 Pod 中的容器资源使用情况,并计算资源使用率。 如果设置了 target 值,将直接使用原始数据(不再计算百分比)。 接下来,控制器根据平均的资源使用率或原始值计算出扩缩的比例,进而计算出目标副本数。 需要注意的是,如果 Pod 某些容器不支持资源采集,那么控制器将不会使用该 Pod 的 CPU 使用率。 如果 Pod 使用自定义指示,控制器机制与资源指标类似,区别在于自定义指标只使用 原始值,而不是使用率。 如果 Pod 使用对象指标和外部指标(每个指标描述一个对象信息)。 这个指标将直接根据目标设定值相比较,并生成一个上面提到的扩缩比例。 在 autoscaling/v2beta2 版本 API 中,这个指标也可以根据 Pod 数量平分后再计算。 通常情况下,控制器将从一系列的聚合 API(metrics.k8s.io、custom.metrics.k8s.io 和 external.metrics.k8s.io)中获取度量值。 metrics.k8s.io API 通常由 Metrics 服务器(需要额外启动)提供。 确认安装metrics-server [root@master1 ~]# kubectl get pods -n kube-system |grep metrics-server metrics-server-869ffc99cd-lz68h 1/1 Running 5 23h [root@master1 ~]# kubectl top nodes NAME CPU(cores) CPU% MEMORY(bytes) MEMORY% 192.168.122.11 357m 4% 895Mi 17% 192.168.122.12 426m 5% 910Mi 28% 192.168.122.13 353m 4% 664Mi 20% 192.168.122.14 251m 3% 408Mi 12% 三、HPA API对象 HPA的API有三个版本 [root@master1 ~]# kubectl api-versions | grep autoscal autoscaling/v1 autoscaling/v2beta1 autoscaling/v2beta2 APA版本 描述 autoscaling/v1 只支持基于CPU指标的缩放 autoscaling/v2beta1 支持Resource Metrics(资源指标,如pod的CPU)和Custom Metrics(自定义指标)的缩放; autoscaling/v2beta2 支持Resource Metrics(资源指标,如pod的CPU)和Custom Metrics(自定义指标)和ExternalMetrics(额外指标)的缩放。 四、kubectl对HPA的支持 与其他 API 资源类似,kubectl 以标准方式支持 HPA。 通过 kubectl create 命令创建一个 HPA 对象 通过 kubectl get hpa 命令来获取所有 HPA 对象 通过 kubectl describe hpa 命令来查看 HPA 对象的详细信息 通过 kubectl delete hpa 命令删除对象。 此外,还有个简便的命令 kubectl autoscale 来创建 HPA 对象。 例如,命令 kubectl autoscale rs foo --min=2 --max=5 --cpu-percent=80 将会为名 为 foo 的 ReplicationSet 创建一个 HPA 对象, 目标 CPU 使用率为 80%,副本数量配置为 2 到 5 之间。 五、HPA演示案例 参考: https://kubernetes.io/zh/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/ 基于CPU的HPA 1, 构建测试镜像 [root@master1 ~]# vim index.php <?php $x = 0.0001; for ($i = 0; $i <= 1000000; $i++) { $x += sqrt($x); } echo "OK!"; ?> [root@master1 ~]# vim Dockerfile FROM php:5-apache COPY index.php /var/www/html/index.php RUN chmod a+rx index.php [root@master1 ~]# docker build -f Dockerfile -t 192.168.122.18/library/hpa-example:v1 . 2, 上传到harbor [root@master1 ~]# docker login 192.168.122.18 Username: admin Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded [root@master1 ~]# docker push 192.168.122.18/library/hpa-example:v1 3, 部署测试deployment [root@master1 ~]# vim php-apache.yaml apiVersion: apps/v1 kind: Deployment metadata: name: php-apache spec: selector: matchLabels: app: php-apache replicas: 1 template: metadata: labels: app: php-apache spec: containers: - name: php-apache image: 192.168.122.18/library/hpa-example:v1 ports: - containerPort: 80 resources: limits: cpu: 500m requests: cpu: 200m [root@master1 ~]# kubectl apply -f php-apache.yaml deployment.apps/php-apache created 4, 验证得到pod-IP [root@master1 ~]# kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READIN ESS GATES php-apache-665fc66c67-cfj6f 1/1 Running 0 25m 10.3.104.15 192.168.122.14 <none> <none> 得到pod-IP为10.3.104.15,此IP下面测试需要用到 5, 创建HPA [root@master1 ~]# kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10 horizontalpodautoscaler.autoscaling/php-apache autoscaled 说明: --cpu-percent=50表示所有Pod的平均CPU使用率维持在50%,超过就要扩容 --min=1 --max=10表示pod数量的范 6, 创建测试pod对其访问 用另一个终端(我这里是master2)使用busybox镜像产生一个测试pod,对10.3.104.15进行压测 [root@master2 ~]# kubectl run busybox -it --image=busybox /bin/sh / # while true; do wget -q -O- http://10.3.104.15; done OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!...... 不断查询hpa状态,大概一分钟后才会看到效果 [root@master1 ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 250%/50% 1 10 1 19m cpu用到250%了 [root@master1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE busybox 1/1 Running 0 3m27s php-apache-665fc66c67-8z6wj 1/1 Running 0 59s php-apache-665fc66c67-cfj6f 1/1 Running 0 26m php-apache-665fc66c67-fn4wg 1/1 Running 0 59s php-apache-665fc66c67-t9wpr 1/1 Running 0 44s php-apache-665fc66c67-zw662 1/1 Running 0 60s 也可以看到pod扩容到了5个 [root@master2 ~]# kubectl run busybox -it --image=busybox /bin/sh / # while true; do wget -q -O- http://10.3.104.15; done OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!OK!^ ctrl+c取消压力测试 要等几分钟甚至更久后,就看到cpu与pod数量都回去了 [root@master1 ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE php-apache Deployment/php-apache 0%/50% 1 10 5 22m [root@master1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE busybox 1/1 Running 0 28m php-apache-665fc66c67-t9wpr 1/1 Running 0 25m 7, 测试完后删除 [root@master1 ~]# kubectl delete deployments.apps php-apache deployment.apps "php-apache" deleted [root@master1 ~]# kubectl delete pod busybox pod "busybox" deleted [root@master1 ~]# kubectl delete hpa php-apache horizontalpodautoscaler.autoscaling "php-apache" deleted 基于内存的HPA 1, 创建测试deployment [root@master1 ~]# vim nginx-hpa.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-hpa spec: selector: matchLabels: app: nginx-hpa replicas: 1 template: metadata: labels: app: nginx-hpa spec: containers: - name: nginx image: nginx:1.15-alpine ports: - containerPort: 80 name: http protocol: TCP resources: requests: cpu: 0.01 memory: 25Mi limits: cpu: 0.05 memory: 60Mi [root@master1 ~]# kubectl apply -f nginx-hpa.yaml deployment.apps/nginx-hpa created 2, 创建HPA [root@master1 ~]# vim mem-hpa.yaml apiVersion: autoscaling/v2beta1 # v2beta1版本 kind: HorizontalPodAutoscaler metadata: name: nginx-hpa spec: maxReplicas: 10 minReplicas: 1 # 1-10个pod范围内扩容与裁剪 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx-hpa metrics: - type: Resource resource: name: memory targetAverageUtilization: 50 # 50%内存利用 [root@master1 ~]# kubectl apply -f mem-hpa.yaml horizontalpodautoscaler.autoscaling/nginx-hpa created [root@master1 ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE nginx-hpa Deployment/nginx-hpa 12%/50% 1 10 1 60s 3, 对pod进行测试 换一个终端(master2),进入pod后进行dd命令测试 [root@master2 ~]# kubectl exec -it nginx-hpa-74ccf95f7d-454z5 -- /bin/sh / # dd if=/dev/zero of=/tmp/file1 4, 验证 不断查询hpa状态,大概一分钟后才会看到效果 [root@master1 ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE nginx-hpa Deployment/nginx-hpa 204%/50% 1 10 5 3m10s [root@master1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-hpa-74ccf95f7d-454z5 1/1 Running 0 6m20s nginx-hpa-74ccf95f7d-8gznw 1/1 Running 0 30s nginx-hpa-74ccf95f7d-bv4hm 1/1 Running 0 30s nginx-hpa-74ccf95f7d-g9276 1/1 Running 0 15s nginx-hpa-74ccf95f7d-xmzqs 1/1 Running 0 30s 5, 裁剪测试 ctrl+c取消后,删除dd的文件 [root@master2 ~]# kubectl exec -it nginx-hpa-74ccf95f7d-454z5 -- /bin/sh / # rm /tmp/file1 -rf 等几分钟甚至更久后,就看到cpu与pod数量都回去了 [root@master1 ~]# kubectl get hpa NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE nginx-hpa Deployment/nginx-hpa 12%/50% 1 10 1 28m [root@master1 ~]# kubectl get pods NAME READY STATUS RESTARTS AGE nginx-hpa-74ccf95f7d-xmzqs 1/1 Running 0 25m 6, 测试完后删除 [root@master1 ~]# kubectl delete deploy nginx-hpa deployment.apps "nginx-hpa" deleted [root@master1 ~]# kubectl delete hpa nginx-hpa horizontalpodautoscaler.autoscaling "nginx-hpa" deleted 写在最后,更多功能可以自己去探索。虽然目前HPA功能还在beta版,但以后肯定会越来越成熟。

优秀的个人博客,低调大师

近期数据库动态解读

近段时间,数据库市场非常活跃,各类新闻层出不穷。整体市场发展也呈现出较之前明显不同的的变化。本文尝试从近期国内数据库榜单变化情况,分析行业发展特点。以下为个人观点,仅供参考。相关数据从墨天轮网站中获得,点击此处可查阅详情。 1.数据库榜单解读 1).第一阵营解读 TiDB:吹响HTAP的号角 TiDB,仍然在众多国产厂商中遥遥领先,当然与其他厂家的差距在缩小;这也变相说明国内数据库整体发展正在加速之中。TiDB与近期成功发布了5.0版本,将HTAP的趋势再度加温。随之各厂商,以巨杉、Oceanbase、PolarDB等为代表,也纷纷提出了自己对HTAP的支持增强。特别是Oceanbase通过TPCH+TPCC双料冠军的,更加夯实了自己在HTAP领域的重要地位。相信随着各产品HTAP能力已逐步成熟,客户会慢慢考虑将部分混合负载业务考虑通过HTAP架构来支持。 OceanBase:开源界的新兵 Oceanbase,是近期耀眼的明星厂商,通过TPCH打榜、产品开源等一系列动作,再次吸引了大量公众的关注。从榜单数据上也得到了对应的体现,发展趋势稳健,且进一步缩小与TiDB的差距。同样作为NewSQL类的典型代表,又同样冠以开源的理念,相信这两个“类似”产品会更多地提及比较。OB作为开源领域的后来者,如何构建自己的生态体系,成为后续发展的要点。相信在开源的加成下,OB必将取得更大的成绩。 PolarDB:云厂商的逆袭 作为云厂商的代表性产品,PolarDB近期表现也很亮眼,提升幅度很大,已非常接近第二名。在日前发布会上,阿里云数据库提出了新的战略发展,其中引人瞩目的正是PolarDB的开源。作为头部企业,阿里在开源策略上曾出现过一些波折,近期重拾开源大旗,相信未来会有更多的布局。其在发布会上,也公布了未来的系列开源计划,非常令人期待。 2).其他产品解读 除了三甲产品外,其他产品相较前者仍有一定差距。从一段时间观察来看,起起伏伏变化较大。在众多产品中,重点关注下上升最快的新兵-openGuass。虽然加入榜单的时间不长,但整体表现非常亮眼。特别是近两个月,连续提升了两个位次。这主要是openGuass近期动作频频,在自有生态建设下,现已吸引众多重量级企业加入。此外,基于openGuass内核的商业化产品也开始在大型商业客户中试水。 2.数据库趋势分析 人生基本上就是两件事,选题和解题。最好的人生是在每个关键点上,既选对题,又解好题。人生最大的痛苦在于解对了题,但选错了题,而且还不知道自己选错了题。正如人生最大的遗憾就是,不是你不行,而是你本可以。 总结近一阶段国内数据库市场发展,可用以下几个关键词来概括“促开源、建生态、求变革、新场景”。 促开源 开源,几乎成为近期最热关键词。伴随着几个大厂在开源上的举措,开源市场将迎来一场巨变。针对此次开源事件,个人解决更多是一种竞争中的求变策略。开源为这些企业带来的可谓一举多得,一是带来更多的关注度,有助于构建产品生态;二是吸引用户参与研发,提升产品质量;三是有助于在政策导向更强的企业中落地,建设企业对闭源的忧虑;四是更多切近业务,直接获得前线反馈。之前头部企业-PingCAP,秉承开源理念取得了不俗的成绩,如今大厂纷纷加入,相信未来开源市场将更加活跃,也会带动国内开源产业的发展。 建生态 前面开源部分谈到的建立自己生态,是开源的初衷之一。相较于国外大型商业数据库产品或知名开源产品而言,国内产品最为欠缺的正是生态建设。这不仅包括从上下游企业的配合,也包括个人使用者、乃至DBA群体的构建。开源是解决渠道之一,同时还包括技术布道、职业教育、厂商合作等等措施。某种意义上讲,在众多国产数据库中谁家能脱颖而出,更多正是取决于完整生态的构建。 求变革 主动求变,是我看到各个厂商动作频频的主要原因。随着国产数据库市场,已进入红海领域,竞争也日趋白热化。如何能在众多厂商中脱颖而出?如何找到企业的第二增长曲线?主动求变,也是企业不得而为之的选择。在当前还未形成巨头类企业的情况下,通过变革寻找新的机会,成为大家的共识。因此,无论是开源策略、合作方式、生态建设等等,各家都在不遗余力。 新场景 新场景,意味着新赛道。与其在传统领域中摸爬滚打,不如另辟蹊径找到新的数据使用场景。近段时间的HTAP场景,以TiDB、OceanBase、PolarDB等为代表;湖仓一体场景,以巨杉数据库、阿里云数据库产品为代表;新数仓场景,以TDSQL-A、ClickHouse、DorisDB为代表等。这些场景,部分并非全新领域;但通过技术积累,也促进部分场景的成熟落地。 墨天轮,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。 更多精彩可以前往【墨天轮社区】 关注官方公众号:墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯

优秀的个人博客,低调大师

like动态查询结果集的实现!

有这么一个需求,有个sys_org表 可见这个code可以like查询所有子集没有什么问题,就是根据一个code值查询这个code自己包括所有子集,这时候只需要一个like就能很简单的查询出来, 但是现在有个中间表paper_org如下结构, 首先根据试卷id查出所有的code来,然后再根据这些code查询出所有子集来,这时候再用like会直接报错! 那么该怎么查询呢,第一种先查询所有的code来然后再遍历查询所有子集可以实现,但是能直接一次查询出来么? 这里经过调研开始可以实现的,目前只是实现,效率方便暂不考虑 首先mysql有个regexp表达式 可以直接这样查询 那关键就是后面这个字符串了,第二步从中间表查出这个字符串,有个GROUP_CONCAT('|^',column)分隔字符串 可以看到字符串基本可以了然后前面有了个匹配符^,继续用concat函数如下 这就是正则表达式想要的字符串,有了这个之后就好说了,然后直接如下 select code from sys_org where code regexp (select code from (SELECT concat('^',GROUP_CONCAT(distinct code ORDER BY id DESC SEPARATOR '|^')) code FROM examine_paper_org where paper_id='1358321465280679938') a) ; 可以看到可以实现对于多个结果集的like写法!好了这个小技能get到了吗

优秀的个人博客,低调大师

Flink Weekly | 每周社区动态更新-20200228

大家好,本文为 Flink Weekly 的第七期,由李劲松整理,主要内容包括:近期社区开发进展,邮件问题答疑以及社区直播和相关技术博客。 社区开发进展 谢亚东增强Apache Flink Web UI的提议[1]拆分成了7个子FLIP,这将大大增强UI的可用性,帮助我们排查问题,了解运行时信息。现在分别正在热火朝天的讨论和投票中,大家可以看下邮件中的Demo,每个子FLIP都有Demo例子来展示。 FLIP-98: 更好的反压检测 [2] FLIP-99: 使得最大异常数可配置 [3] FLIP-100: 添加Task等的重试信息 [4] FLIP-101: 在作业详情页面添加PendingSlots的Tab [5] FLIP-102: 添加更多的TaskManager Metrics [6] FLIP-103: 更好的Taskmanager/Jobmanager日志展示 [7] FLIP-104: 添加更多的Jobmanager Metrics [8] 更多信息请参考: [1]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-75-Flink-Web-UI-Improvement-Proposal-td33540.html[2]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-98-Better-Back-Pressure-Detection-td37893.html[3]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-99-Make-Max-Exception-Configurable-tp37895.html[4]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-100-Add-Attempt-Information-tp37896p37966.html[5]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-101-Add-Pending-Slots-Detail-tp37897p37967.html[6]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-102-Add-More-Metrics-to-TaskManager-tp37898.html[7]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-103-Better-TM-JM-Log-Display-tp37899p38075.html[8]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-104-Add-More-Metrics-to-Jobmanager-tp37901.html Canbin Zheng发起的Kubernetes的架构重构讨论正在进行中,希望引入一个统一的基于monadic-step的编排器架构,该架构对Kubernetes资源构建过程具有更好、更清晰和一致的抽象,适用于客户端和服务端。 [9]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLINK-16194-Refactor-the-Kubernetes-architecture-design-td37931.html 钟葳发起了在SQL DDL中支持Python UDF的讨论,在1.10中,已经支持了UDF的DDL,但是只支持了Java/Scala的,这个讨论旨在支持Python UDF。 [10]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-106-Support-Python-UDF-in-SQL-Function-DDL-td38107.html 李钰和王治江回复了Unaligned checkpoints的讨论,这个提议在于支持一种新的Checkpoint方式,它可以把Checkpoint的间隔大大缩短,减少流计算的E2E时间,也减少Failover的时间。 [11]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-76-Unaligned-checkpoints-td33651.html 李博闻发起了JDBC Catalog FLIP的投票,旨在用Catalog来对接JDBC,从而可以使用到外部数据库的表。 [12]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-93-JDBC-catalog-and-Postgres-catalog-td38208.html 贺小令发起了TableEnvironment接口重构FLIP的投票,旨在重构TableEnvironment的sqlUpdate等接口,提供更为清晰的sql接口,避免缓存SQL问题导致用户的困惑。 [13]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-FLIP-84-Improve-amp-Refactor-API-of-TableEnvironment-td38178.html 邮件列表答疑 Outlook在用户邮件列表发出了关于Json格式解析Timestamp时的问题,目前Flink在Json解析时遵循了RFC 3339标准,但是这个标准可能不是用户常用的,用户可能有各种各样的Timestamp字符串形式,解法正在讨论中。 [14]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Re-TIME-TIMESTAMP-parse-in-Flink-TABLE-SQL-API-td38150.html 有两位用户都遇到了Class冲突的问题,这是因为Flink 1.10把客户端的ClassLoader解析顺序调整为了Child优先,这就导致用户的Jar包不能包含Flink框架的classes,比如常见的Calcite、Flink-Planner依赖、Hive依赖等等。用户需要把有冲突classes的jar放到flink-home/lib下,或者调整策略为Parent优先。 [15]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Flink-1-10-exception-Unable-to-instantiate-java-compiler-td38221.html[16]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Flink-1-10-exception-Unable-to-instantiate-java-compiler-td38221.html 猫猫提出了flink-jdbc-driver的使用问题,引出了目前batch不支持UpsertTableSink,也就是不支持目前的JDBCUpsertSink和HBaseUpsertSink,目前正在支持中。 [17]http://apache-flink.147419.n8.nabble.com/flink-jdbc-driver-mysql-flink1-10-0-td1763.html claylin提出了Flink 1.10 RocksDB优化的问题,正在尝试通过内存和线程来解决。 [18]http://apache-flink.147419.n8.nabble.com/rocksDB-td1785.html 有两位用户都碰到了Flink 1.10 Hive集成的kerberos认证异常,问题还在排查中。 [19]http://apache-flink.147419.n8.nabble.com/Flink-1-10-hive-kerberos-td1751.html[20]http://apache-flink.147419.n8.nabble.com/Hive-Source-With-Kerberos-td1688.html 活动博客文章及其他 Seth发布关于Apache Flink SQL DDL的博客文章“No Java Required: Configured Sources and Sinks in SQL”。 [21]https://flink.apache.org/news/2020/02/20/ddl.html Maximilian Michels和Markos Sfikas发布了Apache Beam和Apache Flink集成的博客文章:“Apache Beam: How Beam Runs on Top of Flink”。 [22]https://flink.apache.org/ecosystem/2020/02/22/apache-beam-how-beam-runs-on-top-of-flink.html Flink 中文社区进行了 Flink 1.10 特别篇直播。 Flink on Zeppelin: 极致体验(1) 入门 + Batch,由 Apache Zeppelin PMC,阿里巴巴高级技术专家章剑锋分享 基于 Flink 的典型 ETL 场景实现,由美团点评高级技术专家买蓉分享 直播回顾: https://ververica.cn/developers/flink-training-course3/ 2 分钟快速订阅 Flink 中文邮件列表 Apache Flink 中文邮件列表订阅流程: 发送任意邮件到 user-zh-subscribe@flink.apache.org 收到官方确认邮件 回复该邮件 confirm 即可订阅 订阅成功后将收到 Flink 官方的中文邮件列表的消息,您可以向 user-zh@flink.apache.org 发邮件提问也可以帮助别人解答问题,动动手测试一下! Tips: Flink Weekly 周报计划每周更新一期,内容涵盖邮件列表中用户问题的解答、社区开发和提议的进展、社区新闻以及其他活动、博客文章等,欢迎持续关注~ 作者介绍: 李劲松,花名之信,Apache Flink Committer,2014 年起专注于阿里内部 Galaxy 流计算框架;2017 年起开始 Flink 研发,主要专注于 Batch 计算、数据结构与类型。

优秀的个人博客,低调大师

如何应对动态的网络犯罪形势

在过去的五年,我们在认识网络犯罪方面取得了长足的进步,但网络组织和民族国家所构成的威胁也在日益增加。 过去的攻击通常在战略上是不成熟的,不协调的,属于机会主义,譬如勒索软件攻击。攻击使用了冒充流媒体服务、银行机构或旅行社的普通网络钓鱼诱饵,这些粗犷的犯罪网络是由罪犯、集团造成的,就像漂浮在海洋上的塑料垃圾一样,它扰乱了生态系统的各个层面,从个人到银行,律师事务所和医院都为之所害。而不管受骗方是谁,赎金支付都是固定利率交易费,并不反映受害人的资金情况。 但是,混乱中出现了秩序。有犯罪集团开始认识到,网络犯罪比传统的实体犯罪更有利可图,危险性更小。这不仅导致了系统性的敲诈勒索,也导致了其更加针对有利可图的目标,比如担心名誉受损的律师事务所,或者害怕业务中断和病人护理受影响的医院。同时,赎金进入了五位数和六位数的范围。 这时候,工具开始出现在民间黑市。恶意软件和像Emotet这样的传递机制已经不是商品了,他们甚至为其他威胁行为者提供恶意软件交付服务。这反映了这样一个事实:犯罪集团在利用财富500强企业进行经营,在市场上建立起很好的有效载荷传输机制,就像一个企业一样运营。这也可以理解为网络工具的商品化。商品化意味着增长,低成本则打开了市场机会。 现在,民族国家正在重新校准雷达,公司发现自己成为贸易战中受损的一部分,各国利用网络博弈来试图平衡经济影响。 网络犯罪组织使用最多的攻击方法是什么?哪种类型的组织风险最大? 没有人能免受网络攻击。但是特定的行业继续在网络犯罪领域里占据上风。虽然银行曾经是将利润联系起来的载体(银行是人们存钱的地方),但现在,犯罪分子正在把其他行业也看作是一场巨大的棋盘。 尽管攻击手段越来越复杂,但更重要的是了解他们的攻击目标。他们明白是什么在驱动一个企业,是什么让他们夜不能寐,是什么让他们按下钓鱼链接。因此,犯罪分子使用网络钓鱼诱饵,经常通过攻击目标自己公司的工具来对付他们,比如利用受信任的供应商,或利用嵌入式工具(如远程管理协议)来提供对关键网络操作的分散访问。 最值得注意的是医院和医疗机构。它们向公众开放,容易受到攻击,并且很难防御。随着物联网以连接医疗图像、静脉注射和患者监测系统的形式渗透到医疗领域,医院将轻松成为目标。 他们很脆弱,不管是担心业务中断、停机时间会影响患者的护理,在医院和医疗机构,攻击关于患者的生死。因此,这些机构愿意付出代价,以避免普遍的勒索软件攻击造成的系统长期关闭。对于犯罪分子来说,病历同样很有价值,可以用来欺骗保险公司。此外,犯罪分子知道,发生数据泄露时,医院也会支付巨额罚款。因此,医院会轻易支付赎金,避免停机,患者账单丢失和监管隐私罚款。 律师事务所和其他商业服务机构(会计,市场营销,咨询等)拥有无与伦比的关键信息访问权限,现在也成为犯罪分子的主要攻击目标。律师事务所控制财务信息,知识产权和其他形式的有价值信息。他们更在意自己的声誉,并担心受到公众攻击的影响。因此,他们会支付赎金。 制造企业则成为数十亿美元欺诈性帐单的受害者。在一个案例中,一家公司面临着以数百万美元的成本关闭一条受感染的生产线的困境。当时董事会决定等待预定的维护时段,但承受了由此引发的网络攻击的后果。 此外,我们在教育,媒体、娱乐以及其他领域里同样看到了攻击的情况。一旦发现水坑,所有食肉动物就知道它们的猎物会聚集在那里。 对想要制定长期风险管理策略的CISO的建议 安全不再是1和0的问题。这不是一个需要解决的It问题,而是需要管理的商业风险问题。 CISO在业务目标设定过程中应该考虑到第0步。这个地理市场有风险吗?这个客户会引起政治关注吗?住房医疗信息是否增加了我们的义务?这些都是需要解决的业务问题,而不是简单地用另一个防火墙或更多用户意识培训来解决的IT问题。 此外,CISO必须成为法律团体的一部分,并平等分担风险责任。安全需要与业务目标保持一致,并和指导委员会制定明确的目标。同时,必须以业务人员可以理解的术语来描述风险。CISO既然知道风险,就要将风险传递给董事会和高管,让他们了解与网络安全有关的义务。 对2020年的预测 攻击将继续朝着高回报,键盘式攻击的方向发展。这意味着旨在阻止恶意软件和凭据收集工具的普通安全控件无法应对这些策略。企业需要投资安全专家,让他们与犯罪分子对抗,并捍卫安全堡垒。 灰色犯罪也将继续发展壮大。用来影响公众思想和选举的策略会被用于改变公司的企业价值。犯罪分子可以编造故事,然后通过社交网络传递这些故事(虚假信息)以此正面或负面地影响股票价值,再利用内幕信息买卖股票以“抢先”交易。与盗窃专有信息相比,这将更难被发现,更难被制止。

优秀的个人博客,低调大师

Flink Weekly | 每周社区动态更新 - 20200114

大家好,本文为 Flink Weekly 的第四期,由 Forward Xu 整理,主要内容包括:Flink 1.10 版本的发布测试,SQL catalog 读取关系数据库 schema 的相关建议以及 Flink Forward 旧金山的演讲邀请。 Flink 开发进展 [Release] 社区仍在测试和修复 Flink 1.10 的错误。您可以在发布燃尽板上进行操作。估计第一个 RC 版本很快就来了 。 https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=349&projectKey=FLINK [SQL] Bowen 建议在 Table API 中添加 JDBC 和 Postgres Catalog API。这样,Flink 可以自动创建关系数据库中对应的表。目前,用户需要手动在 Flink 上创建相应的表(包括 schema)。 https://cwiki.apache.org/confluence/display/FLINK/FLIP-92%3A+JDBC+catalog+and+Postgres+catalog http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-92-JDBC-catalog-and-Postgres-catalog-tp36505.html [configuration] Xintong 建议更改 Flink 内存配置的一些默认值(FLIP-49),并正在寻求反馈 。 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Discuss-Tuning-FLIP-49-configuration-default-values-td36528.html [datastream api] Congxian 建议统一从 statebackends 向 AppendingState 添加“空(null)” 值的处理。建议的原因是使所有 statebackends 拒绝“空(null)”值。 http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Make-AppendingState-add-refuse-to-add-null-element-tp36493.html 需要注意的一些缺陷 由于在发布测试,因此有很多活动,但是对于已经发布的版本,没有发现任何新的显著错误。 活动 / 博客文章 / 其他 Flink Forward 旧金山的演讲邀请即将结束,但是您仍然有机会将演讲提交给该演讲者(可能只有)北美的 Apache Flink 社区会议。如有疑问或如果您不确定是否要提交参与,请随时与 Konstantin 联系。 https://www.flink-forward.org/sf-2020 [即将举行的聚会] 1月18日,Preetdeep Kumar 将分享一些基本的 Flink DataStream processing API,然后进行动手演示。这将是在线活动。在会议链接中可以查看更多详细信息。 https://www.meetup.com/Hyderabad-Apache-Flink-Meetup-Group/events/267610014/ 1月22日 Konstantin 的同事 Alexander Fedulov 将在马德里的 Apache Flink 聚会上使 Flink 进行欺诈检测。 https://www.meetup.com/Meetup-de-Apache-Flink-en-Madrid/events/267744681/ 中文邮件问题答疑汇总 Flink 的 savepoint 为什么要设置成手动的?的问题解答: http://apache-flink.147419.n8.nabble.com/flink-savepoint-checkpoint-td1229.html Flink 消费 Kafka 没有数据问题的问题解答: http://apache-flink.147419.n8.nabble.com/flink-Kafka-td1461.html 关于 Flink 集群中调用 dubbo 服务的咨询: http://apache-flink.147419.n8.nabble.com/flink-dubbo-td1467.html 关于 Flink Plan Visualizer 什么时候会更新成1.9的样式的问题,tison 已经抄送给 Flink WebUI 重构的 Manager: http://apache-flink.147419.n8.nabble.com/Flink-Plan-Visualizer-1-9-td1404.html#a1429 Flink 的每条数据既然都做了 checkpoint,做成全局分布式一致性快照,那还需要本地 state干啥呢?的问题解答: http://apache-flink.147419.n8.nabble.com/checkpoint-state-td1122.html 关于 Flink 遇到 valueState 自身的 NPE 的问题解答: http://apache-flink.147419.n8.nabble.com/flink-valueState-NPE-td1447.html#a1459 关于流处理任务失败该如何追回之前的数据的问题解答: http://apache-flink.147419.n8.nabble.com/-td1016.html 关于 Flink 是否可以通过代码设置 hadoop 的配置文件目录的问题解答: http://apache-flink.147419.n8.nabble.com/flink-hadoop-td1445.html 关于 Flink 算子状态查看的问题解答: http://apache-flink.147419.n8.nabble.com/flink-td1441.html 关于疑似 ParquetTableSource Filter Pushdown bug 的问题解答: http://apache-flink.147419.n8.nabble.com/Re-ParquetTableSource-Filter-Pushdown-bug-tt1439.html 关于 Flink 1.10 版本连接 hive 报错的问题解答: http://apache-flink.147419.n8.nabble.com/flink1-10-hive-tt336.html 关于 Flink 不同 StateBackend ProcessWindowFunction 的差别的问题解答: http://apache-flink.147419.n8.nabble.com/FLINK-StateBackend-ProcessWindowFunction-tt1418.html#a1419 关于 Jobgraph 生成的问题解答: http://apache-flink.147419.n8.nabble.com/Re-jobgraph-tt1426.html 关于注册 table 时 catalog 无法变更的问题解答: http://apache-flink.147419.n8.nabble.com/table-catalog-tt1417.html#a1425 关于 Flink sql confluent schema avro topic 注册成表的问题解答: http://apache-flink.147419.n8.nabble.com/flink-sql-confluent-schema-avro-topic-tt1264.html 使用 Flink SQL 时,碰到的【Window can only be defined over a time attribute column】的问题解答: http://apache-flink.147419.n8.nabble.com/Flink-SQL-Window-can-only-be-defined-over-a-time-attribute-column-tt1407.html 关于如何获取算子处理一条数据记录的时间的问题解答: http://apache-flink.147419.n8.nabble.com/-tt1357.html#a1412

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册