02 2021 档案
摘要:定位代码 问题原因分析 这点代码是核心查询方法的一部分,负责控制查询用户信息的缓存处理,当有线程执行进行缓存处理时防止同一时间进行DB查询进行分布式锁lock,保证同一时间只有一个线程进行数据库查询,其他未获取锁的线程进行等待,异步获取用户缓存信息,起到防止缓存穿透的目的。 但是这里没有统一使用线程
阅读全文
摘要:不可变类 如果一个类初始化后,所有属性和类都是final不可变的,则它是线程安全,不需要任何同步,活性高 线程隔离 方法内局部变量使用线程内参数传递ThreadLocal持有 同步锁 synchronized的代码串行执行,线程安全,但活性低,JDK1.7之后已经优化volatile变量锁外双重检测
阅读全文
摘要:两者的区别: hessian序列化的时候,会写入字段名称,然后字段值,你可以想象为一个map。 msgpack序列化的时候,不写入字段名字,会按字段顺序写入值,你可以想象为一个数组。 对比 hessian产生的数据包较大,msgpack产生的数据包较小。网络传输数据更小。序列化中hessian的性能
阅读全文
摘要:1、JSF启动报错,排查jsf使用到的jar包,如netty-all、javassist等 2、金融网关序列化对Long、String会转换,所以字段端名称不可使用此类关键词 3、金融网关序列化对Long会有精度丢失,使用String替代,front层做转换 4、金融网关方法名称全局唯一性,使用带有
阅读全文
摘要:Bean映射 Spring BeanUtilCglib BeanCopierSpring BeanCopierOrika Spring BeanUtil org.springframework.beans.BeanUtils#copyProperties 基于反射做的,性能不高,使用场景不频繁对性能
阅读全文
摘要:表设计 ID字段作为自增主键,禁止在非事务内作为上下文作为条件进行数据传递 禁止使用外键。 业务逻辑规则在应用层进行实现,减少外键约束检查和变更带来的性能问题,对未来扩展预留空间 多表中的相同列,必须保证列定义一致 国内表默认使用InnoDB,表字符集默认使用gbk,国际默认使用utf8的表 单表一
阅读全文
摘要:Postman Apache Bench Jmeter 代码实现:CountDownLatch、Semaphore CountDownLatch /** * created by guanjian on 2020/12/28 11:19 */ public class CountDownLatchT
阅读全文
摘要:[调优]生产环境参数调优 虚拟机系统配置线程池参数配置JVM参数配置 虚拟机系统配置 SA大大之前沟通提供了某虚拟机参数示例,仅供参考,具体机器参数配置不一。 看到一般下发的虚拟机为 4C8G,内存还是可以接受的。如果是计算密集型或者依赖线程池的应用的可能比较吃力,特别是如果进行双实例配置时。 在J
阅读全文
摘要:数据落库自动加解密 注解逻辑切面 注解 /** * @author: guanjian * @date: 2020/07/18 8:09 * @description: 数据保护注解(方法注解) */ @Documented @Retention(RetentionPolicy.RUNTIME) @
阅读全文
摘要:[调优]缓存处理逻辑优化 缓存问题缓存过滤代码实现缓存移除 缓存问题 优化解决三个问题: 缓存逻辑抽离业务逻辑,以缓存切面形式进行拦截和过滤缓存穿透、缓存击穿缓存与数据库的数据一致性 缓存过滤 ① 通过spel进行缓存key动态解析② 缓存穿透保护。 缓存无数据则第一时间设置empty,防止流量击穿
阅读全文
摘要:public class ModRoutingTest { public static void main(String[] args) { //a渠道调用量 int a = 0; //b渠道调用量 int b = 0; //切量比 a:all int rate = 5; //样本数 int sam
阅读全文
摘要:0、项目示例 基础服务拆分方法请求生命周期触发UMP监控、日志打印、异常获取等用户信息变更触发生效、失效、变更逻辑变化 1、事件结构 │ XXXAspect.java │ IAspectHandler.java │ ├─annotation │ XXXAspect.java │ ├─event │
阅读全文
摘要:从业务方法相关性上看,MQ是业务方法正相关的,埋点和业务方法是不相关的。 从方法执行顺序上看,目前我们处理MQ发送、埋点记录都是嵌套在方法体中的,这种侵入强对于正常业务方法不友好,容易造成代码逻辑混乱,而且是在方法主线程中作为业务方法的一份子一同处理执行的,尽管埋点记录、MQ发送调用的耗时并不会给业
阅读全文
摘要:1、tomcat配置 在startup.sh 中增加 export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -Djava.awt.headless=t
阅读全文
摘要:Future超时阻塞与线程池拒绝策略 一、拒绝策略DiscardOldestPolicy二、拒绝策略DiscardPolicy 一、拒绝策略DiscardOldestPolicy /** * @author: guanjian * @date: 2020/06/30 14:39 * @descrip
阅读全文
摘要:[分布式系列]Gossip协议 介绍应用问题&目标&考量机制直接邮寄(direct mail)反熵传播(anti-entropy)谣言传播(rumor mongering) 通信模式拉方式(pull)推方式(push)推拉方式(push&pull)复杂度分析实现对比 原理总结优点缺点 参考 介绍 G
阅读全文
摘要:[Distributed]拜占庭将军问题 拜占庭概述拜占庭将军问题分布式领域中“拜占庭将军问题”问题核心剖析问题核心问题分析 问题解决解决方案:口头协议实现过程不可靠场景Commander不可靠Node不可靠少数不可靠多数不可靠 不足 解决方案:书面协议实现过程特点不足 解决方案:工作量证明 总结参
阅读全文
摘要:[Redis]集群 简述数据路由规则路由算法哈希取模算法一致性哈希算法虚拟槽 集群通信通信协议消息类型消息格式消息解析流程消息成本 集群搭建集群路由MOVEDASK 故障处理故障发现主观下线客观下线 故障恢复 集群架构集群限制总结参考 简述 分布式数据库是以集群的方式部署了多节点,把全量数据根据一定
阅读全文
摘要:[Redis]哨兵机制 架构拓扑运行机制故障转移集群选举Sentinel节点选举Redis节点选举 参考 在之前的文章中介绍了 [Redis]主从复制机制,主从复制机制可以允许我们拓展节点来进行数据拷贝,可以根据业务场景进行读写分离、数据备份等功能,但是主节点Master出现异常时并不能实现自动地主
阅读全文
摘要:[Redis]主从复制机制 架构拓扑复制关系建立断开 主从拓扑简单一主一从星形一主多从树状一主多从 复制命令sync全量复制psync全量/部分复制 复制原理总结参考 架构拓扑 复制关系 参与复制的节点一般有主节点和从节点两部分构成,任何节点都只能有一个主节点,任何一个主节点都可以有多个从节点,数据
阅读全文
摘要:[Redis]Lua脚本 Lua语言简介语言特性应用场景 数据结构协作组件伪客户端脚本缓存 命令实现evalevalshascript flushscript loadscript existsscript kill Lua与Redis命令区别Lua脚本优点总结参考 Lua语言简介 Lua是一种轻量
阅读全文
摘要:[Redis]事务实现机制 事务实现事务命令watch数据存储触发机制事务执行 multidiscardexec 执行流程数据构成异常处理入队错误执行错误 ACID探讨原子性(Atomic)隔离性(Isolation)持久性(Durability)一致性(Consistency) 参考 关系型数据库
阅读全文