Flink-es-conector7-ElasticsearchSink
截至1.13.1,官方文档所提供的方式已经废弃12345678910111213141516171819202122232425262728293031HttpHost httpHost = new HttpHost(esHost, esPort, esScheme);List<HttpHost> httpPosts = new ArrayList<>();httpPosts.add(httpHost);RestClientFactory restClientFactory = new RestClientFactory() { @Override public void configureRestClientBuilder(RestClientBuilder restClientBuilder) { CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCr...
Java-HashMap底层实现原理
转自:https://mrbird.cc/Java-HashMap%E5%BA%95%E5%B1%82%E5%AE%9E%E7%8E%B0%E5%8E%9F%E7%90%86.html 本节用于记录Java HashMap底层数据结构、方法实现原理等,基于JDK 1.8。 底层数据结构Java HashMap底层采用哈希表结构(数组+链表、JDK1.8后为数组+链表或红黑树)实现,结合了数组和链表的优点: 数组优点:通过数组下标可以快速实现对数组元素的访问,效率极高; 链表优点:插入或删除数据不需要移动元素,只需修改节点引用,效率极高。 HashMap图示如下所示: HashMap内部使用数组存储数据,数组中的每个元素类型为Node<K,V>: 123456789101112131415161718192021222324252627282930313233343536373839static class Node<K,V> implements Map.Entry<K,V> { final int hash; ...
fix error: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
统一代理日志中出现以下错误消息1PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 原因这是Java虚拟机报告的常见错误消息。当Java环境没有适当的CA证书路径来验证HTTPS服务器是否为有效网站时,就会发生这种情况。这是一个特定于Java的错误,其他技术不会报告此类错误。 解决方案创建证书首先,你需要创建一个证书。要执行此操作,请按照以下步骤操作: 在浏览器中打开URL(即https://www.example.com/、https://saas.whitesourcesoftware.com/) 按F12访问浏览器的开发人员工具 转到“security”选项卡 单击“view certificate” 在“详细信息”窗口中,转到“详细信息”选项卡 单击“导出” 确保文件格式为:Base64编码ASCII、单个证书...
Netty 进阶
Netty 进阶1. 粘包与半包1.1 粘包现象服务端代码 12345678910111213141516171819202122232425262728293031323334353637383940414243444546public class HelloWorldServer { static final Logger log = LoggerFactory.getLogger(HelloWorldServer.class); void start() { NioEventLoopGroup boss = new NioEventLoopGroup(1); NioEventLoopGroup worker = new NioEventLoopGroup(); try { ServerBootstrap serverBootstrap = new ServerBootstrap(); serverBootstrap.channel(NioServe...
优化与源码
优化与源码1. 优化1.1 扩展序列化算法序列化,反序列化主要用在消息正文的转换上 序列化时,需要将 Java 对象变为要传输的数据(可以是 byte[],或 json 等,最终都需要变成 byte[]) 反序列化时,需要将传入的正文数据还原成 Java 对象,便于处理 目前的代码仅支持 Java 自带的序列化,反序列化机制,核心代码如下 1234567891011// 反序列化byte[] body = new byte[bodyLength];byteByf.readBytes(body);ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(body));Message message = (Message) in.readObject();message.setSequenceId(sequenceId);// 序列化ByteArrayOutputStream out = new ByteArrayOutputStream();new ObjectOutputStream(out)....
k8s环境下,nginx做websocket负载的方案梳理
websocket server websocket server demo:https://github.com/mrniko/netty-socketio-demo Dockerfile 123456FROM maven:3.8.5-openjdk-17 as buildWORKDIR /user/src/appCOPY . .RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && mvn clean package -DskipTestsCMD mvn exec:java -f pom.xml 部署(保证pod可以被独立访问)statefulset方式 使用statefulset+headless service的方式对pod进行独立访问 DNS: pod名称-编号.headless名称.namespace.svc.cluster.local 123456789101112131415161718192021222324252627282930313233343536...
prometheus推送告警记录
AlertManager 中的几个容易混淆的参数首先在 Prometheus 中有两个全局的参数 scrape_interval 和 evaluation_interval 。 scrape_interval 参数表示的是 Prometheus 从各种 metrics 接口抓取指标数据的时间间隔 evaluation_interval 参数表示的是 Prometheus 对报警规则进行评估计算的时间间隔。 group_by 为了避免连续发送类似的告警通知,可以将相关告警分到同一组中进行告警。分组机制可以将详细的告警信息合并成一个通知,在某些情况下,比如由于系统宕机导致大量的告警被同时触发,在这种情况下分组机制可以将这些被触发的告警合并为一个告警通知,避免一次性接受大量的告警通知: 1group_by: ['alertname', 'job'] group_wait 当一个新的报警分组被创建后,需要等待至少 group_wait 时间来初始化告警。 这样实际上就缓冲了从 Prometheus 发送到 AlertManager 的告警,...
wsl配合docker desktop安装k8s
clone k8s-for-docker-desktop 项目1git clone https://github.com/AliyunContainerService/k8s-for-docker-desktop.git 从阿里云镜像服务下载 Kubernetes 所需要的镜像 如果项目未支持想要的镜像版本, 可以通过修改 images.properties 文件自行加载你自己需要的镜像 如果因为安全策略无法执行 PowerShell 脚本,请在 “以管理员身份运行” 的 PowerShell 中执行 Set-ExecutionPolicy RemoteSigned 命令。 在Windows上,使用 PowerShell 1.\load_images.ps1 开启 Kubernetes,并等待 Kubernetes 开始运行 如果在Kubernetes部署的过程中出现问题 可以在 C:\ProgramData\DockerDesktop下的service.txt 查看Docker日志 在 C:\Users\yourUserName\AppData\Local...
Jenkinsfile的使用
什么是流水线jenkins 有 2 种流水线分为声明式流水线与脚本化流水线,脚本化流水线是 jenkins 旧版本使用的流水线脚本,新版本 Jenkins 推荐使用声明式流水线。文档只介绍声明流水线。 1、声明式流水线在声明式流水线语法中,流水线过程定义在 Pipeline{}中,Pipeline 块定义了整个流水线中完成的所有工作,比如 参数说明: agent any:在任何可用的代理上执行流水线或它的任何阶段,也就是执行流水线过程的位置,也可以指定到具体的节点 stage:定义流水线的执行过程(相当于一个阶段),比如下文所示的 Build、Test、Deploy, 但是这个名字是根据实际情况进行定义的,并非固定的名字 steps:执行某阶段具体的步骤。 123456789101112131415161718192021//Jenkinsfile (Declarative Pipeline)pipeline { agent any stages { stage('Build') { ...
Jenkins监听gitlab的提交并执行流水线
结合Gitlab Plugin的方式监听gitlab操作第一步(gitlab)创建gitlab的访问令牌 第二步 (Jenkins)Jenkins安装gitlab/gitlab hook插件 安装gitlab 和gitlab hook,gitlab hook的作用是可以接收gitlab hook传过来的参数 这里注意:新版jenkins中不再支持gitlab hook插件,如果插件管理中没看到gitlab hook,可以换成Generic Webhook Trigger,下文中有介绍 第三步(Jenkins)配置gitlab的凭证 第四步(Jenkins) 配置gitlab的连接 第五步(Jenkins)创建jenkins构建项目 第六步(gitlab)配置Hook 允许hook和服务访问本地网络 新版的gitlab为了安全默认禁止了本地局域网地址调用web hook 我们在设置里允许就行,具体步骤如下: 第七步 测试触发1234touch 1.txtgit add .git commit -m "测试自动触发jenkins"...
