Toolkit
一个小工具包, 暂时还有很多功能需要扩展.
特征
Mybatis
通过侧栏箭头在 MyBatis XML文件和 Mapper文件之间相互跳转
mapper文件id简单检查
Json
JavaBean复制为Json字符串
Json字符串格式化
Json字符串转换为JavaBean
Json压缩
XML: Xml格式化
演示
文末演示
安装
在线安装:
File -> Setting -> Plugins -> 搜索 Toolkit
手动安装:
下载插件 -> File -> Setting -> Plugins -> Install Plugin from Disk...
使用
右键菜单选择 Tookit
更新
v1.0.7 (2020-02-27)
修改使用包装类型
查看更多历史更新记录
感谢
MyBatis:
mybatis support: https://github.com/zhaoqin102/mybatis-support
free-idea-mybatis: ...
cat API
官方地址
GET /_cat/XXX?v
GET /_cat/XXX?v&format=json
v 是指带着列信息
支持指定返回内容的格式 默认为text
?format=text(json/smile/yaml/cbor)
查看节点别名
GET /_cat/aliases?v
curl -X GET “192.168.xxx.xxx:9200/_cat/aliases?v”
每个节点分配了几个shard,对磁盘的占用空间大小,使用率
GET /_cat/allocation?v
curl -X GET “192.168.xxx.xxx:9200/_cat/allocation?v”
群集或单个索引的document计数
GET /_cat/count?v
curl -X GET "192.168.xxx.xxx:9200/_cat/count?v
GET /_cat/count/index_name?v
curl -X GET “192.168.xxx.xxx:9200/_cat/count/index_name?v”
显示集群中 ...
elasticsearch集群
graph LR;
A(Master Node) --- B(Data Node);
A --- C(Data Node);
B --- C;
Master: 在Elasticsearch中Master仅仅负责维护集群的状态
创建或删除索引
跟踪哪些节点是集群的一部分
决定将哪些碎片分配给哪个节点
等集群范围的操作
上面的一些集群信息, 是由Master节点进行维护, 但是 Master也会把节点信息, 同步给其他节点, 但是只有master节点可以修改.
点击查看Elasticsearch节点介绍
为什么要至少三个节点
首先查看 Elasticsearch 的配置文件, 如下:
Zen Discovery 官方介绍
12345678910# 传递初始主机列表,以便在启动新节点时执行发现discovery.zen.ping.unicast.hosts: ["192.168.xxx.xxx:9300", "192.168.xxx.xxx:9300"]# 选举Maste时需要的节点数 ...
简单流程
客户端随机选择一个node发送数据, 此时该node为协调节点(coordinating node)
1.1. coordinating node 通过 _id计算出该document在哪个shard上, 假设为shard0, 计算方式如下:
hash(_id) % number_of_primary_shards
1.2. node 根据 cluster state 获取到 shard0 在 node1 上
将消息发送到 node1 的 P0 上
P0 收到数据后, 将数据同步到 自己的 replica shard R0上
P0 和 R0 都处理完毕, 才会返回客户端成功
Px 为 primary shard
Rx 为 replica shard
当客户端请求为查询时, 路由到任意 shard(primary shard 或者 replica shard) 查询到数据即可返回.
详细流程
P0收到document, 同时将数据写入到 内存buffer和translog中
每隔1s或buffer满时, buffer中的数据会 refresh 到se ...
问题描述
graph LR;
filebeat --> logstash;
log4j --> logstash;
logstash --> es;
filebeat 和 log4j appender 同时到 kafka, logstash在启动时报错, 错误如下:
1javax.management.InstanceAlreadyExistsException: kafka.consumer:type=app-info,id=logstash-0
问题原因及解决
input 消费kafka时, 分别指定不同的 client_id.
123456789101112131415161718192021kafka { bootstrap_servers => ["192.168.103.43:9092"] # 注意这里配置的kafka的broker地址不是zk的地址 client_id => "kafka_client_1" group_id => &qu ...
问题描述
程序执行到某一处之后停顿, 不能继续执行, 不抛出异常, 无返回值
本地测试正常
debug可以正常执行
操作为入库之前, 创建对象, 是一个很简单的set操作
payInfoExtra.setToAccType(agPayReqDto.getToAccType().getValue());
其中get操作获取的为一个枚举, 主要操作为从枚举中获取value set到另一个对象中
123public AccTypeEnum getToAccType() { return toAccType;}
问题原因及解决
小伙伴在他们项目中复用本项目中的枚举类, 没有修改包名类名, 但是把枚举中value字段从 byte改成了String, 同时放在了依赖中, 提供给我们使用.
解决方案就很简单了, 让小伙伴修改包名类名就可以了.
原枚举类如下:
12345678public enum AccTypeEnum { PRI((byte) 0, "对私"), PUB((byte) 1, "对公" ...
skywalking
未读准备环境
skywalking-5.0.0-GA
zookeeper-3.4.10
elasticsearch-5.6.14
下载地址如下:
skywalking: http://skywalking.apache.org/downloads/
zookeeper: http://mirrors.hust.edu.cn/apache/zookeeper/
elasticsearch: https://www.elastic.co/downloads/past-releases
安装zk集群
下载并解压zk
12wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gztar -xvf zookeeper-3.4.10.tar.gz
修改配置文件
123cd zookeeper-3.4.10/conf/cp zoo_sample.cfg zoo.cfgvim zoo.cfg
内容如下
1234567tickTime=2000initLimit=10s ...
issue
未读问题说明
原始配置:
12345678910elasticsearch { # manage_template => false template_overwrite => true template => "/opt/export/app/logstash-6.4.2/bin/dynamic_templates.json" user => xxxxxxx password => xxxxxxx index => "%{sys_name}-%{+YYYY.MM.dd}" hosts => ["172.19.3.51:9200","172.19.3.52:9200"]}
在使用logstash输出内容要es中时, 指定index为系统名称+时间(年月日), 时间会自动匹配’@timestamp’字段并格式化, 但 ...
介绍
因为业务需求新项目的流水号系统从 ‘数据库自增步长+分段式锁’ 换成使用 雪花流水号, 修改机器标识和数据中心字段为自动获取ip后三位, 人工保证ip后三位不相同
示例
雪花流水号 - 改造版
修改内容如下:
删除构造, 修改数据位数, 添加静态代码块
1234567891011private final static long MACHINE_BIT = 8;private final static long DATA_CENTER_BIT = 2;static { try { InetAddress localHost = InetAddress.getLocalHost(); address = localHost.getAddress()[3] & 0xff; System.out.println("当前系统的 address 为: " + address); } catch (UnknownHostException e) { thr ...
LRU缓存淘汰
LRU缓存淘汰是redis中的一种淘汰策略, 当内存大小不足以存放数据时, 此时存入新数据, 将删除较早存入的数据.
在dubbo中使用LRU来缓存 hostName.
在mysql中使用LRU来缓存 serverSideStatementCheckCache 和 serverSideStatementCache.
代码实现
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116package com.ipaynow.tool.lru;import java.util.LinkedHashMap;import java.util.Map;import ...
elasticsearch启动命令
12345# 前台启动 关闭窗口连接后自动退出./bin/elasticsearch# 后台启动./bin/elasticsearch -d
logstash启动命令
12345# 前台启动 -f 后面为配置文件./logstash -f logstash.conf# 后台启动nohup ./logstash -f logstash.conf &
kibana启动命令
12345# 前台启动./bin/kibana# 后台启动./bin/kibana &
kibana停止命令
当ps -ef | grep kibana 查不到时 可以
lsof -i:5601
kill -9 线程
filebeat启动命令
123456# 前台启动./filebeat -e -c filebeat.yml# 后台启动 不输出日志/输出日志nohup ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &nohup ./filebeat -e -c filebeat.yml > ...
search-guard 配置用户
路径: /opt/export/app/elasticsearch-6.4.2/plugins/search-guard-6/sgconfig
生成密码
执行以下命令, 输入明文
1plugins/search-guard-6/tools/hasher.sh -p mycleartextpassword
1. 配置用户及密码
文件: sg_internal_users.yml
1234zhangsan: hash: $2y$12$yKXk785zSTtB3kE7g.XnbOPrc690g9JE50Znwum924i2M/xYGG4qq roles: - trans_group
格式:
1234姓名: 密码: XXXX(明文的hash, 使用search-guard的工具生成) 角色: - 角色名称
2. 配置权限
文件: sg_roles.xml
配置’?kibana’ 及’?kibana-6’ 权限是为了保证用户在kibana中能够正常使用kibana
1234567891011121314151617181920212223 ...