
微服务
文章平均质量分 92
phaeton_lai
stay hungry,stay young
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis 系列--高可用&集群方案
一般我们在使用 Redis 时,鉴于单机存在的单点故障,容量有限,高并发压力问题,都不会采用单机模式,那么该如何设计 Redis 的部署方式来解决诸如单点故障,容量有限,高并发压力这样的问题呢?首先来看下单点故障的问题,单点故障一般就是指提供服务的节点或实例只有一个,当这个节点出现故障就导致这个服务不可用。解决这种问题一般会引入主备或主从的概念。主备模式就是主机向外提供服务,备机从主机同步数据,只有当主机出现故障时,备机才代替主机向外提供服务。主从模式下,从节点从主节点同步数据,同时也提供部分服务(对于主原创 2021-08-17 15:14:56 · 1497 阅读 · 2 评论 -
Redis 系列--缓存问题(缓存更新以及缓存穿透/缓存击穿/缓存雪崩)
使用 Redis 作为缓存时,一般的设计方案是:用户发起查询请求时,先从缓存中进行查询,如果数据存在则直接返回,否则查询数据库后更新缓存并返回。这种设计可以满足并发量较小的系统要求,当并发量增大或者遇到恶意攻击时,则可能导致大量请求达到数据库导致数据库压力增大甚至不可用。为了最大可能的减小数据库压力,在使用 Redis 做缓存时,就需要做周全的设计,其中要解决的比较典型的问题就是缓存穿透,缓存击穿,缓存雪崩。1. 缓存穿透缓存穿透是指用户不断请求缓存和数据库中都没有的数据。这时的用户很可能是攻击者,原创 2021-07-23 15:33:01 · 365 阅读 · 0 评论 -
转载《高性能网关设计实践》
原文地址:https://mp.weixin.qq.com/s/oAh5IojX_iz01nbf8mJMSQ转载 2020-07-16 16:05:06 · 205 阅读 · 0 评论 -
转载《分布式ID生成方案总结》
原文地址:https://www.cnblogs.com/yuandengta/p/12697595.html转载 2020-07-16 10:26:23 · 171 阅读 · 0 评论 -
转载《高性能短链接设计》
文章地址:https://mp.weixin.qq.com/s/YTrBaERcyjvw7A0Fg2Iegw转载 2020-07-16 09:17:48 · 219 阅读 · 0 评论 -
Redis 系列--Jedis 源码解读
Jedis 作为 Redis 官方推荐的三个客户端之一,相比于其他两个(Lettuce,Redisson)而言,它提供最基本的客户端功能,也因此使得它具备简单和轻量的特性。此外,它也是线程不安全的客户端,因此不适用在多线程场景中。本篇我们通过对其源码的阅读来了解 Redis 的客户端是如何进行工作的,同时也去找出它线程不安全的原因。版本说明:本片源码解读基于 Jedis-3.3.0,请注意区分。1. 初始化首先我们从 Jedis 的基本使用说起,最简单的使用方式如下:Jedis jedis .原创 2020-07-15 16:55:10 · 753 阅读 · 0 评论 -
Redis 系列--持久化
Redis 持久化是面试中的热门,重要性不言而喻。对开发者来说,掌握 Redis 的持久化不仅可以从容应对面试,在实际工作中对 Redis 的使用也有重要的指导意义。Redis 的持久化大体上可以分为三种:RDB,AOF 和混合持久化。RDB 和 AOF 持久化机制各有千秋,混合持久化将两者结合取其精华。1. RDBRDB 的持久化方式是对 Redis 内存数据快照进行序列化,因此当 Redis 缓存的数据比较大时,这将是一个很耗时的操作,耗时一方面是在对数据的序列化上,另一方面是在数据的刷盘上。.原创 2020-07-03 19:34:33 · 205 阅读 · 0 评论 -
K8S入门篇
01 Controllers官网:https://kubernetes.io/docs/concepts/workloads/controllers/ReplicationController(RC)官网:https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller/A Replicat...原创 2020-05-05 21:05:54 · 322 阅读 · 0 评论 -
JUC 源码解读系列--SynchronousQueue 篇
SynchronousQueue 通常被称为无界队列,队列中不存储具体的元素,一个插入操作的完成必须建立在另一个线程的删除操作上。正如官方注释中所说,它看起来更像一个通道。1. offer()public boolean offer(E e, long timeout, TimeUnit unit) throws InterruptedException { if (e =...原创 2020-04-23 16:27:36 · 204 阅读 · 0 评论 -
JUC 源码解读系列--ArrayBlockingQueue 篇
ArrayBlockingQueue 提供的功能与 LinkedBlockingQueue 基本相同,且都是 FIFO 的队列。两者的差别主要在于底层的数据结构不同,本篇的初衷在于熟悉 ArrayBlockingQueue 中的游标的设计。1. offer()public boolean offer(E e, long timeout, TimeUnit unit) throws ...原创 2020-04-21 21:05:13 · 173 阅读 · 0 评论 -
JUC 源码解读系列--LinkedBlockingQueue 篇
LinkedBlockingQueue 是 JUC 中常用的 FIFO 阻塞队列,本系列中我们在了解线程池的原理时,其中 newSingleThreadExecutor 和 newFixedThreadPool 方法中默认的任务队列就是 LinkedBlockingQueue。此外,我们可以使用此队列实现在同一进程中对生产者和消费者的异步化。1. offer()public boolean...原创 2020-04-19 15:06:40 · 227 阅读 · 0 评论 -
JUC 源码解读系列--ConcurrentHashMap 篇
本篇源码解读基于 JDK1.8,请注意区分版本。1. ConcurrentHashMap()// 构造函数中,我们重点看一下 sizeCtl 这个属性public ConcurrentHashMap(int initialCapacity) { if (initialCapacity < 0) throw new IllegalArgumentExcepti...原创 2020-04-18 22:28:00 · 224 阅读 · 0 评论 -
JUC 源码解读系列--ThreadPoolExecutor 篇
线程池的出现将开发人员从线程的管理中解放出来,让开发人员有更多精力去关注业务代码。但是 JUC 中对线程池的高度封装,让不少开发人员渐渐忽视或生疏了线程池的底层实现,作为一个有追求的开发者,不仅知其然也要知其所以然,同时这一部分也是许多大厂面试的必问题目。本篇我们一起来走进线程池的源码一探究竟。1. 构造参数// 当我们使用 Executors 工具/工厂类创建线程池时,不管是使用下面三种...原创 2020-04-17 14:04:58 · 446 阅读 · 0 评论 -
AQS 源码解读系列--CyclicBarrier 篇
栅栏原创 2020-04-10 21:23:00 · 208 阅读 · 0 评论 -
AQS 源码解读系列--CountDownLatch 篇
CountDownLatch 作为 JUC 中提供的计数器。原创 2020-04-09 15:45:04 · 209 阅读 · 0 评论 -
AQS 源码解读系列--Semaphore 篇
本篇我们一起进入 Semaphore 的实现原理。原创 2020-04-09 15:02:27 · 186 阅读 · 0 评论 -
AQS 源码解读系列--ReentrantReadWriteLock 篇
1. readLock1.1. lock()1.2. unlock()2. writeLock2.1. lock()2.2. unlock()原创 2020-04-08 21:39:01 · 231 阅读 · 0 评论 -
AQS 源码解读系列--Condition 篇
上一篇我们解读了 ReentrantLock 的工作原理,ReentrantLock 作为 synchronized 关键字的替代,相对应的线程的通信 wait/notify/notifyAll 也有其替代,这就是 AQS 体系中的 Condition,本篇我们一起来了解一下 Condition 是如何工作的。1. await() 方法...原创 2020-04-03 10:51:34 · 249 阅读 · 0 评论 -
自定义实现 LRU 容器-Java版
最近在学习算法,遇到一个实现 LRU 的题目,自己花了一天的时间完成了代码实现基本功能测试测试,这里和大家分享一下。1. 功能介绍该实现支持新增及修改操作时的数据置顶,需要注意的是,当删除记录时,如果要删除的记录在活跃链表中,记录的删除动作不会促使非活跃数据的晋升。举例:如果 cache 中一共有10条数据,活跃链表的长度为5,链表中记录的数据为1~5,现将4删除,删除之后不会使非...原创 2020-03-29 13:45:26 · 360 阅读 · 0 评论 -
Tomcat 源码解读--启动篇
版本说明:本次源码解读基于tomcat-8.0.11版本,请注意区分。1 下载并导入首先去官网下载源码,源码链接:tomcat-8/v8.0.11将源码解压缩后导入 IDEA 并在根目录下添加如下 pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3....原创 2020-03-20 14:26:51 · 317 阅读 · 0 评论 -
nacos-config工作原理解析
nacos-config工作原理解析说明:本文是基于nacos-1.1.0版本进行解读,请注意区分。1. 什么是nacos?nacos官方手册上对nacos的描述比较权威,这里不再赘述,手册地址https://nacos.io/zh-cn/docs/what-is-nacos.html2. java的sdk对工作原理的分析是从sdk入手的,如果你没有直接使用过sdk进行编程,建议先熟悉一...原创 2019-08-08 21:33:53 · 7800 阅读 · 4 评论