kafka集群部署
准备
kafka集群 3台服务器
Zookeeper集群 3台服务器
ZooKeeper简介ZooKeeper是一个开源的分布式应用程序协调服务,是Google的Chubby一个开源的实现。ZooKeeper为分布式应用提供一致性服务,提供的功能包括:分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)、分布式锁(Distributed Lock)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。
ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。
Kafka部署Kafka节点配置123456789#创建并进入下载目录mkdir /home/downloadscd /home/downloads#下载安装包wget http://mirrors.tuna.tsinghua.edu.cn/apa ...
Kibana 创建索引forbidden
今天使用Kibana查询索引,发现无法查询到最新日志。同时创建索引时,提示forbidden。
初步怀疑是服务没有成功写入日志,测试发现该项排除
后排查发现Elasticsearch状态为yellow,但解决该问题后,任然无法创建。
后发现kibana自动将index变成了只读状态,最终解决了该问题
磁盘超85%发现kibana索引创建失败,首先查询了集群状态
1curl -XGET 'http://localhost:9200/_cluster/health?pretty=true'
发现状态为yellow,排查,发现是磁盘已经超过85%
解决方案删除部分索引,检查磁盘,已经低于85%,但任然是yellow状态,
Index状态unsigned1234# 分片状态查看curl -XGET 'http://localhost:9200/_cat/shards?v'# 查看unsigned 的原因curl -XGET 'http://localhost:9200//_cluster/allocation/explain'
...
Redis集群迁移
公司使用自己搭建的redis集群。考虑到易于维护、成本等因素,考虑将redis迁移到阿里云。总结redis使用经验
查询原redis内存用量12345678集群信息cluster info集群节点cluster nodes查看内存等info
使用脚本查询, 源码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192#!/bin/bashREDIS_CLI=${REDIS_CLI:-redis-cli}REDIS_IP=${REDIS_IP:-127.0.0.1}REDIS_PORT=${REDIS_PORT:-6379}function usage(){ echo "Usage: `basename $0` ...
相机标定
最近公司标定程序出现了一些问题,为了排查。学习了相机标定的原理。查询相关资料,分享如下:
原文 计算机视觉基础——相机标定
在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,必须建立相机成像的几何模型,这些几何模型参数就是相机参数。
进行摄像机标定的目的:求出相机的内、外参数,以及畸变参数。
标定相机后通常是想做两件事:一个是由于每个镜头的畸变程度各不相同,通过相机标定可以校正这种镜头畸变矫正畸变,生成矫正后的图像;另一个是根据获得的图像重构三维场景。
1.1 浅谈标定首先谈谈相机为什么需要标定?任何理论物理模型都是在特定假设上对真实事物的近似,然而在实际应用中存在误差,普通相机的成像模型也不例外(透视投影)。实际中,普通相机成像误差的主要来源有两部分,第一是sensor制造产生的误差,比如sensor成像单元不是正方形,sensor歪斜;第二是镜头制造和安装产生的误差,镜头一般存在非线性的径向畸变;镜头与相机sensor安装不平行,还会产生切向畸变。
1.2透视投影模型普通相机的成像模型一采用小孔成像,初中的物理知识告诉我们,没 ...
gitlab-ci持续集成
持续集成(Continuous Integration, CI)的基本概念概述在传统软件的开发中,代码的集成工作通常是在所有人都将工作完成后在项目即将结束进行时,而这往往会花费大量的时间和精力。而持续集成是一种将集成阶段放在软件开发阶段的做法,以便更加有规律地构建,测试和集成代码。
“持续集成并不能消除 Bug,而是让它们非常容易发现和改正。”
持续集成可以在开发人员提交了新代码后,立刻进行构建、单元测试。从而我们可以根据测试结果以确定新的代码或者环境配置与原来的以及其他开发人员的代码或者环境配置能否正确地集成在一起。
持续交付 & 持续部署#
持续交付(Continuous Delivery):频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。
持续部署(Continuous Deployment):是持续交付的下一步,指的是代码评审以后,自动部署到生产环境。
GitLab 持续集成起步.gitlab-ci.yml.gtilab-ci.yml文件存放与项目于仓库的根目录,用以来定义 GitLab CI/CD 中的 Pi ...
二叉树遍历
二叉树的遍历二叉树的遍历,主要有四种方式
先序遍历
中序遍历
后序遍历
层序遍历
实现方式有两种
递归实现
迭代实现
先序遍历前序遍历的顺序是 根节点-左子树-右子树 。意思是从根节点开始,要一直访问左子树,直到没有左孩子,然后访问右子树。
中序遍历中序遍历的过程是 左子树-根节点-右子树
后序遍历后序遍历的过程就是 左子树-右子树-根节点
源码准备一个二叉树
1234567 1 / \ 2 3 / \ / \4 5 6 7 / \ 8 9
推理出,理论输出:
1234前序输出: 1 2 4 5 3 6 8 9 7中序输出: 4 2 5 1 8 6 9 3 7后序输出: 4 5 2 8 9 6 7 3 1层序输出: 1 2 3 4 5 6 7 8 9
下面是源码实现,有两种实现方式
递归方式
迭代方式
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 ...
golang操作Elasticsearch
go操作Elasticsearch主要有以下两个sdk
github.com/olivere/elastic 第三方开发,各个版本都有对应的sdk,文档也丰富
github.com/elastic/go-elasticsearch
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561 ...
envsubst命令, 并实现docker下nginx动态配置
使用1234# 添加环境变量export myname=pangxieke# 查看env | grep myname
使用
123echo $myname# 注意单引号包裹的时候代表是字符串echo "$myname"
通过envsubst用环境变量替换掉了字符串$myname
1echo '$myname' | envsubst
进阶使用新建一个测试文件echo '我的名字=$myname' > one
将one文件的内容输入到envsubst envsubst '$myname' < one
将内容输出到two文件中envsubst '$myname' < one > two, 查看cat two
常见应用新建.env文件
1echo "PORT=9998" > .env
创建中间文件, source.template 方便查看并将defalut.conf置空
cp defalut.conf source.template 注意这里中间文 ...
Golang 源码剖析,log 标准库
日志输出12018/09/28 20:03:08 EDDYCJY Blog...
构成[日期]<空格>[时分秒]<空格>[内容]<\n>
源码剖析Logger1234567type Logger struct { mu sync.Mutex prefix string flag int out io.Writer buf []byte}
mu:互斥锁,用于确保原子的写入
prefix:每行需写入的日志前缀内容
flag:设置日志辅助信息(时间、文件名、行号)的写入。可选如下标识位:
123456789const ( Ldate = 1 << iota // value: 1 Ltime // value: 2 Lmicroseconds // value: 4 Llongfile // value: 8 Lshortfile ...
gitbook介绍及使用
gitbook 介绍gitbook网站是一个简单的个人在线书籍网站,在这里可以把自己的文档整理成书籍发布出来,便于阅读。gitbook网站:https://legacy.gitbook.com/
可以使用gitbook工具,来制作精美的电子书,然后部署到自己的网站上(或在github托管)。
本文主要介绍gitbook工具
基本操作1234567891011# Installnpm install -g gitbook-cli# initgitbook init# servegitbook serve# buildgitbook build
部署通过docker部署一个nginx
123456789web: image: nginx:1.20 privileged: true volumes: - ./conf.d:/etc/nginx/conf.d - ./www/_book:/data/www/_book - /data/logs/nginx:/data/logs/nginx ports: - "80:80"
将gitbook中文档 ...