- 博客(28)
- 收藏
- 关注
原创 Redis 缓存设计
1. 缓存的优势和缺点1.1. 优势(1)加速读写 : 针对存储层通常读写性能不够强悍。(2)降低后端负载1.2 缺点(1)数据不一致:缓存和存储层的数据存在着一定时间串口的不一致。2. 缓存更新策略2.1 LRU/FIFO 算法剔除缓存的使用量超过了最大值的时候触发。根据maxmemory-policy 配置。2.2 超时剔除给缓存设置过期时间,当过期后自动删除。2.3 主...
2019-02-15 10:05:05 286 1
原创 Redis : 理解内存
1. 内存消耗1.1 内存使用统计重点关注的指标:(1)used_memory_rss:从操作系统角度显示Redis进程占用的物理内存的总量。(2)used_memory:Redis分配器分配的内存总量,所有数据内存的占用量。(3)mem_fragmentation_ratio= used_memory_rss/used_memory。如果ratio>1: 表示部分内存没有用于数...
2019-01-20 18:19:51 355
原创 LeetCode
100. 相同树/** * 100. 相同的树 */public class IsSameTree { public boolean isSameTree(TreeNode p, TreeNode q) { if (p == null && q == null) {
2019-01-18 08:52:59 292
原创 Redis 慢查询,Pipeline,事务
1. 慢查询(1)没有慢查询只是统计命令执行时间,并不代表客户端没有查询。(2)-- latency 可以检测网络延迟,对于Redis的开发和运维非常有帮助。某个redis 客户端和某个redis服务器之间的延迟。...
2019-01-10 19:02:47 417
原创 Dubbo 实战及源码分析
1. Dubbo 的四种配置方式1.1 XML 配置Dubbo 是使用Spring 的 Shema 进行扩展标签和解析配置,所以我们能像 Spring 的 XML 配置方式一样进行配置。&amp
2018-12-17 09:47:36 3490
原创 dubbo 集群容错模式源码学习 -- FaibackCluster
FailbackCluster当调用失败后,将调用失败的请求放在failed 集合。这个集合是并发访问,所有的请求失败的都会放在这个结合中。之后,通过scheduledExecutorService 去定时从新执行这些失败的请求,只要failed 集合有元素,就会执行。public class FailbackCluster {private volatile ScheduledFut...
2018-10-30 19:32:06 220
原创 RocketMQ实现顺序消息
大部分业务场景不需要消息的产生和消费的顺序相同(顺序消费)。但在某些场景(比如 订单的生成,付款 ,下单 这3个消息必须按顺序处理)。解决思路是:(1)在发送端,要把统一业务ID 发送到同一个MessageQueue. (2) 在消费端,同一MessageQueue 的消息不要被并发处理了。针对(1) , 我们可以使用RocketMQ 提供的 MesssageQueueSelector 接口以...
2018-10-30 19:31:53 1183
转载 常见的一些 Hash 函数
Hash的主要原理就是把大范围映射到小范围;所以,你输入的实际值的个数必须和小范围相当或者比它更小。不然冲突就会很多。不同的应用对Hash函数有着不同的要求;比如,用于加密的Hash函数主要考虑它和单项函数的差距,而用于查找的Hash函数主要考虑它映射到小范围的冲突率。下面介绍一些常用的用于查询Hash函数。加法Hashpublic class AdditiveHash {...
2018-10-30 19:31:23 3646
原创 RocketMQ Consumer 负载均衡算法学习 -- AllocateMessageQueueAveragelyByCircle
首先, RocketMQ Consumer 的负载均衡指的是把Topic 下的所有MessageQueue 分配到不同的 Consumer 中,所以Message Queue , Consumer 的数量,某个Consumer 的位置 会影响到负载均衡。这边介绍下环形平均分配的算法:所有Consumers 形成一个环,所有MessageQueues 依次分配到环上每个Consumer。 代码如...
2018-10-30 19:31:02 966
原创 dubbo 集群容错模式源码学习---ForkingCluster
ForkingCluster 模式思想:服务端多个节点并行响应(并发任务)某个服务的请求,将执行完的结果放在一个阻塞队列中(FIFO)。第一个完成的任务的结果进入队列,将会马上返回,不会等待所有任务执行完成, 只要有一个任务完成,结果放到队列中,队列中弹出第一个(最快完成响应的那个节点)结果, 返回服务请求方。如果n 个并发任务都出错了,抛异常,将最后一个异常放到队列中。服务请求返回就是抛异常...
2018-10-30 19:30:10 289
原创 RocketMQ Consumer 负载均衡算法源码学习 -- AllocateMessageQueueConsistentHash
RocketMQ 提供了一致性hash 算法来做Consumer 和 MessageQueue的负载均衡。 源码中一致性hash 环的实现是很优秀的,我们一步一步分析。一个Hash环包含多个节点, 我们用 MyNode 去封装节点, 方法 getKey() 封装获取节点的key。我们可以实现MyNode 去描述一个物理节点或虚拟节点。MyVirtualNode 实现 MyNode, 表示一个...
2018-10-30 19:29:50 546
原创 RocketMQ NameServer模块 源码学习
RocketMQ namesrv 模块中 用到了 MixAll 类, 其中有一个 properties2Object(Properties, Object) 通用方法,把properties 转换成 简单的 POJO object。 你可以进一步扩展:从.properties 文件中读取properties key 和 value, 然后将key 和 value 转换成 object。 这个方法...
2018-10-30 19:29:24 227
转载 基于同步器AbstractQueuedSynchronizer 实现自定义锁
AbstractQueuedSynchronizer(AQS) 同步器 只是JAVA5 实现锁关建。利用同步器将所得语义(Semantic) 实现, 然后在自定义锁的实现中聚合AQS同步器。这里推荐一篇非常好的关于AQS的文章: http://ifeve.com/introduce-abstractqueuedsynchronizer/下面是自定锁的一个实现,其实就是Semphore, 令牌...
2018-10-30 19:28:46 310
转载 JDK静态代理、JDK动态代理以及CGLIB动态代理
这里转载一篇 “深入理解JDK动态代理机制” 的好文章:https://www.jianshu.com/p/471c80a7e8311. JDK 静态代理和动态代理的比较JDK静态代理与JDK动态代理之间相似之处:(1) 都要创建代理类,以及代理类都要实现接口。不同之处:(1) 在静态代理中我们需要对哪个接口和哪个被代理类创建代理类,所以我们在编译前就需要代理类实现与被代理类相同的接...
2018-10-30 19:28:21 188
原创 《Hadoop 权威指南 - 大数据的存储与分析》学习笔记
第一章 初识Hadoop1.2 数据的存储与分析对多个硬盘中的数据并行进行读/写数据,有以下两个重要问题:硬件故障问题。解决方案:复制(replication),系统保存数据的副本(replica)。以某种方式结合大部分数据来共同完成分析。MapReduce 提出一个编程模型,该模型抽象出这些硬件读/写问题,并且将其转换成对一个数据集(由键-值对组成)的计算。简而言之,Hadoop 为...
2018-10-30 19:27:58 935 3
原创 dubbo 负载均衡算法实现的学习
随机数权重算法假设一个服务service1 分布在一个含有4个节点(A, B, C, D)的集群上。 权重分别为1,2,3,4。那么一个请求service1 的 到 A,B,C,D 节点的概率为 10%,20%,30%,40%。 一个对于service1 的请求 会被随机分配一个数字。这个数字是A,B,C,D 节点权重之和范围类随机出来的。我们的例子中权重之和是10,所以随机数范围是【0,9...
2018-10-30 19:27:45 458
原创 《RockeMQ实战与原理解析》 学习笔记
第一章1.1 消息队列的功能介绍1.1.1 应用解耦1.1.2 流量消峰大部分应用系统在高峰时间段流量会猛增, 这个时候如果没有缓冲机制,不可能短时间内承受住大流量的冲击。利用消息队列,把大量的请求缓存起来,分散到相对长的一个时间段内处理,能大大提高系统的稳定性和用户提现。1.1.3 消息分发数据产生方将数据写入一个消息队列,数据使用方根据自己的需求订阅感兴趣的数据,各个团队订阅的数据...
2018-10-30 08:50:42 693
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人