- 博客(85)
- 资源 (6)
- 收藏
- 关注
原创 缓存更新的策略
缓存更新的策略 1、先淘汰缓存,再更新数据库 public void updateData1(DataObject dataObject) { //第一步,淘汰缓存 deleteFromCache(dataObject.getId()); //第二步,操作数据库 updateFromDB(dataObject);...
2020-04-12 10:01:59
2189
原创 通过联合索引优化MYSQL慢查询
通过联合索引优化MYSQL慢查询一、慢SQL分析慢SQL如下SELECT SUM(t.amount) as amount FROM (SELECT game_id,room_id,is_robot,amount,record_time FROM t_statements_logs WHERE game_id = 30 AND is_robot = 0 ORDER BY record_time...
2020-04-09 14:49:24
1830
原创 Redis中删除过期Key的三种策略
Redis中删除过期Key的三种策略Redis对于过期键有三种清除策略:被动删除:当读/写一个已经过期的key时,会触发惰性删除策略,直接删除掉这个过期key主动删除:由于惰性删除策略无法保证冷数据被及时删掉,所以Redis会定期主动淘汰一批已过期的key当前已用内存超过maxmemory限定时,触发主动清理策略被动删除只有key被操作时(如GET),REDIS才会被动检查该key...
2020-04-03 15:42:40
1997
原创 Redisson分布式锁的源码分析
Redisson分布式锁的源码分析Redisson 分布式锁实现思路锁标识:Hash 数据结构,key 为锁的名字,filed 当前竞争锁成功线程的唯一标识,value 重入次数队列:所有竞争锁失败的线程,会订阅当前锁的解锁事件,利用 Semaphore 实现线程的挂起和唤醒源码分析基于redisson3.11.5版本加锁流程图解锁核心源码:tryLockInnerAsync ...
2020-04-02 14:41:45
1704
原创 SpringBoot项目配置JSON日志格式输出
SpringBoot项目配置JSON日志格式输出采用logstash-logback-encoder来实现JSON日志输出引入依赖implementation 'net.logstash.logback:logstash-logback-encoder:5.0'compileOnly 'org.projectlombok:lombok'compile group: 'org.codeha...
2020-04-02 10:17:16
4416
原创 redis事务是否支持原子性
redis事务是否支持原子性ACID 中关于原子性的定义:原子性:一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。redis事务测试127.0.0.1:6379> multiOK127.0....
2020-04-01 10:22:43
3116
原创 Redis实现分布式锁进化
Redis实现分布式锁进化1、SetNXtryLock(){ SETNX $key $value}release(){ DELETE $key}如果业务执行因为某些原因意外退出了,导致创建了锁但是没有删除锁,那么这个锁将一直存在2、SetNX + SetExtryLock(){ SETNX $key $value EXPIRE $key Seconds}rele...
2020-03-31 17:26:16
1588
原创 redisson分布式锁并发测试
redisson分布式锁并发测试模拟秒杀抢购场景,100库存,用jmeter并发测试,起300个线程并发请求2次,总计600个请求数,最后查看库存是否为负数,证明分布式锁是否锁住了库存。注意:分布式锁并不是实现秒杀最佳方式,本文只是侧重说明分布式锁一、编写相关代码1、添加依赖项dependencies { compile 'org.springframework.boot:spr...
2020-03-30 17:57:25
2815
2
原创 使用bind转发consul DNS服务
使用bind转发consul DNS服务1、安装bindyum install bind bind-utils -y2、配置name服务做解析vim /etc/named.confoptions { listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; direc...
2020-03-27 11:33:40
1902
原创 consul DNS+ dnsmasq实现域名解析配置
consul DNS+ dnsmasq实现域名解析配置dnsmasq简介Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。作为DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网ip地址和提供路由。DNS和DHCP两个功能可以同时或分别单独实现。dnsmasq轻量且易配置,适...
2020-03-27 10:58:35
4031
原创 consul各端口作用分析
consul各端口作用分析consul服务端启动时会监听5个端口,如下图:这5个端口的作用:8300:集群内数据的读写和复制8301:单个数据中心gossip协议通讯8302:跨数据中心gossip协议通讯8500:提供获取服务列表、注册服务、注销服务等HTTP接口;提供UI服务8600:采用DNS协议提供服务发现功能...
2020-03-26 16:13:00
9841
原创 SpringBoot中自定义consul的instance-id
SpringBoot中自定义consul的instance-idapplication.ymlspring: cloud: consul: discovery: instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}...
2020-03-26 16:09:52
2059
原创 consul通过DNS协议查找服务
consul通过DNS协议查找服务1、centos默认没有dig命令,dig命令属于bind-utils工具包,安装这个包之后就可以使用dig命令了。yum -y install bind-utils2、使用DNS API来获取A记录ip地址对于DNS API,服务的DNS名称是 NAME.service.consul 。默认所有的DNS名称都是在 consul 名称空间下,当然这个是可...
2020-03-26 11:15:05
3089
原创 Dapper--Google生产环境下的分布式跟踪系统
Dapper--Google生产环境下的分布式跟踪系统概述当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。Dapper--Google生产环境下的分...
2020-03-12 15:52:24
3411
原创 Consul 删除无效的服务
REST接口删除http://127.0.0.1:8500/v1/agent/service/deregister/service2-8080命令删除consul services deregister -id=service2-8080service2-8080为服务名称
2020-03-12 15:50:27
1768
原创 elasticsearch服务器CPU100%分析
elasticsearch服务器CPU100%分析1、通过top命令查询占用CPU高的进程ID2、查询是哪些线程占用比较高top -Hp 28354H代表显示线程信息p用来指定进程id发现线程31342、28478等占用比较多的CPU资源3、将十进制pid转换为十六进制的pidprintf “0x%x” 284784、查询具体的线程信息jstack -l 2835...
2020-03-12 15:44:55
7044
原创 JAVA常见内存溢出模拟
JAVA常见内存溢出模拟1、堆溢出import java.util.ArrayList;import java.util.List;/** * 堆溢出 * -Xms20m -Xmx20m -XX:+HeapDumpOnOutOfMemoryError * java.lang.OutOfMemoryError: Java heap space * Created by double...
2020-03-11 14:31:21
1562
原创 elasticsearch6.3.1中x-pack插件启用
elasticsearch6.3.1中x-pack插件启用elasticsearch版本6.3.1一、启用pack1、重写license验证源码重写x-pack下的2个类:LicenseVerifier.java和XPackBuild.java,反编译jar丁创建目录testmkdir testcd testvim LicenseVerifier.java跳过校验部分,直接返回...
2020-03-11 14:16:00
1368
原创 死锁模拟(JAVA)
死锁模拟(JAVA)/** * Created by double on 2019/7/29. */public class DeadLockDemo { private final Object lock1 = new Object(); private final Object lock2 = new Object(); void method1() { ...
2020-03-11 14:12:16
1086
原创 单例模式的几种实现方式(JAVA)
单例模式的几种实现方式(JAVA)概括起来,要实现一个单例,我们需要关注的点无外乎下面几个:构造函数需要是 private 访问权限的,这样才能避免外部通过 new 创建实例;考虑对象创建时的线程安全问题;考虑是否支持延迟加载;考虑 getInstance() 性能是否高(是否加锁)。1、饿汉式饿汉式的实现方式比较简单。在类加载的时候,instance 静态实例就已经创建并初始化好...
2020-03-11 11:28:40
1427
原创 java实现整形数字反转
java实现整形数字反转/** * 整形数字反转 * Created by double on 2019/9/3. */public class NumberReverse { public static void main(String[] args) { int num = 123123412; long reversedNum = 0; ...
2020-03-11 10:30:04
1255
原创 kafka-manager安装
kafka-manager安装1、下载安装链接: https://pan.baidu.com/s/1hmoD0uSNH4XvwZuNc3TMtA提取码: 17rvcd /opt/serverunzip kafka-manager-2.0.0.0.zip mv kafka-manager-2.0.0.0 kafka-managercd kafka-manager2、配置cd /o...
2020-03-10 17:15:22
1022
原创 elasticsearch-head安装
elasticsearch-head安装Node.js环境安装head插件要求Node.js环境,并且Node.js的版本 大于等于 6.0。下载 Node.js 12.13.0 版本。下载地址:https://nodejs.org/en/download/配置nodejs环境变量vim /etc/profileexport NODE_HOME=/home/tom/data/node-...
2020-03-10 17:11:41
1048
原创 zipkin server部署
zipkin server部署1 、创建相关目录mkdir -p /opt/server/zipkinmkdir -p /data/logs2、安装jdk1.8https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.htmlrpm -ivh jdk-8u231-linux...
2020-03-10 17:07:07
1430
原创 ELK采集nginx错误日志
ELK采集nginx错误日志一、filebeat采集配置1、在nginx服务器上安装filebeatwget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.3.1-x86_64.rpmyum localinstall filebeat-6.3.1-x86_64.rpm2、配置filebeat采集文件v...
2020-03-10 17:01:25
1494
原创 ELK + Grafana分析nginx日志
ELK + Grafana分析nginx日志一、采集nginx json格式日志1、配置nginx日志输出格式 log_format json '{"@timestamp":"$time_iso8601",' '"@source":"$server_addr",' '"hostname":"$hostname"...
2020-01-06 16:41:18
3229
原创 redis数据迁移工具redis-migrate-tool安装使用
Redis-Migrate-Tool 使用详解Redis 集群迁移工具,基于redis复制,快速,稳定。github链接:https://github.com/vipshop/redis-migrate-tool特点:快速。多线程。基于redis复制。实时迁移。迁移过程中,源集群不影响对外提供服务。异构迁移。支持Twemproxy集群,redis cluster集群,rdb文...
2020-01-06 16:36:06
1786
原创 定时清理elasticsearch中的历史数据
定时清理elasticsearch中的历史数据创建清理脚本创建脚本目录mkdir -p /opt/server/cron创建脚本vim delete_elasticsearch_data.sh#!/bin/bashmydate=$(date -d "-30 day" +"%Y-%m-%d")curl -XDELETE "http://localhost:9200/...
2020-01-06 16:35:15
4618
原创 redis 告警参数优化
redis 告警参数优化针对redis服务器TCP backlog、overcommit_memory、THP三个参数优化的说明操作系统:CentOS Linux release 7.6.1810 (Core)一、TCP backlog1、告警信息WARNING: The TCP backlog setting of 511 cannot be enforced because /pro...
2019-12-31 15:25:46
1136
原创 分布式环境下的日志处理架构(ELK)
分布式环境下的日志处理架构(ELK)一、整体架构设计filebeat: 负责日志采集,采集的日志包括服务日志、中间件日志等kafka:负责数据缓存logstash: 消费kafka的日志,经过过滤后存储到elasticsearchelasticsearch: 负责日志存储kibana: 负责日志展示二. 此架构使用的软件及版本如下:(1) filebeat-6.3.1-l...
2019-12-19 14:57:30
1207
1
原创 logstash配置
logstash配置logstash消费kafka日志,过滤后发送到elasticsearch存储日志包括:Java服务日志、redis日志、consul日志、配置中心apollo日志添加定制正则进入logstash安装目录,创建正则目录patternscd /opt/server/logstashmkdir patternsgrok配置grok的编写配置虽然不难,但是很容易出...
2019-12-19 14:08:44
868
原创 redis4.0.14集群搭建
redis集群搭建介绍完Redis集群分区规则之后,下面我们开始搭建Redis集群。搭建集 群工作需要以下三个步骤:1)准备节点。2)节点握手。3)分配槽。redis版本:4.0.14准备节点Redis集群一般由多个节点组成,节点数量至少为6个才能保证组成完整 高可用的集群。每个节点需要开启配置cluster-enabled yes,让Redis运行在集 群模式下。建议为集群内所有节...
2019-12-13 10:50:28
1711
原创 kafka集群安装
一、安装环境1、服务器准备:kafka1:172.20.67.52kafka2:172.20.67.56kafka3:172.20.67.57修改hostname依次为:kafka1、kafka2、kafka3配置hostname172.20.67.52 kafka1172.20.67.56 kafka2172.20.67.57 kafka32、zoo...
2019-12-12 18:48:57
908
原创 elasticsearch安装
1、安装JDK rpm -ivh jdk-8u231-linux-x64.rpm2、创建相关安装目录mkdir -p /opt/server/elasticsearchmkdir -p /data/elasticsearch/datamkdir -p /data/elasticsearch/logs3、下载安装包cd /opt/server/unzip elasticsearc...
2019-12-12 18:04:16
838
原创 kibana安装
1、kibana简介Kibana是一个为Elasticsearch平台分析和可视化的开源平台,使用Kibana能够搜索、展示存储在Elasticsearch中的索引数据。使用它可以很方便用图表、表格、地图展示和分析数据。Kibana能够轻松处理大量数据,通过浏览器接口能够轻松的创建和分享仪表盘,通过改变Elasticsearch查询时间,可以完成动态仪表盘。本文只介绍Kibana在linux...
2019-12-12 17:52:15
820
原创 Gradle自定义插件编写
Gradle 简介Gradle是一个基于JVM的构建工具,它提供了:像Ant一样,通用灵活的构建工具可以切换的,基于约定的构建框架强大的多工程构建支持基于Apache Ivy的强大的依赖管理支持maven, Ivy仓库支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件。对Ant的任务做了很好的集成基于Groovy,build脚本使用Groovy编写...
2019-12-11 17:53:13
2252
原创 apollo集群部署
apollo集群部署1. 准备工作1.1. 服务器准备(配置根据情况调整)准备好安装apollo的三台服务器配置4CPU,4G内存,20GB硬盘假设三台服务器IP为172.16.10.208172.16.10.209172.16.10.210修改相应hostnameapollo-1apollo-2apollo-31.2. 安装jdk1.8rpm -ivh jdk-8u...
2019-12-11 17:26:11
1637
原创 logstash安装
logstash安装从kafka接收数据,并发送到ElasticSearch采集数据有java应用程序日志、consul日志1. 安装jdk1.8rpm -ivh jdk-8u231-linux-x64.rpm[root@logstash patterns]# java -versionjava version "1.8.0_231"Java(TM) SE Runtime En...
2019-12-11 17:08:27
971
原创 安装filebeat
安装filebeatlinux安装filebeat采集consul日志,并发送到kafka1. 创建安装目录mkdir -p /opt/servermkdir -p /data/logs2. 下载安装包并解压tar -zxvf filebeat-6.3.1-linux-x86_64.tar.gz3. 重命名文件夹为filebeatmv filebeat-6.3.1-li...
2019-12-11 17:00:30
1545
原创 Consul client端安装
##Consul client端安装1. 创建相应的目录mkdir -p /data/logsmkdir -p /data/consul_data2. 下载安装包unzip consul_1.6.1_linux_amd64.zipcp consul /usr/local/bin/3. client模式启动consul,并加入集群nohup consul agent -data...
2019-12-11 16:44:35
2083
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅