标签: 算法

渣渣辉 | 2023-12-12 | 后端相关算法

五分钟了解一致性哈希算法

理论 一致性哈希算法是一种常用的[分布式]()算法,其主要用途是在分布式系统中,将数据根据其键(key)进行散列(hash),然后将散列结果映射到环上,再根据数据节点的数量,将环划分为多个区间,每个节点负责处理环上一定区间范围内的数据。 普通哈希的问题 分布式集群中,对机器的添加删除,或者机器故障后自动脱离集群这些操作是集群管理最基本的功能。如果采用常用的hash(object)%N取模的方式,在节点进行添加或者删除后,需要重新进行迁移改变[映射关系](),否则可能导致原有的数据无法找到。 举个栗子 随着业务和流量的增加,假如我们的Redis查询服务节点扩展到了3个,为了将查询请求进行均衡,每次请求都在相同的Redis中,使用hv = hash(key) % 3的方式计算,对每次查询请求都通过hash值计算,得出来0、1 、2的值分别对应服务节点的编号,计算得到的hv的值就去对应的节点处理。 但...

 160 |  0 |  0 后端相关算法

奈我何 | 2023-12-05 | JavaScript算法

万字总结 JS 数据结构与常用的算法

一、前言 首先,为什么我会学习数据结构与算法呢,其实主要是有两方面 第一,是我在今年的flag里明确说到我会学这个东西 第二,学了这些,对自己以后在工作或者面试也会带来许多好处 然后,本文是最近学习的一个 <span class="wx_text_underline" 总结文章</span ,文中的算法题, 大部分都是leetcode中 的,如不太理解题意,可直接去leetcode中找到对应的题。 二、基本概念 常常听到算法的时候,就会有人说到 时间复杂度 , 空间复杂度 。那么这俩玩意是啥呢,下面我们就来一一解释 1. 时间复杂度 其实就是一个函数,用大 O 表示, 比如 O(1)、 O(n)... 它的作用就是用来 定义描述算法的运行时间 O(1)     let i = 0     i += 1 O(n): 如果是 O(1) + O(n) 则还是 O(n)     for (let i = 0; i < n; i += 1) {  

 222 |  0 |  0 JavaScript算法

观云 | 2023-07-06 | 算法

学习分享|Etcd/Raft 原理篇

本文是根据近期对 Etcd-Raft 的学习把自己的理解做个简单整理和分享。 近期负责的项目中有一个场景需要依赖数据一致性算法,因此做了一些相关的调研。本文是根据近期对【Etcd-Raft】的学习把自己的理解做个简单整理和分享。 注:本文并没有对Etcd/Raft源码和流程事无巨细的解剖,更多地关注其核心功能以及过程中个人觉得值得学习的点。 前言 Raft是什么? Etcd是什么?  为什么选择etcd-raft  文章主要讲解 etcd/raft—— 原理解析篇。 一、原理解析 1. 最小原则 ...

 257 |  1 |  0 算法