CompletableFuture
CompletableFuture 在Java8中,CompletableFuture提供了非常强大的Future的扩展功能,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过回调的方式处理计算结果,也提供了转换和组合 CompletableFuture 的方法。 它可能代表一个明确完成的Future,也有可能代表一个完成阶段( CompletionStage ),它支持在计算完成以后触发一些函数或执行某些动作。 它实现了Future和CompletionStage接口 创建CompletableFuture supplyAsync 有 runAsync 无两者的区别在于是否返回result 执行 CompletableFuture.allOf() CompletableFuture.anyOf()两者的区别在于是否需要全部任务执行完在继续allOf是阻塞式的,需要全部future执行完才会继续anyOf则是有个执行完就ok调用get方法,得到结果值 回调函数 thenApply回调函数(callback) 当前阶段正常完成以后执行,而且当前阶...
jmeter连接jdbc
数据库驱动包下载与安装 示例: 连接mysql 下载connectorhttps://dev.mysql.com/downloads/connector/j/ 安装下载完成后解压放到jmeter的lib/ext下 重启jmeter JDBC的连接配置添加配置元件-JDBC Connection Configuration 参数详解 Variable Name for created pool:自己定义连接数据库的名称, 需要记住, 这里会在后续使用jdbc request中用到Database URL:数据库url,jdbc:mysql://主机ip或者机器名称:mysql监听的端口号/数据库名称,如:jdbc:mysql://localhost:3306/kyjurl后面的参数(可以不写)characterEncoding=utf8&useSSL=true&serverTimezone=UTC设置时区和编码格式JDBC Driver clas...
k8s之dnsPolicy应用场景
转自: https://help.aliyun.com/document_detail/188179.html?utm_content=g_1000230851&spm=5176.20966629.toubu.3.f2991ddcpxxvD1#title-b7y-d6a-bcy DNS原理和配置说明本文介绍Kubernetes集群中集群DNS服务原理,并针对不同场景介绍如何进行DNS策略配置。 背景信息K8S集群默认部署了一套DNS服务,通过kube-dns的服务名暴露DNS服务。你可执行以下命令查看kube-dns的服务详情。 1kubectl get svc kube-dns -n kube-system 预期输出: 12NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkube-dns ClusterIP 172.24.0.10 <none> 53/UDP,53/TCP,9153/TCP 27d K8S部署的D...
缓存的使用,开启gzip以及各种header的操作
Nginx里Header修改 修改Nginx默认Header 修改普通请求的HeaderNginx内置的模块暂时仅支持修改响应头,使用add_header。其中: add_header 来自内置模块ngx_http_headers_module,用于设置response header。参考:http://www.cnblogs.com/linxiong945/p/4174262.html 如果需要设置普通请求的request header,则需要单独安装headers-more-nginx-module模块。该模块提供了more_set_headers,more_set_input_headers分别用于设置请求、响应头。 示例: 12345678910location ~ .*\.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param LOG_ID $request_id; more_set_input_headers "...
自定义监控指标开发(五):整合Springboot和Prometheus实现自定义指标
我在第二章中有介绍使用koa整合Prometheus自定义指标,这里记录下整合Springboot和Prometheus实现自定义指标 要在Spring Boot中使用Micrometer-registry-prometheus记录QPS和响应时间,可以按照以下步骤操作 Spring-boot-starter-actuatorSpringBoot中的spring-boot-starter-actuator依赖已经集成了对Micrometer的支持,其中的metrics端点的很多功能就是通过Micrometer实现的,prometheus端点默认也是开启支持的,实际上actuator依赖的spring-boot-actuator-autoconfigure中集成了对很多框架的开箱即用的API,其中prometheus包中集成了对Prometheus的支持,使得使用了actuator可以轻易地让项目暴露出prometheus端点,使得应用作为Prometheus收集数据的客户端,Prometheus(服务端软件)可以通过此端点收集应用中Micrometer的度量数据。 整合M...
自定义监控指标开发(六):精简Prometheus指标减少资源占用
前言随着 Prometheus 监控的组件、数量、指标越来越多,Prometheus 对计算性能的要求会越来越高,资源占用也会越来越高。 在这种情况下,要优化 Prometheus 性能, 优化存储占用. 第一时间想到的可能是各种 Prometheus 的兼容存储方案, 如 Thanos 或 VM、Mimir 等。但是实际上虽然集中存储、长期存储、存储降采样及存储压缩可以一定程度解决相关问题,但是治标不治本。 真正的本,还是在于指标量(series)过于庞大。 治本之法,应该是减少指标量。有 2 种办法: 解决高基数问题 根据实际使用情况,只保留(keep)展示(Grafana Dashboards)和告警(prometheus rules)会用到的指标。 高基数问题什么是基数(Cardinality)?基数的 基本定义 是指一个给定集合中的元素的数量。 在Prometheus中指代series 的基数 (High Cardinality) 在 Prometheus 和可观察性的世界里,标签基数 是非常重要的,因为它影响到你的监控系统的性能和资源使用。 下面这张...
自定义监控指标开发(一):基于Docker搭建Prometheus+Grafana
摘自:https://juejin.cn/post/7097166804044218405 安装运行Prometheus(docker版)Grafana是一个开源的功能丰富的数据可视化平台,通常用于时序数据的可视化。它内置了多种数据源的支持 下载镜像包123docker pull prom/node-exporterdocker pull prom/prometheusdocker pull grafana/grafana 启动node-exporter12345docker run -d -p 9100:9100 \ -v "/proc:/host/proc:ro" \ -v "/sys:/host/sys:ro" \ -v "/:/rootfs:ro" \ prom/node-exporter 访问url: http://127.0.0.1:9100/metrics 效果如下: 这些都是收集到的数据,有了它就可以做数据展示了。 启动prometheus新建目录 prometheus,编辑配置文件p...
分布式块存储-longhorn
官方文档 记录下longhorn的使用 - rancherlab提供的开源分布式块存储方案 Longhorn 支持以下架构: AMD64 ARM64(实验性) longhotn需要open-iscsi,curl,findmnt,grep,awk,blkid,lsblk的依赖(是否需要单独安装可以使用这个脚本进行验证,centos7有可能需要单独安装下jq和open-iscsi) 利用rancher安装: 在rancher ui上选择自己的集群,然后找到对应app安装即可,v2.6.3测试没问题(尝试用kubectl安装的时候告诉我缺少NODE_NAME ENV,但是rancher就正常): https://longhorn.io/docs/1.2.3/deploy/install/install-with-rancher/查看对应几个node是否正常创建longhorn(默认数据路径)ls /var/lib/longhorn界面 创建应用进行测试应用 yaml 创建 PVC 和 pod pvc.yaml1234567891011apiVersion: v1kind: P...
aliyun OSS-分布式存储
结合之前学习一个开源项目的时候,重新写一下关于oss的文章(修改api使用及开通流程部分) 使用oss作为文件存储 关于oss作为文件存储的一个叙述 文件上传在系统中用的很频繁,所以我们需要将上传的文件进行存储,传统的将文件上传到本机已不适用分布式系统。自己搭建文件服务器有复杂性和维护成本。所以我们可以采用市面上成熟的文件存储服务,如阿里云的OSS对象存储服务 每个 OSS 的用户都会用到上传服务。Web 端常见的上传方法是用户在浏览器或 APP 端上传文件到应用服务器,应用服务器再把文件上传到 OSS。具体流程如下图所示。 和数据直传到 OSS 相比,以上方法有三个缺点: 上传慢:用户数据需先上传到应用服务器,之后再上传到OSS。网络传输时间比直传到OSS多一倍。如果用户数据不通过应用服务器中转,而是直传到OSS,速度将大有提升。而且OSS采用BGP带宽,能保证各地各运营商之间的传输速度。 扩展性差:如果后续用户多了,应用服务器会成为瓶颈。 费用高:需要准备多台应用服务器。由于OSS上传流量是免费的,如果数据直传到OSS,不通过应用服务器,可以省下几台...
linux各种系统更换国内软件源
alpine1234567891011set -eux \&& sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories \&& apk update# 切换时区set -eux \&& apk add --no-cache tzdata \&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone \&& apk del tzdata ubuntu 镜像中文?乱码现象 1234# 在 Dockerfile 中添加ENV LANG C.UTF-8# ENV LANGUAGE C.UTF-8 #可不配置# ENV LC_ALL C>UTF-8 #可不配置 阿里云镜像 12345678# 替换<...
