摘要: 引言 什么是网关?为什么需要使用网关? 如图所示,在不使用网关的情况下,我们的服务是直接暴露给服务调用方。当调用方增多,势必需要添加定制化访问权限、校验等逻辑。当添加API网关后,再第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制。本文所实现的网关源码抄袭了 Oh,不对 阅读全文
posted @ 2020-05-09 11:03 YoungDeng 阅读(496) 评论(0) 推荐(0) 编辑
摘要: 引言 该文是对《分布式之数据库和缓存双写一致性方案解析》,一文的补充。博主在该文中,提到了这么一句话 应该没人问我,为什么没有先更新缓存,再更新数据库这种策略。 博主当时觉得,这种更新策略比较简单,没必要多做说明,结果太多人留言给博主,问我为什么不说这套方案?好吧,博主先跟大家道个歉,是我的问题。所 阅读全文
posted @ 2020-05-09 11:02 YoungDeng 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 正文 博主本来觉得,《分布式之数据库和缓存双写一致性方案解析》,一文已经十分清晰。然而这一两天,有人在微信上私聊我,觉得应该要采用 先删缓存,再更新数据库,再删缓存 这一方案作为缓存更新策略,而不是先更新数据库,再删缓存。并且搬出了两篇大佬的文章,《Cache Aside Pattern》,《缓存与 阅读全文
posted @ 2020-05-09 11:01 YoungDeng 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 引言 redis大家在项目中经常会使用到。官网也提供了多语言的客户端供大家操作redis,如下图所示但是,大家有思考过,这些语言操作redis背后的原理么?其实,某些大神会说 只要按照redis的协议,发送指定数据给redis,监听返回值即可。 确实,本质原理就是如上面那句话所说。博主也是以这种思路 阅读全文
posted @ 2020-05-09 10:59 YoungDeng 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 引言 为什么写这篇文章? 博主的《分布式之消息队列复习精讲》得到了大家的好评,内心诚惶诚恐,想着再出一篇关于复习精讲的文章。但是还是要说明一下,复习精讲的文章偏面试准备,真正在开发过程中,还是脚踏实地,一步一个脚印,不要投机取巧。考虑到绝大部分写业务的程序员,在实际开发中使用redis的时候,只会s 阅读全文
posted @ 2020-05-09 10:57 YoungDeng 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还 阅读全文
posted @ 2020-05-09 10:55 YoungDeng 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客, 阅读全文
posted @ 2020-05-09 10:54 YoungDeng 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 什么是缓存击穿 在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示 因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询,这样缓存就失去了意义。如果在大流量下数据库可能挂掉。这就是缓存击穿。场景如下图所示: 我们正常人在登录首页的时候,都是根据us 阅读全文
posted @ 2020-05-09 10:52 YoungDeng 阅读(716) 评论(0) 推荐(1) 编辑
摘要: 引言 本文利用java自带的socket编程实现了一个简单的rpc调用框架,由两个工程组成分别名为battercake-provider(服务提供者)、battercake-consumer(服务调用者)。 设计思路如下:1、在battercake-provider中,写一个服务叫BatterCak 阅读全文
posted @ 2020-05-09 10:45 YoungDeng 阅读(693) 评论(0) 推荐(0) 编辑
摘要: 引言 还在为弄不清commons-logging-xx.jar、log4j-xx.jar、sl4j-api-xx.jar等日志框架之间复杂的关系而感到烦恼吗?还在为如何统一系统的日志输出而感到不知所措嘛?您是否依然存在这样的烦恼。比如,要更改spring的日志输出为log4j 2,却不知该引哪些ja 阅读全文
posted @ 2020-05-09 10:44 YoungDeng 阅读(222) 评论(0) 推荐(0) 编辑