<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[远古大猛犸]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/shmnh</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; shmnh]]></copyright><item><title><![CDATA[redis中主从、哨兵和集群这三个有什么区别]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/124221589</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/124221589</guid><author>shmnh</author><pubDate>Sat, 16 Apr 2022 22:08:05 +0800</pubDate><description><![CDATA[Redis主从就是常见的主从模式，从节点自动同步主节点数据，实现数据的热备份。

Redis哨兵就是在Redis主从上添加了一个监控系统（Redis Sentinel系统），实现故障转移，Redis哨兵会监控Redis主从节点运行状态，当主节点故障下线后，Redis哨兵会选择一个从节点充当新的主节点，继续提供服务。

Redis集群在Redis主从上添加了监控机制和数据分片机制（Redis中是分槽位），实现故障转移和数据水平扩展，Redis集群中组合了多个Redis主从，并且每个Redis主节点都负责存储集]]></description><category></category></item><item><title><![CDATA[Redis 越来越慢？常见延迟问题定位与分析]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/114465938</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/114465938</guid><author>shmnh</author><pubDate>Sun, 07 Mar 2021 00:42:47 +0800</pubDate><description><![CDATA[Redis作为内存数据库，拥有非常高的性能，单个实例的QPS能够达到10W左右。但我们在使用Redis时，经常时不时会出现访问延迟很大的情况，如果你不知道Redis的内部实现原理，在排查问题时就会一头雾水。



很多时候，Redis出现访问延迟变大，都与我们的使用不当或运维不合理导致的。



这篇文章我们就来分析一下Redis在使用过程中，经常会遇到的延迟问题以及如何定位和分析。





-  使用复杂度高的命令  -



如果在使用Redis时，发现访问延迟突然增大，如何进行排...]]></description><category></category></item><item><title><![CDATA[一致性Hash在负载均衡中的应用]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/106889064</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/106889064</guid><author>shmnh</author><pubDate>Tue, 07 Jul 2020 03:41:36 +0800</pubDate><description><![CDATA[简介

一致性Hash是一种特殊的Hash算法，由于其均衡性、持久性的映射特点，被广泛的应用于负载均衡领域，如nginx和memcached都采用了一致性Hash来作为集群负载均衡的方案。

本文将介绍一致性Hash的基本思路，并讨论其在分布式缓存集群负载均衡中的应用。同时也会进行相应的代码测试来验证其算法特性，并给出和其他负载均衡方案的一些对比。

一致性Hash算法简介

在了解一致性Hash算法之前，先来讨论一下Hash本身的特点。普通的Hash函数最大的作用是散列，或者说是将一系列在形式上具有相似性]]></description><category></category></item><item><title><![CDATA[Redis官方分布式锁的实现-Redlock实现原理]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/107172371</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/107172371</guid><author>shmnh</author><pubDate>Tue, 07 Jul 2020 03:24:17 +0800</pubDate><description><![CDATA[前文笔者介绍了目前市面上见的比较多的Redis+lua分布式锁的实现，大概有如下三个要点：

set命令要用 setkey value px milliseconds nx；保证原子性
value要具有唯一性，释放锁时要验证value值，不能误解锁；
解锁要使用lua脚本，也是为了保证原子性
Redis官方也指出该方法有安全隐患就是在主从复制模式下会导致两个线程可能会同时持有一个锁，如果业务允许如此，则推荐使用这种方案，毕竟实现简单，易维护。

如果对锁的要求非常高的场景，Redis官方建议使用RedLoc]]></description><category></category></item><item><title><![CDATA[用Redis构建分布式锁]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/107172367</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/107172367</guid><author>shmnh</author><pubDate>Tue, 07 Jul 2020 03:22:41 +0800</pubDate><description><![CDATA[《Redis官方文档》用Redis构建分布式锁

原文链接译者：yy-leo 校对：方腾飞（红体标记重点）

用Redis构建分布式锁

在不同进程需要互斥地访问共享资源时，分布式锁是一种非常有用的技术手段。 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器，但是这些库实现的方式差别很大，而且很多简单的实现其实只需采用稍微增加一点复杂的设计就可以获得更好的可靠性。这篇文章的目的就是尝试提出一种官方权威的用Redis实现分布式锁管理器的算法，我们把这个算法称为RedLock，我们相信这个...]]></description><category></category></item><item><title><![CDATA[NodeJS 基于redis的分布式锁的实现（Redlock算法）]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/107172353</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/107172353</guid><author>shmnh</author><pubDate>Tue, 07 Jul 2020 03:07:27 +0800</pubDate><description><![CDATA[1. 前言

开发时，碰到互斥问题，需要保证在分布式环境下，避免重复性操作修改用户状态，如：用户订单状态，购票时，修改票的余额等

2. 分布式锁的条件

分布式锁需要满足下列条件
锁需要有充足的可访问的存储空间
锁必须被唯一标识
锁至少要有两种状态
同时，要保证
安全特性：互斥访问，永远只有一个client能拿到锁
避免死锁：client最后可以拿到锁，不会出现死锁，即使原本上锁的client出现问题无法解锁
容错性：容错，只要大多数redis节点能够正常工作，客户端端都能获取和释放锁。

3.Redis]]></description><category></category></item><item><title><![CDATA[Redlock：Redis分布式锁最牛逼的实现]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/107172340</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/107172340</guid><author>shmnh</author><pubDate>Tue, 07 Jul 2020 03:00:14 +0800</pubDate><description><![CDATA[普通实现

说道Redis分布式锁大部分人都会想到：setnx+lua，或者知道set key value px milliseconds nx。后一种方式的核心实现命令如下：




- 获取锁（unique_value可以是UUID等）
SET resource_name unique_value NX PX 30000

- 释放锁（lua脚本中，一定要比较value，防止误解锁）
if redis.call("get",KEYS[1]) == ARGV[1] then
    return red.]]></description><category></category></item><item><title><![CDATA[如何使用Redis Watch命令]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/107172085</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/107172085</guid><author>shmnh</author><pubDate>Tue, 07 Jul 2020 00:45:32 +0800</pubDate><description><![CDATA[如何使用Redis Watch命令
使用Redis管理数据，理解如何使用事务存储键值对数据很重要。Redis事务与RDMMS事务有些类似，但也有差异。Redis主要通过几个命令有效管理事务，本文讨论Redis的Watch命令以及如何使用。

1. 概述
在阅读之前你最好安装好Redis环境，熟悉Redis常用命令。
Redis事务命令主要包括 WATCH, EXEC, DISCARD, MULTI。这些命令构成一组命令块，确保在一个步骤中全部执行。首先，它们确保事务中的命令将按顺序执行并序列化。这意味着在执]]></description><category></category></item><item><title><![CDATA[全面剖析Redis Cluster（3.X版本）原理和应用]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/106880617</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/106880617</guid><author>shmnh</author><pubDate>Sun, 21 Jun 2020 00:40:31 +0800</pubDate><description><![CDATA[全面剖析Redis Cluster原理和应用

1.Redis Cluster总览

1.1 设计原则和初衷

在官方文档Cluster Spec中，作者详细介绍了Redis集群为什么要设计成现在的样子。最核心的目标有三个：

性能：这是Redis赖以生存的看家本领，增加集群功能后当然不能对性能产生太大影响，所以Redis采取了P2P而非Proxy方式、异步复制、客户端重定向等设计，而牺牲了部分的一致性、使用性。
	水平扩展：集群的最重要能力当然是扩展，文档中称可以线性扩展到1000结点。
	可用性：在Cl]]></description><category></category></item><item><title><![CDATA[redis cluster 分片算法]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/106880589</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/106880589</guid><author>shmnh</author><pubDate>Sun, 21 Jun 2020 00:37:15 +0800</pubDate><description><![CDATA[redis cluster：

（1）自动将数据进行分片，每个master上放一部分数据
（2）提供内置的高可用支持，部分master不可用时，还是可以继续工作的



分片算法：

hash算法 -&gt; 一致性hash算法（memcached） -&gt; redis cluster，hash slot算法



1、hash算法和弊端（大量缓存重建）



2、一致性hash算法（自动缓存迁移）+虚拟节点（自动负载均衡）



增加虚拟节点解决缓存热点问题



3、redis cluster的..]]></description><category></category></item><item><title><![CDATA[redis-cluster 集群模式工作原理]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/106880551</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/106880551</guid><author>shmnh</author><pubDate>Sun, 21 Jun 2020 00:35:33 +0800</pubDate><description><![CDATA[面试题
redis 集群模式的工作原理能说一下么？在集群模式下，redis 的 key 是如何寻址的？分布式寻址都有哪些算法？了解一致性 hash 算法吗？

面试官心理分析
在前几年，redis 如果要搞几个节点，每个节点存储一部分的数据，得借助一些中间件来实现，比如说有codis，或者twemproxy，都有。有一些 redis 中间件，你读写 redis 中间件，redis 中间件负责将你的数据分布式存储在多台机器上的 redis 实例中。

这两年，redis 不断在发展，redis 也不断有新..]]></description><category></category></item><item><title><![CDATA[Redis-Cluster集群搭建教程]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/106880121</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/106880121</guid><author>shmnh</author><pubDate>Sun, 21 Jun 2020 00:13:39 +0800</pubDate><description><![CDATA[本教程是利用redis6.0版本进行搭建的集群方式，因为redis发布了5.0之后推出了很多新的特性，其中一点就是放弃Ruby的集群方式，改用的C语言编写的redis-cli，使redis集群构建方式复杂度大大降低

edis-cluster架构图（三主三从6个节点的配置）



redis-cluster架构总结:

  1)、无中心化就是所谓的去中心化(客户端与redis节点直连，不需要中间proxy层.客户端不需要连接集群所有节点，连接集群中任何一个可用节点即可)
  2)、在线自动扩容缩容
  3)]]></description><category></category></item><item><title><![CDATA[一致性哈希和哈希槽对比]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/106749533</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/106749533</guid><author>shmnh</author><pubDate>Sun, 14 Jun 2020 18:20:52 +0800</pubDate><description><![CDATA[背景

随着memcache和redis的出现，更多人认识到了一致性哈希。

一致性哈希用于解决分布式缓存系统中的数据选择节点存储问题和数据选择节点读取问题以及在增删节点后减少数据缓存的消失范畴，防止雪崩的发生。

哈希槽是在redis cluster集群方案中采用的，redis cluster集群没有采用一致性哈希方案，而是采用数据分片中的哈希槽来进行数据存储与读取的。

一致性哈希

一致性hash是一个0-2^32的闭合圆，（拥有2^23个桶空间，每个桶里面可以存储很多数据，可以理解为s3的存储桶）所]]></description><category></category></item><item><title><![CDATA[分布式一致性hash算法简介]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/106748196</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/106748196</guid><author>shmnh</author><pubDate>Sun, 14 Jun 2020 17:01:58 +0800</pubDate><description><![CDATA[分布式一致性hash算法简介

当你看到“分布式一致性hash算法”这个词时，第一时间可能会问，什么是分布式，什么是一致性，hash又是什么。在分析分布式一致性hash算法原理之前，我们先来了解一下这几个概念。

分布式

分布式（distributed）是指在多台不同的服务器中部署不同的服务模块，通过远程调用协同工作，对外提供服务。

现有系统system，有modelA、modelB、modelC等服务模块。现在要以集中式（集群，cluster）和分布式的方式进行部署，下面我们来看看它们部署的示意图。
]]></description><category></category></item><item><title><![CDATA[aaaaa]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/106320944</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/106320944</guid><author>shmnh</author><pubDate>Sun, 24 May 2020 21:05:05 +0800</pubDate><description><![CDATA[while(true){

alert("aaaaa");

}
]]></description><category></category></item><item><title><![CDATA[大型网站架构：熔断、降级、限流]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/104817922</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/104817922</guid><author>shmnh</author><pubDate>Thu, 12 Mar 2020 14:07:55 +0800</pubDate><description><![CDATA[0.概要

微服务架构中，服务数量增加，整体系统可用性会存在潜在问题，因此，需要一些额外的措施。

具体几个方面：

问题：分布式系统架构中，存在的问题
	解决方法：上述问题的解决办法？
	注意事项
	HyStrix 框架的原理
特别说明：


Hystrix已经进入「维护状态」，现在 Netflix 已经启用「resilience4j」框架，作为替代方案。


1.问题

分布式系统，随着业务...]]></description><category></category></item><item><title><![CDATA[实践系列：分销平台的技术架构]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/104817901</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/104817901</guid><author>shmnh</author><pubDate>Thu, 12 Mar 2020 14:06:57 +0800</pubDate><description><![CDATA[0. 目标

16年初，在美团主导建设的猫眼演出业务的分销平台，其中涉及订单交易部分，是电商业务下的典型场景。最近主导支付技术团队建设，在技术氛围建设方面，组织一些列的团队内部分享，拿这个 case 分享一下。


Note：整理有一个 keynote 版本，当时一起进行系统建设的另一个师兄 &amp; 好友小宇，现在阿里。


备注：当前 blog 中说的分销平台，本质也是其他业务场景的开放平台...]]></description><category></category></item><item><title><![CDATA[实践系列：分布式配置中心的实现方案，调研]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/104817869</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/104817869</guid><author>shmnh</author><pubDate>Thu, 12 Mar 2020 14:05:51 +0800</pubDate><description><![CDATA[0. 背景

远端缓存 + 远端热更新：分布式的配置中心，从 MySQL 中读取最新配置；
	区分环境
	MySQL 读取配置信息
1. 调研分析

分析，拍着脑袋，猜一下，有几种方向：

Spring Cloud 的配置中心，采用 MySQL 中配置，进行更新
	百度的分布式配置中心
	阿里的分布式配置中心
	美团的分布式配置中心
	其他公司的分布式配置中心
1.1. 方案汇总

名称
			来...]]></description><category></category></item><item><title><![CDATA[实践系列：高并发的缓存实践]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/104817835</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/104817835</guid><author>shmnh</author><pubDate>Thu, 12 Mar 2020 14:04:47 +0800</pubDate><description><![CDATA[0.背景

在沟通「商品首页」展示时，如何保证高性能、高可用，具体来说，3 个方面需要注意：

本地缓存
	分布式缓存
	冷数据存储方案：未命中缓存的冷数据，数据库并发压力
1.高并发的缓存实践

具体来说，围绕下面 3 项，逐个讨论：

本地缓存
	分布式缓存
	冷数据存储方案：未命中缓存的冷数据，数据库并发压力
1.1.本地缓存

本地缓存，一般采用 Guava，此时，需要考虑 2 个问题：
...]]></description><category></category></item><item><title><![CDATA[大型网站架构：无损发布]]></title><link>https://blog.youkuaiyun.com/shmnh/article/details/104817812</link><guid>https://blog.youkuaiyun.com/shmnh/article/details/104817812</guid><author>shmnh</author><pubDate>Thu, 12 Mar 2020 14:03:54 +0800</pubDate><description><![CDATA[大型网站架构：无损发布

2015-07-06

1. 背景

因为发布系统，导致应用可用性跌到 99.99 以下，细节参考：Nginx 上收集的系统可用性损失记录，借此机会，寻求应用无损发布的解决方案。

备注：


通过比对「系统发布时间」和「系统可用性降低」时 Nginx 的访问日志，2 个时间相吻合，因此，确定系统发布过程中，应用不可用，损失可用性。


2. 分析

之前可用性文章中，提...]]></description><category></category></item></channel></rss>