2 天前 / cyhone
一致性 Hash 常用于缓解分布式缓存系统扩缩容节点时造成的缓存大量失效的问题。一致性 Hash 与其说是一种 Hash 算法,其实更像是一种负载均衡策略。 GroupCache 是 golang 官方提供的一个分布式缓存库,其中包含了一个简单的一致性 Hash 的实现。其代码在 github.com/golang/groupcache/consistenthash。本文将会基于 GroupCache 的一致性 Hash 实现,深入剖析一致性 Hash 的原理。 本文会着重探讨以下几点内容: 传统的 Hash 式负载均衡在集群扩缩容时面临的缓存失效问题。一致性 Hash 的原理。Golang 的开源库 GroupCache 如何实现一致性 Hash。
61 天前 / 云水木石
说到 Hash(哈希),开发人员应该不陌生,比如 Hash 表是一种非常常用的数据结构,通过 Hash 表能够根据键值快速找到数据。哈希函数将文本(或其他数据)映射为整数,从而能够提高检索效率。 密码学中的 Hash 算法和普通的 Hash 算法不是同一个概念,从安全的角度考虑,密码学中的 Hash 算法除了有普通 Hash 算法的特性之外,还有其他的一些特性。 密码学 Hash 算法也通常称作摘要算法,是密码学中的基础算法,是现代密码学中的核心组成部分。
456 天前 / vivo互联网技术
在分布式环境下面,我们经常会通过一定的规则来进行数据分布的定义,本文描述的取模算法和一致性 Hash(Consistent Hash)是通过一定规则产生一个key,对这个key进行一定规则的运算,得出这个数据该去哪儿。 本文使用软件环境:Java 8 一、数据分布接口定义 概述 在分布式环境下面,我们经常会通过一定的规则来进行数据分布的定义,比如用户1的数据存储到数据库1、用户2的数据存储到数据库2...... 一般来说,有这么几种常用的方式: 有一个分布式环境中唯一的中心分发节点,每次在数据存储的时候...
459 天前 / 鱼尾
不忘初心,砥砺前行 作者 | 陌无崖 转载请联系授权 Nosql 基本概念为了解决高并发、高可用、高可扩展,大数据存储等一系列问题而产生的数据库解决方案,就是NoSql。 NoSql,叫非关系型数据库,它的全名Not only sql。它不能替代关系型数据库,只能作为关系型数据库的一个良好补充。 基本数据类型字符串SET 如果值存在,将会被新值覆盖; SETkeyvalue SETTNX 如果只存在,将不会有任何改动;命令在设置成功时返回 1 , 设置失败时返回 0 。
468 天前 / php-v
本文作者:jeffhe,腾讯 IEG 开发工程师 提到hash,相信大多数同学都不会陌生,之前很火现在也依旧很火的技术区块链背后的底层原理之一就是hash,下面就从hash算法的原理和实际应用等几个角度,对hash算法进行一个讲解。 1、什么是HashHash也称散列、哈希,对应的英文都是Hash。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值。活动开发中经常使用的MD5和SHA都是历史悠久的Hash算法。
561 天前 / 靳刚同学
“一致性hash的设计初衷是解决分布式缓存问题,它不仅能起到hash作用,还可以在服务器宕机时,尽量少地迁移数据。因此被广泛用于状态服务的路由功能” 01 — 分布式系统的路由算法 假设有一个消息推送系统,其简易架构如下 设备接入层不仅要接收设备的登录、下线等状态命令,还要把开发者的消息推送给设备。这个时候设备接入层就需要维护设备的状态信息(当然可以专门拆一个状态服务去维护这些信息,要求这部分必须少有代码更新,具体原因自己去想哦=_=)。
612 天前 / 了不起的顾斯比
在stackoverflow 看到一个问题,Redis strings vs Redis hashes to represent JSON: efficiency内容如下: I want to store a JSON payload into redis. There's really 2 ways I can do this: One using a simple string keys and values. key:user, value:payload (the entire JSON blob which can be 100-200 KB) SET user:1 payload Using hashes HSET user:1 username "someone"HSET user:1 location "NY"HSET user:1 bio "STRING WITH OVER 100 lines" Keep in mind that if I use a hash, the value length isn't predictable. They're not ...
630 天前 / Yu_Hao
先看代码: >>>inf=float('inf')>>>hash(inf)314159 这个 hash 值看着眼熟,不就是 π (约为 3.1415926)的前面几位嘛。 而在 Python 3 中,这个 hash 值位于系统信息中 >>>importsys>>> sys.hash_info.inf314159那么,无限大 inf 和圆周率有什么关系呢? 思考的分割线 答案是,(大概)并没有什么关系。只是恰好默认的 CPython 的实现中硬编码了这个数字而已。 #define _PyHASH_INF 314159#define _PyHASH_NAN 0 这个数字最早是由 Tim Peters (发明了排序算法 Timsort...
670 天前 / Tiny_熊
区块链能够实现去中心化无信任情形下的资产安全,很关键的一点儿就是充分的把公私钥体系引入并使用起来了。通过对每笔交易进行私钥签名的方式保证每个人都只能花费他自己账号里的钱,别人也可以很容易的去验证某笔交易确实是账号所有人所发出的。其实私钥不只是可以签名交易,还可以签名其它数据。 排名第一的去中心化交易所 IDEX下面是从 etherscan上截取的以太坊去中心化交易所在过去七天的交易量分布图,我们可以清楚的看到,IDEX 的交易量是远远超过其它交易所的。
727 天前 / crossoverJie
前言记得一年前分享过一篇《一致性 Hash 算法分析》,当时只是分析了这个算法的实现原理、解决了什么问题等。 但没有实际实现一个这样的算法,毕竟要加深印象还得自己撸一遍,于是本次就当前的一个路由需求来着手实现一次。 背景看过《为自己搭建一个分布式 IM(即时通讯) 系统》的朋友应该对其中的登录逻辑有所印象。 先给新来的朋友简单介绍下 cim是干啥的: 其中有一个场景是在客户端登录成功后需要从可用的服务端列表中选择一台服务节点返回给客户端使用。
772 天前 / 虞大胆
在《如何安全存储口令?了解下Hash加盐的原理》这篇文章中,从原理、用途、特点等方面讲解了安全存储口令的一种方案,这就是Hash加盐,为了更好的理解,这篇文章从实战的角度,设计一个可实践的技术方案。 以企业邮箱应用来说,企业用户(每个用户有一个 email 地址)、企业管理员、客服人员、销售人员都有一个登录口令;这些用户可以通过 IMAP、POP、SMTP、WEB(包括 webmail、客服管理平台、销售管理平台、企业管理平台)登录校验口令。
785 天前 / 虞大胆
最近要开发一个项目,其中涉及到了用户口令存储(大家习惯称之为密码),毫不夸张的说,如果方案设计的不合格,未来再想补救就会困难重重。 记得在写《深入浅出HTTPS:原理到实战》这本书的时候,也研究了很多密码学算法,和口令加密有关的算法也有很多,参考了很多资料,最近又温习了这些资料,感觉理解的更透彻了,为了把口令加密的事情说清楚,打算写4-5篇文章。 首先,口令加密是非常系统化的一个工程,涉及到多方面,比如代码安全性,系统安全性,数据存储安全性,任何一个方面出现漏洞,可能就会导致口令的泄漏。
937 天前 / Tomcat那些事儿
前面一篇文章通过生活化的场景为例,来描述RPC中的一些核心且常用的技术,(RPC是什么?为什么要学习RPC)在负载均衡的时候,我们提到一个「一致性Hash」, 这个在RPC之外的许多场景也会使用到。下面转载的这篇文章写的很清晰,各位请慢用。文章来源:https://blog.csdn.net/lihao21/article/details/54193868...
1052 天前 / u188085
前段时间在了解分布式,发现firefoxbug在博客中写的这篇《一致性hash在分布式系统中的应用》对这个问题说明得比较清晰易懂,本文主要是自己的理解和实践。在后端一般会遇到这样的场景:随着应用系统的访问量或者DB/文件存储系统的数据量增大,系统由于负载增大而出现响应延迟甚至down掉的情况。