自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 收藏
  • 关注

转载 缓存与数据库一致性 笔记

缓存与数据库数据的一致性 是个老生常谈的问题。此文清晰地讲解了其中的问题和常规解法。关键点包括:写缓存vs删缓存(写的并发问题风险较高,也有资源浪费风险,但相较读属于主动加载,具体还是结合业务场景确定) 先删缓存vs先写db(先删缓存有并发读写时造成不一致的风险;先写db也有并发读写时,极端情况读线程将旧值写入缓存的风险,但风险更低) 处理db主从延迟(对有读写分离+主从延迟的情况,删除需要延时删除) 处理删缓存失败(阻塞重试会影响线程耗时,做本地消息表太重,可以结合binlog+中间件做异步删除

2022-04-09 20:58:25 225

转载 Redis的分布式部署

该文章从存储的分布式部署常用思路出发,介绍了水平拆分、主从复制这两种核心思路,并介绍了redis的实现,分别是水平拆分的实现:sharding,将key通过crc16哈希到16384个slot里。slot在redis集群部署好时就已经确定分布的机器。如果有新的master加入,需要迁移slot,会有MOVED、ASKING响应给客户端。 主从复制的实现:redis支持一主0从~多从,使用复制算法实现主从复制。以下为原文。学习笔记 | Redis 分布式部署方案_大虎牙的博客-CSDN博客_red

2022-04-09 19:10:11 1590

转载 京东到家库存设计(分布式系统)笔记

近期阅读了京东到家的库存系统设计。重点描述了几个核心问题,如:同订单重复扣减处理(订单锁+唯一性校验) 同商品库存并发扣减处理(悲观:商品锁;乐观:更新where stock > require,本质是db写的乐观锁,stock类似version;对争抢更严重的情况如秒杀,提供的方案不是很合理(50%直接失败会导致普通的争抢也有一半失败吧?不太正常。)) 分布式一致性(提单系统做回滚协调者+worker扫描订单列表兜底) 缓存在库存中的使用(未提及)也了解了部分库存业务逻辑(预占、可用

2022-04-09 16:13:06 1032

转载 本地消息表实现最终一致性-案例

作者提供本地消息表案例,解决最终一致性问题。link:https://segmentfault.com/a/1190000012415698以下为原文。背景传统的单体应用不会横跨多个数据库,可以通过单机事务保证一致性。然而在海量数据的场景下,我需要对数据库做拆分,即分库分表,而Cobar、MyCat这类分库分表中间件并不提供分布式事务的特性,并且基于二阶段提交的分布式事务性能较差,对于大多数业务场景来说,并不需要强一致,只需要保证最终一致性即可。实践下面我们举个下订单的场景,总共有.

2020-09-16 11:33:49 676

转载 分布式事务-本地消费表 实践思路

本地消息表这种实现方式的思路,其实是源于 ebay,后来通过支付宝等公司的布道,在业内广泛使用。其基本的设计思想是将远程分布式事务拆分成一系列的本地事务。如果不考虑性能及设计优雅,借助关系型数据库中的表即可实现。举个经典的跨行转账的例子来描述。第一步伪代码如下,扣款 1W,通过本地事务保证了凭证消息插入到消息表中。第二步,通知对方银行账户上加 1W 了。那问题来了,如何通知到对方呢?通常采用两种方式:采用时效性高的 MQ,由对方订阅消息并监听,有消息时自动触发事件 采用定时轮询

2020-09-15 21:38:46 187

转载 分布式事务简介

转自:https://xiaomi-info.github.io/2020/01/02/distributed-transaction/使用tcc实现强一致性;使用 本地消息表+mq+失败回滚 实现最终一致性。以下为原文。[作者简介]李文华,小米信息技术部海外商城组随着互联网技术的不断发展,系统越来越复杂,几乎所有 IT 公司的系统都已经完成从单体架构到分布式架构的转变,分布式系统几乎无处不在。谈到分布式系统,特别是微服务架构,我们不得不谈分布式事务。今天就跟大家一起聊聊分布式事务以及常用.

2020-09-09 19:55:11 184

转载 并发编程:volatile关键字解析

转自:https://www.cnblogs.com/dolphin0520/p/3920373.html以下是原文。volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关.

2020-09-09 19:24:12 81

原创 mac OS 安装virtualbox

1. 安装virtualbox国内下载外网资源较慢,使用了清华的镜像站完成了virtualbox。清华镜像站将大量开源软件镜像了一份,便于国内下载。清华镜像站virtualbox下载url:https://mirrors.tuna.tsinghua.edu.cn/virtualbox/2. 安装虚拟机virtualbox中新建虚拟机后,具体使用的系统镜像需要用户自行提供。我安装...

2020-04-09 11:32:32 972

原创 缓存的大key热点key问题

一、缓存读热点key问题:某个热点缓存model读取流量极大。带来问题:读缓存问题:读流量集中到某key,导致指定缓存机器压力过大 写缓存问题:缓存失效时,大量线程穿透构建缓存,带来db和服务压力。解决:读缓存问题 将缓存在分布式服务机器做二次缓存 备份热点Key:即将热点Key+随机数,随机分配至Redis其他节点中。这样访问热点key的时候就不会全部命中到一台机器上了。...

2020-03-21 20:48:55 1233

转载 系统发生无故卡死原因分析

转自:https://my.oschina.net/xiaomu0082/blog/2990388?from=timeline&isappinstalled=0作者分析了系统无故卡死的原因,并追溯到redis使用问题并解决。以下为原文。首先说下问题现象:内网sandbox环境API持续1周出现应用卡死,所有api无响应现象刚开始当测试抱怨环境响应慢的时候 ,我们重启一下应用...

2020-02-19 11:13:48 1793

转载 杂谈篇之我是怎么读源码的,授之以渔

转自:https://www.cnblogs.com/youzhibing/p/9553752.html以下为原文。读源码的经历  刚参加工作那会,没想过去读源码,更没想过去改框架的源码;总想着别人的框架应该是完美的、万能的,应该不需要改;另外即使我改了源码,怎么样让我的改动生效了? 项目中引用的不还是没改的jar包吗。回想起来觉得那时候的想法确实挺......  工作了一年多之后...

2020-01-17 16:52:46 201

转载 手撸Spring事务

转自:1.https://blog.csdn.net/ligeforrent/article/details/792236732.https://juejin.im/post/5cd2a49551882535d36edc4b对于不适合使用Spring注解管理事务的场景,可以选择手写事务执行逻辑。1.如果应用程序中直接使用JDBC来进行持久化,DataSourceTransact...

2019-11-12 23:04:54 398

转载 服务一启动就发生 FGC(jvm gc常见原因)

转载自微信公众号涤生的博客。以下是原文。最近有个同学说他的服务刚启动就收到两次 Full GC 告警, 按道理来说刚启动,对象应该不会太多,为啥会触发 Full GC 呢?带着疑问,还是先看看日志,毕竟日志的信息更多。2.日志可以看到,其实是两次 CMS GC(监控对 Full GC 和 Old GC 不分)。但是你会发现一个奇怪的现象,咦,"CMS-initial-m...

2019-07-23 22:29:20 6098

转载 jackson序列化,指定属性筛选

package com.sankuai.mall.sqm.api.web.controller.tool;import com.fasterxml.jackson.annotation.JsonFilter;import com.fasterxml.jackson.databind.*;import com.fasterxml.jackson.databind.module.Simple...

2019-07-05 19:49:22 3080

原创 fastjson, Jackson与Gson 各场景试验

本文罗列了笔者遇到的JSON使用中不得不注意的feature和坑。就本次【粗糙的】兼容性试验来看,Jackson > Gson > fastjson易用性试验来看,Gson = fastjson > Jackson(Jackson的filter,真jr难用)也可能在之后使用中出现打脸情况。也欢迎读者评论区打脸。fastjson版本:1.2.58(特别标明,因为fastj...

2019-06-26 18:01:30 2127 1

转载 排查load过高/gc过久问题

转载自:http://ju.outofmemory.cn/entry/149977当jvm的gc很久+很频繁时,会导致服务load高,服务5xx响应明显增多等问题。通过dump+MAT可以排查为什么生成了这么多garbage。(jmap使用:https://blog.csdn.net/ligeforrent/article/details/70474203)MAT中Overview可能很小只...

2019-05-18 00:06:11 1047

转载 排查线程量超高问题

转载自:https://www.cnblogs.com/zyhxhx/p/4564953.html以下是原文。1. 获取要查看的进程的IDps aux | grep xxx2. 查看此进程下的线程信息top -H -p <pid> top -p <pid> 按shift+h top -Hp <pid> 3....

2019-05-17 17:33:40 2157

转载 优秀博文目录

Holis文章:https://www.hollischuang.com/archives/category/javaThreadLocal的实现:http://www.cnblogs.com/dolphin0520/p/3920407.html进程与线程的区别:把进程当做资源分配的基本单元,把线程当做执行的基本单元,同一个进程的多个线程之间共享资源。java线程池中的等待队列,Arr...

2019-02-21 23:27:42 643

转载 maven项目引入外部文件(资源)

1. maven项目如何引入外部文件?maven项目一般在main目录下分为java和resources,前者是源码,后者是资源(含外部文件)。在maven的pom.xml中指定resources所在目录后,当maven编译时,resources中的资源会被maven全量复制到target/classes中。(不依赖任何maven插件,但是想java编译顺利,至少还是引入maven-com...

2019-01-17 18:01:00 4923

原创 mvn package -pl ${PACKAGE} -am ,连锁依赖不build的原因

背景资料:项目结构为:xxx-parent(父pom),xxx-client(子pom,jar包),xxx-web(子pom,war包,依赖xxx-client)我们的maven项目打包时,在根目录下,使用mvn clean -U package -pl xxx-web -am -P $PROFILE -Dmaven.test.skip=$SKIP_TEST进行打包。基于资料可...

2018-10-26 18:23:21 9341 1

转载 转载:按需构建多模块,玩转Maven反应堆

转自:http://juvenshun.iteye.com/blog/565240在多模块Maven项目中,反应堆(Reactor)是一个包含了所有需要构建模块的抽象概念,对于Maven用户来说,主要关心的是两点:哪些模块会被包含到反应堆中? 反应堆中所有模块的构建顺序是什么?例如有这样的一个多模块项目:plexus-security包含了8个子模块,其中security-re...

2018-10-26 17:51:58 499

原创 先读判空后写的并发问题

近期有业务需求:先读,判断某分类名是否存在,不存在就插入该分类名。将这个流程放到事务里后,就以为万事大吉了。结果用户并发操作时,发生了DuplicateKeyException(门店ID + 分类名有唯一键)。系统排查了一下数据库(MySQL InnoDB)的事务原理后,确认了为什么放到事务里没有解决。mysql的innodb数据库,默认事务配置是repeatable read,只保证了读...

2018-10-10 20:08:24 836 2

原创 同时登陆多个linux服务器管理 polysh

polysh组件,利器。仅记录该利器名,具体安装可见其他攻略。语法较灵活polysh mafly0{1,2}polysh mafly01 mafly03polysh 'mafly0&lt;1-4&gt;' gg-mafly01 gg-order01polysh gg-{mafly01,order01} mafly01可以自由搭配出想要的主机名组合...

2018-09-26 18:26:30 567

转载 稳定性保障思路

稳定性保障思路1. 线上系统稳定性    容灾切换    流控方案2. 系统依赖    超时设置与监控报警    降级方案    熔断处理    强弱依赖梳理,保证核心流程3. 系统运维    蓝绿部署    回滚规范    自动化运维工具    故障演练4. 流程保障    服务上线流程SOP    数据库变更SOP    代码规范,模板工程    代码质量检...

2018-09-06 17:12:27 1980

原创 MySQL大小写问题

近日写码,遇到奇怪问题。在MySQL查询“180ML”,查到了"180ml",代码未做判断,导致用Set&lt;String&gt;做difference发现不存在,重新插入时,发生DuplicateKey。经试验,默认varchar是大小写不敏感的,是因为MySQL默认使用_ci校对规则。(table使用的utf8mb4,为了支持特殊字符。通过执行show collation,可以看到表的默...

2018-08-15 21:42:17 155

原创 git 如何移动一组 commit

目前已比较熟悉的commit移动玩法:1. git reset [commit],软回滚到某次commit(文件变化留存)2. git reset --hard [commit],硬回滚到某次commit(文件变化丢弃)3. git stash ,将当前的变动“存档”(git stash pop就是读档)通过以上3个,已经可以【在不保存commit信息的前提下】删除掉任何想干掉...

2018-07-13 19:31:39 1339

转载 jvm中的stop the world 在日志中的表现

原文讲述了jvm发生STW可能的原因(不仅是GC),以及在日志中的体现(主要是对gc.log中,total time for which application threads were stopped这行的解释)。链接:https://dzone.com/articles/logging-stop-world-pauses-jvm下附原文。Logging Stop-the-world Pause...

2018-06-27 19:54:41 1271

转载 Spring创建bean的三种方式

关于Spring创建bean的三种方式,可以支持用户自定义工厂方法。链接:https://blog.csdn.net/magicianjun/article/details/78737840原文如下:Spring支持如下三种方式创建Bean1:调用构造器创建Bean2:调用静态工厂方法创建Bean3:调用实例工厂方法创建Bean一:调用构造方法创建Bean  调用构造方法创建Bean是最常用的一种...

2018-06-20 13:26:03 33072 1

转载 raft介绍

http://thesecretlivesofdata.com/raft/

2018-05-10 19:29:08 354

原创 数据库和缓存组件的主要区别

持久化ID的方案方案一:缓存组件方案二:数据库备注对高频读写的支持  复杂查询  永久持久化 及 数据量太大时的系统负担 永久持久化的风险在于,数据量太大时可能导致系统故障。(数据库容量不足等)永久持久化的优点在于,可以留存数据。对于数据量太大的风险,可以通过定时任务检查数据库规模,设置报警阈值来规避。且目前的数据量不足以引发此问题。容灾备份能力  总结方案一灵活性强,适合支持高频的读写,适合存储...

2018-05-02 13:24:10 1398

原创 设计文档 注意点

设计文档的要求:1. 问题梳理:领域问题、技术问题不重不漏,全景图2. 充分调研:业内有哪些解决方案,方案对比不造轮子,借鉴解法3. 技术选型:结合自己的问题避免过度设计4. 设计(达成目标,解决问题)五视图,端到端思考架构5图原则设计文档应该包含的:1. 项目背景2. 项目目标3. 需求分析4. 方案介绍与对比5. 数据模型(若有)

2018-05-02 13:22:09 218

转载 同步与异步、阻塞与非阻塞

1. 我理解的不同阻塞与非阻塞 是指请求者发起请求后,能否自由地执行其它任务。阻塞情况,请求者必须卡在获取执行结果处,不能有其他操作。非阻塞情况,请求者提出请求后,可以【自由地】执行其他任务。同步与异步 是指请求发起后,请求结果的告知方式。同步情况,请求结果必须由请求者【主动地】查询,获取结果。异步情况,请求结果准备好后,会发出signal或者执行回调函数,通知请求者结果,

2018-04-24 20:49:12 105

原创 事务注解Transactional在同一个类中调用的失效问题

问题:在Spring管理的项目中,方法A使用了Transactional注解,试图实现事务性。但当同一个class中的方法B调用方法A时,会发现方法A中的异常不再导致回滚,也即事务失效了。原因:Transactional是Spring提供的事务管理注解。关于事务的概念可参见转载的帖子:Spring事务管理(详解+实例)。重点在于,Spring采用动态代理(AOP)实现对bean的管...

2018-04-18 21:14:59 13792

转载 git远程删除分支后,本地git branch -a 依然能看到的解决办法

转自:https://blog.csdn.net/qq_16885135/article/details/52777871核心命令:1. git remote show origin2. git remote prune origin以下为原文。使用 git branch -a 命令可以查看所有本地分支和远程分支(git branch -r 可以只查看远程分支) 发现很多在远程仓库已经删除的分支在...

2018-03-27 11:28:14 913

转载 ListableFuture简介及使用

转自:https://www.cnblogs.com/tanqianqian/p/5974996.html。以下为原文。ListenableFuture顾名思义就是可以监听的Future,它是对java原生Future的扩展增强。我们知道Future表示一个异步计算任务,当任务完成时可以得到计算结果。如果我们希望一旦计算完成就拿到结果展示给用户或者做另外的计算,就必须使用另

2018-03-21 12:02:09 582

转载 ElasticSearch 常用的查询过滤语句

原贴:https://www.cnblogs.com/ghj1976/p/5293250.htmlquery 和  filter 的区别请看: http://www.cnblogs.com/ghj1976/p/5292740.html  Filter DSL term 过滤term主要用于精确匹配哪些值,比如数字,日期,布尔值或 not_

2018-03-06 01:43:57 171

转载 Spring事务管理(详解+实例)

转载自:http://blog.csdn.net/trigl/article/details/50968079写这篇博客之前我首先读了《Spring in action》,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识总结一下,参考的文章如下:Spring事务机制详解Spring事务配置的五种方式Spring中的事务管理实例详解1 初步理解理解...

2018-02-01 02:19:26 1264

转载 分布式事务(如交易系统)

转载一篇大牛写的分布式系统一致性解决方案。对于交易系统,或者涉及多端一致性的系统都有很好的解法。原贴:http://www.infoq.com/cn/articles/solution-of-distributed-system-transaction-consistency除下面的方式外,如果是由于双写导致的读取不一致(如数据迁移时,需要进行的双写),可以通过双读解决,使用modify_...

2018-02-01 01:09:42 839

原创 稳定性、防故障方法论

1. 页面静态化,用户无关的-缓存,用户相关的-异步回填。 适用场景:页面稳定,不会有大变动2. 分清强弱依赖, 弱依赖:做好降级策略,做好限流 强依赖思考能否通过缓存顶一阵。3. 开关 多做开关(系统后门),对是否打印日志,是否限流,降级等都做好。通过配置推送实时更改服务状态。 需要对开关有丰富的测试保证不出问题。未测试过的开关禁止在线上使

2017-11-03 17:34:33 391

原创 Pinyin4j bug

在转换“嗯”的拼音的时候,net.sourceforge.pinyin4j工具包中的PinyinHelper.toHanyuPinyinStringArray方法(获取拼音),会输出ng。但是业务方理解,“嗯”应该输出en。换用com.github.stuxuhai.jpinyin中的PinyinHelper.getShortPinyin方法(获取拼音首字母),会输出e

2017-10-27 15:59:12 606

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除