摘要:
背景 在测试环境上遇到一个诡异的问题,某些业务场景需要记录操作日志,有段时间发现记录的数据会被覆盖,例如当前用户的操作记录会被其他用户覆盖;这个现象是每次重启服务后一小段时间内就正常,但随后的时间都是被覆盖的 问题产生原因 在线程池内部使用了InheritableThreadLocal存放用户登录信 阅读全文
摘要:
前言 之前某段时间在研究分布式事务过程中,对实现原理比较感兴趣,于是去Gitee上找了几个人气比较高的分布式事务框架进行学习;其中印象深刻的有Litx,主要是因为Litx源码不多,且都是基于Spring底层和Dubbo实现,所以理解起来比较容易,索性对这个框架分析过长进行总结如下 概念 litx(h 阅读全文
摘要:
1.Nginx 1.拉取镜像 注意:不带版本默认会下载docker仓库里面最新的版本 docker pull nginx #下载最新版 镜像名:版本名(标签) docker pull nginx:1.20.1 #删除对应的镜像 docker rmi 镜像名:版本号/镜像id 如上下载完成后通过 do 阅读全文
摘要:
背景: 看过很多策略模式,总结下来实现原理大体都差不多,在这里主要是讲解下自己基于Spring更优雅的实现方案;这个方案主要是看了一些开源rpc和Spring相关源码后的一些思路,所以在此进行总结 策略模式基本概念 一个接口或者抽象类,里面两个方法(一个方法匹配类型,一个可替换的逻辑实现方法) 不同 阅读全文
摘要:
前言 前段时间面试,经常遇到面试官在结束的时候问我看过什么开源源码?然后网上对于看源码这块的说法也有各种不同的意见,我进行了总结如下: 不看源码说法: 平常的工作需求、业务忙的一批,哪有时间空下来看源码 看源码只是为了面试,也就是应付那句话:面试造火箭、入职拧螺丝 浪费时间,又不是做框架组件研发的大 阅读全文
摘要:
背景 最近负责的项目,需要新对接一个第三方api,在对接编码过程中肯定少不了日志的输出,避免上了生产环境出问题排查困难, 由于这个项目已经在线上运作了有2-3年了,各种业务、非业务、框架等日志都集中在一个文件,查看了下生产环境的最近几天日志文件,发现一天的日志接近2个G,如果需要精确去查看新对接的第 阅读全文
摘要:
背景 我们项目中现有日志系统,采用的是slf4j+logback这套日志组件,也是Java生态里面比较常用的一个日志组件,但是随着分布式的演进,这套组件明显存在以下几个问题: 1.各种无关日志穿行其中,导致我们可能无法直接定位整个操作流程。因此,我们可能需要对一个用户的操作流程进行归类标记,既在其日 阅读全文
摘要:
背景: 有个spring cloud 架构的项目需要调用php小组的api接口,但php提供的接口入参大部分是下划线命名,而Java这边的实体类是按照驼峰编写,如果使用Fegin调用会导致php无法接收参数,例如userId传过去后,由于php那边是user_id,这样php接口无法识别,所以针对这 阅读全文
摘要:
前言 之前参与的新开发者平台研发的过程中,由于不同的接口需要对不同的入参进行校验,这就涉及到通用参数的校验封装,如果不进行封装,那么写出来的校验代码将会风格不统一、校验工具类不一致、维护风险高等其它因素,于是我对其公共的校验做了一个封装,达到了通过注解的方式即可实现参数统一校验。 遇到的问题 在封装 阅读全文
摘要:
背景 之前做的一个关于报表的项目,大部分场景是查询下游ES订单中心然后进行分析和计算,这块涉及到的业务比较复杂非常耗时;复杂体现在需要对数据进行各种逻辑运算,耗时体现在ES查询有限制并发。 经常收到JVM峰值告警邮件,于是对其进行分析得到基础数据每天凌晨更新一次,但查询和计算其实在第一次之后就可以写 阅读全文
摘要:
背景 最近在工作中使用到了Spring自带的@Async,主要是为了把其中耗时多、响应慢、计算复杂的业务抽出来查询。从代码设计上看Spring自带的比传统线程池提交在代码层次上看起来优雅简洁了不少,无需显示去申明线程池相关代码, 在方法上加注解既可异步返回结果。空闲时间大概看了下原理,其实就是代理模 阅读全文
摘要:
背景: 前几天有运营部门人员反应派发红包很慢,经常出现504或者无响应,于是由我这边进行一个优化后,发放速度由原来的超时或者1分钟变为几秒。 发放流程: 活动后台导入一个xls表格,大概2W左右条,经过后台的筛选处理等逻辑后会循环调用插入数据库的代码。 优化过程: 分析慢的原因: 1. 发放的时候循 阅读全文
摘要:
背景 最近项目有很多业务场景涉及到先查DB,DB没数据则再查Redis,并且类似的业务重复性的代码比较多,为了方便后期的维护,打算基于这个场景写一套通用的查询和转换方案。 项目是采用Spring Boot框架搭建的,我主要实现的思想是基于责任链的模式,大致流程是自定义一个@Redis注解在服务层,当 阅读全文
摘要:
背景 更加理解熟悉抽象类在我们实际开发过程中的具体使用场景,以及使用抽象类能给我们开发过程中带来哪些好处 设计流程: 大致流程是从Service层获取数据,先经过Redis,如果Redis没有数据再去查询db,最后把数据塞回到Redis,看似很简单的一个步骤,实际可以写出不同风格的方式。一般来说首先 阅读全文
摘要:
之前发过一篇因为接口规范的问题导致其它端出现服务不可用的文章(http://www.cnblogs.com/zdd-java/p/8612763.html),然而最近在查阅了dubbo官方指南文档才知道其实可以通过多版本号解决前面那个问题,经过自己在本地测试后总结如下。 官方原内容如下: 当一个接口 阅读全文
摘要:
背景 单体项目拆分为SOA分布式架构后,关于接口层的定义规范尤其重要。今天就总结一下关于一次不规范的定义接口导致的问题。 首先我目前从事的项目架构大致是下图这样的(借鉴58沈剑的图): 主技术栈:dubbo+spring boot;其中我们内部的wap、app、pc都有相似的业务,例如user-se 阅读全文
摘要:
前言: 最近接手了一个项目,大概过了下需求,然后打开项目准备开搞的时候发现一个问题,这个项目是提供rest服务的一个web项目,其中很多旧系统由于还没改成微服务,所以只能通过HttpClient发起调用。之前的开发人员为了监控每个方法的执行时间,在方法开始和结束写了很多logger.info("耗时 阅读全文
摘要:
前言:关于分布式事务话题一直是颇有争议的话题,在本文中通过ActiveMq 实现分布式事务做一个简单的demo;同时也让自己能在实践中可以获取经验和对分布式事务自己的一些思考。 1.本地事务 我们通常只需借助开发平台中特有数据访问技术和框架(例如Spring、JDBC、ADO.NET),结合关系型数 阅读全文
摘要:
关于AbstractRoutingDataSource动态切换数据源是我在研究某开源项目时候才注意到的,大概就看懂了Spring AOP切面这里,根据作者的意思是通过继承这个抽象类可以实现数据源的动态切换,也就是Controller调用Service的时候会切换数据源。最终研究了一天也没发现什么结果 阅读全文
摘要:
前言: 公司的项目刚开始采用spring cache作为缓存数据,到后面发现扩展性不灵活,于是基于sprig cache原理自定义一套规则用于缓存数据。 请求过程: 根据请求参数生成Key,后面我们会对生成Key的规则,进一步说明; 根据Key去缓存服务器中取数据,如果取到数据,则返回数据,如果没有 阅读全文
摘要:
通过yaml文件创建podkubectl create -f pod.yaml停止podkubectl delete pod <pod-name>查看pod日志kubectl logs <pod-name>实时查看pod日志kubectl logs -f <pod-name>进入pod容器kubec 阅读全文
摘要:
搭建教程参考如下 https://blog.csdn.net/forest_long/article/details/129665163?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Ede 阅读全文
摘要:
原文: https://www.cnblogs.com/xiao987334176/p/9930517.html 一、介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。随着发展,越来越多公司和组织接受采用 阅读全文
摘要:
这套部署版本是单机Linux操作系统下最快速的搭建方法,只需要简单的2个Docker命令即可完成 1.启动三主三从 docker run -d --name redis-node-1 --net host --privileged=true -v /usr/local/docker/redis/sh 阅读全文
摘要:
前言 需要提前准备的条件 Maven环境 Docker环境 JDK环境(Centos7.4自带JDK环境去除,重装的JDK) 拉取Jenkins镜像 docker pull jenkins/jenkins 启动Jenkins容器 #创建文件夹 mkdir -p /home/jenkins_home 阅读全文
摘要:
安装步骤(已亲测好使): #笔者版本 ZOOKEEPER_VERSION=3.4.13 //DockerVersion=18.03.1-ee-3 #拉zookeeper镜像 docker pull wurstmeister/zookeeper #笔者版本 KAFKA_VERSION=2.8.1 // 阅读全文
摘要:
在Windows安装运行Kafka 原文地址:https://www.cnblogs.com/flower1990/p/7466882.html 一、安装JAVA JDK 1、下载安装包 http://www.oracle.com/technetwork/java/javase/downloads/ 阅读全文
摘要:
原文连接:https://www.cnblogs.com/jelly12345/p/14765477.html 一:文档对象如下 @Data @AllArgsConstructor @NoArgsConstructor @Document(indexName = "items", type = "i 阅读全文
摘要:
背景 每次通过 docker build 'xxx' 的时候,总是会去maven镜像下载一大堆Jar包,平均每次build都要在3分钟左右,效率非常低下,于是查阅了各种办法试图让第一次构建的时候才下载jar包,后面的构建都能复用,类似于本地开发代码会指定maven仓库一样 实现方案 使用 -Dmav 阅读全文
摘要:
背景 项目里面的yml文件为了区别线上、测试、本地环境,分别有application-prod.yml,application-dev.yml,application-local.yml;但是每个里面有很多相同的配置,希望配置文件里面的运维相关的公共配置抽取出来,统一管理 实现方案 通过在appli 阅读全文