自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(387)
  • 资源 (11)
  • 论坛 (6)
  • 问答 (2)
  • 收藏
  • 关注

转载 一致性Hash在负载均衡中的应用

简介一致性Hash是一种特殊的Hash算法,由于其均衡性、持久性的映射特点,被广泛的应用于负载均衡领域,如nginx和memcached都采用了一致性Hash来作为集群负载均衡的方案。本文将介绍一致性Hash的基本思路,并讨论其在分布式缓存集群负载均衡中的应用。同时也会进行相应的代码测试来验证其算法特性,并给出和其他负载均衡方案的一些对比。一致性Hash算法简介在了解一致性Hash算法之前,先来讨论一下Hash本身的特点。普通的Hash函数最大的作用是散列,或者说是将一系列在形式上具有相似性

2020-07-07 03:41:36 58

转载 Redis官方分布式锁的实现-Redlock实现原理

前文笔者介绍了目前市面上见的比较多的Redis+lua分布式锁的实现,大概有如下三个要点:set命令要用 setkey value px milliseconds nx;保证原子性value要具有唯一性,释放锁时要验证value值,不能误解锁;解锁要使用lua脚本,也是为了保证原子性Redis官方也指出该方法有安全隐患就是在主从复制模式下会导致两个线程可能会同时持有一个锁,如果业务允许如此,则推荐使用这种方案,毕竟实现简单,易维护。如果对锁的要求非常高的场景,Redis官方建议使用RedLoc

2020-07-07 03:24:17 71

转载 用Redis构建分布式锁

《Redis官方文档》用Redis构建分布式锁原文链接译者:yy-leo 校对:方腾飞(红体标记重点)用Redis构建分布式锁在不同进程需要互斥地访问共享资源时,分布式锁是一种非常有用的技术手段。 有很多三方库和文章描述如何用Redis实现一个分布式锁管理器,但是这些库实现的方式差别很大,而且很多简单的实现其实只需采用稍微增加一点复杂的设计就可以获得更好的可靠性。这篇文章的目的就是尝试提出一种官方权威的用Redis实现分布式锁管理器的算法,我们把这个算法称为RedLock,我们相信这个...

2020-07-07 03:22:41 54

转载 NodeJS 基于redis的分布式锁的实现(Redlock算法)

1. 前言开发时,碰到互斥问题,需要保证在分布式环境下,避免重复性操作修改用户状态,如:用户订单状态,购票时,修改票的余额等2. 分布式锁的条件分布式锁需要满足下列条件锁需要有充足的可访问的存储空间锁必须被唯一标识锁至少要有两种状态同时,要保证安全特性:互斥访问,永远只有一个client能拿到锁避免死锁:client最后可以拿到锁,不会出现死锁,即使原本上锁的client出现问题无法解锁容错性:容错,只要大多数redis节点能够正常工作,客户端端都能获取和释放锁。3.Redis

2020-07-07 03:07:27 337

转载 Redlock:Redis分布式锁最牛逼的实现

普通实现说道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.

2020-07-07 03:00:14 88

转载 如何使用Redis Watch命令

如何使用Redis Watch命令使用Redis管理数据,理解如何使用事务存储键值对数据很重要。Redis事务与RDMMS事务有些类似,但也有差异。Redis主要通过几个命令有效管理事务,本文讨论Redis的Watch命令以及如何使用。1. 概述在阅读之前你最好安装好Redis环境,熟悉Redis常用命令。Redis事务命令主要包括 WATCH, EXEC, DISCARD, MULTI。这些命令构成一组命令块,确保在一个步骤中全部执行。首先,它们确保事务中的命令将按顺序执行并序列化。这意味着在执

2020-07-07 00:45:32 72

转载 全面剖析Redis Cluster(3.X版本)原理和应用

全面剖析Redis Cluster原理和应用1.Redis Cluster总览1.1 设计原则和初衷在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子。最核心的目标有三个:性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以Redis采取了P2P而非Proxy方式、异步复制、客户端重定向等设计,而牺牲了部分的一致性、使用性。 水平扩展:集群的最重要能力当然是扩展,文档中称可以线性扩展到1000结点。 可用性:在Cl

2020-06-21 00:40:31 131

转载 redis cluster 分片算法

redis cluster:(1)自动将数据进行分片,每个master上放一部分数据(2)提供内置的高可用支持,部分master不可用时,还是可以继续工作的分片算法:hash算法 -> 一致性hash算法(memcached) -> redis cluster,hash slot算法1、hash算法和弊端(大量缓存重建)2、一致性hash算法(自动缓存迁移)+虚拟节点(自动负载均衡)增加虚拟节点解决缓存热点问题3、redis cluster的..

2020-06-21 00:37:15 89

转载 redis-cluster 集群模式工作原理

面试题redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?面试官心理分析在前几年,redis 如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者twemproxy,都有。有一些 redis 中间件,你读写 redis 中间件,redis 中间件负责将你的数据分布式存储在多台机器上的 redis 实例中。这两年,redis 不断在发展,redis 也不断有新..

2020-06-21 00:35:33 59

转载 Redis-Cluster集群搭建教程

本教程是利用redis6.0版本进行搭建的集群方式,因为redis发布了5.0之后推出了很多新的特性,其中一点就是放弃Ruby的集群方式,改用的C语言编写的redis-cli,使redis集群构建方式复杂度大大降低edis-cluster架构图(三主三从6个节点的配置)redis-cluster架构总结:  1)、无中心化就是所谓的去中心化(客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可)  2)、在线自动扩容缩容  3)

2020-06-21 00:13:39 94

转载 一致性哈希和哈希槽对比

背景随着memcache和redis的出现,更多人认识到了一致性哈希。一致性哈希用于解决分布式缓存系统中的数据选择节点存储问题和数据选择节点读取问题以及在增删节点后减少数据缓存的消失范畴,防止雪崩的发生。哈希槽是在redis cluster集群方案中采用的,redis cluster集群没有采用一致性哈希方案,而是采用数据分片中的哈希槽来进行数据存储与读取的。一致性哈希一致性hash是一个0-2^32的闭合圆,(拥有2^23个桶空间,每个桶里面可以存储很多数据,可以理解为s3的存储桶)所

2020-06-14 18:20:52 138

转载 分布式一致性hash算法简介

分布式一致性hash算法简介当你看到“分布式一致性hash算法”这个词时,第一时间可能会问,什么是分布式,什么是一致性,hash又是什么。在分析分布式一致性hash算法原理之前,我们先来了解一下这几个概念。分布式分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。现有系统system,有modelA、modelB、modelC等服务模块。现在要以集中式(集群,cluster)和分布式的方式进行部署,下面我们来看看它们部署的示意图。

2020-06-14 17:01:58 81

原创 aaaaa

while(true){alert("aaaaa");}

2020-05-24 21:05:05 68

转载 大型网站架构:熔断、降级、限流

0.概要微服务架构中,服务数量增加,整体系统可用性会存在潜在问题,因此,需要一些额外的措施。具体几个方面:问题:分布式系统架构中,存在的问题 解决方法:上述问题的解决办法? 注意事项 HyStrix 框架的原理特别说明:Hystrix已经进入「维护状态」,现在 Netflix 已经启用「resilience4j」框架,作为替代方案。1.问题分布式系统,随着业务...

2020-03-12 14:07:55 159

转载 实践系列:分销平台的技术架构

0. 目标16年初,在美团主导建设的猫眼演出业务的分销平台,其中涉及订单交易部分,是电商业务下的典型场景。最近主导支付技术团队建设,在技术氛围建设方面,组织一些列的团队内部分享,拿这个 case 分享一下。Note:整理有一个 keynote 版本,当时一起进行系统建设的另一个师兄 & 好友小宇,现在阿里。备注:当前 blog 中说的分销平台,本质也是其他业务场景的开放平台...

2020-03-12 14:06:57 298

转载 实践系列:分布式配置中心的实现方案,调研

0. 背景远端缓存 + 远端热更新:分布式的配置中心,从 MySQL 中读取最新配置; 区分环境 MySQL 读取配置信息1. 调研分析分析,拍着脑袋,猜一下,有几种方向:Spring Cloud 的配置中心,采用 MySQL 中配置,进行更新 百度的分布式配置中心 阿里的分布式配置中心 美团的分布式配置中心 其他公司的分布式配置中心1.1. 方案汇总名称 来...

2020-03-12 14:05:51 161

转载 实践系列:高并发的缓存实践

0.背景在沟通「商品首页」展示时,如何保证高性能、高可用,具体来说,3 个方面需要注意:本地缓存 分布式缓存 冷数据存储方案:未命中缓存的冷数据,数据库并发压力1.高并发的缓存实践具体来说,围绕下面 3 项,逐个讨论:本地缓存 分布式缓存 冷数据存储方案:未命中缓存的冷数据,数据库并发压力1.1.本地缓存本地缓存,一般采用 Guava,此时,需要考虑 2 个问题:...

2020-03-12 14:04:47 72

转载 大型网站架构:无损发布

大型网站架构:无损发布2015-07-061. 背景因为发布系统,导致应用可用性跌到 99.99 以下,细节参考:Nginx 上收集的系统可用性损失记录,借此机会,寻求应用无损发布的解决方案。备注:通过比对「系统发布时间」和「系统可用性降低」时 Nginx 的访问日志,2 个时间相吻合,因此,确定系统发布过程中,应用不可用,损失可用性。2. 分析之前可用性文章中,提...

2020-03-12 14:03:54 134

转载 大型网站架构:伸缩性

整体思路: 什么是系统伸缩性?衡量指标? 如何做?常见思路?1. 伸缩性,是什么网站的可伸缩性,是指:不改变软件、硬件的设计,只通过增加机器数量,就能扩大服务能力(减少机器数量,就缩小网站服务能力)。即:不改变:软硬件设计 变更机器数量,扩大或减小服务能力。 机器数量 → QPS2. 伸缩性,为什么需要这是跟互联网的特点相匹配的:网站发展规律:渐进式,都是演进而来的,从小...

2020-03-12 14:02:14 27

转载 大型网站架构:高可用

1. 概要目标:如何判断网站的可用性?如何提升可用性?几个问题:指标:哪些指标,可以衡量系统的可用性? 监控:如何测量这些指标?常用思路和工具? 改进:提升系统可用性,常用的措施?这些措施是如何提升可用性指标的呢?2. 指标指标:可用性指标:系统可用时间/系统运行时间 CaseStudy:针对重大的故障,要进行 case study 分析和故障评级,解决通用可用性指标无...

2020-03-12 13:59:29 105

转载 大型网站架构:高性能

1. 概要说明:此次分享,整理有独立的 keynote.目标:高性能的网站,要求响应时间短、支持高并发。几个问题:指标:衡量网站性能的指标,有哪些?牛不牛逼,不能听你瞎说,总得有个衡量标准,谁的高,谁在这方面就牛逼 监控:如何收集指标信息? 改进:不同指标的改进措施和原理?2. 指标2.1. 不同人员的指标不同人,不同视角,关注的网站高性能指标不同:用户:用户...

2020-03-12 13:57:58 33

转载 大型网站架构:前言

1. 概要大型网站的技术架构是什么?业务子系统拆分? 服务化拆分? …常见问题:大型网站,关于并发的处理? 大型网站,跟小的业务系统,有差异吗?有什么特殊的处理? 大型网站,完整的技术架构,核心模块都有哪些?数据?订单?账户?服务?监控?有哪些衡量维度?2. 讨论2.1 讨论形式内容来源:一方面要有自己的思路、另一方面借鉴别人的总结(xx等) 形式: 侧重典型场...

2020-03-12 13:54:57 41

转载 深入理解幂等性

什么是幂等性HTTP/1.1中对幂等性的定义是:一次和多次请求某一个资源对于资源本身应该具有同样的结果(网络超时等问题除外)。也就是说,其任意多次执行对资源本身所产生的影响均与一次执行的影响相同。Methods can also have the property of “idempotence” in that (aside from error or expiration issue...

2020-03-10 16:40:36 30

转载 分库分表全面了解分析

前言内容来源本文内容均来源于网络,涉及地址为什么要分库分表(个人理解,希望能与大家共勉)https://blog.csdn.net/a992795427/article/details/84949760浅谈分库分表https://blog.csdn.net/huangshanchun/article/details/78885765分库分表之sharding-jd...

2019-10-04 10:13:50 53

转载 数据库分库分表

一. 数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数据切分就是将数据分散存...

2019-10-03 09:55:02 46

转载 面试 (MySQL 索引为啥要选择 B+ 树)

前言:每天都在跟 mysql 打交道,你知道执行一条简单的 select 语句,都经历了哪些过程吗?首先,mysql 主要是由 server 层和存储层两部分构成的。server 层主要包括连接器、查询缓存,分析器、优化器、执行器。存储层主要是用来存储和查询数据的,常用的存储引擎有 InnoDB、MyISAM,MySQL 5.5.5 版本后使用 InnoDB 作为默认存储引擎。连接器...

2019-10-02 10:50:52 91

转载 图解MySQL索引--B-Tree(B+Tree)

看了很多关于索引的博客,讲的大同小异。但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等结构,导致在面试的时候答非所问!本文中有关存储引擎请查看MySQL存储引擎-InnoDB和MyISAM索引是什么?索引是帮助MySQL高效获取数据的数据结构。索引能干什么?提高数据查询...

2019-10-02 10:45:18 47

转载 分享 10 道 Nodejs 进程相关面试题

通过对以下 10 个面试题的分享,助您更好的理解 Node.js 的进程和线程相关知识快速导航什么是进程和线程?之间的区别?参考:Interview1 什么是孤儿进程?参考:Interview2 创建多进程时,代码里有app.listen(port)在进行 fork 时,为什么没有报端口被占用?参考:Interview3 什么是 IPC 通信,如何建立 IPC 通信?什么场景下需...

2019-08-21 17:52:24 152

转载 浅读V8——强大的JavaScript引擎

前言在过去的几年里,JavaScript高速发展成为了互联网中最热门的高级语言之一,它在性能上的提升以及不断涌现的前沿web技术使其成为HTML5的中坚力量。由于V8引擎在JavaScript性能优化方面做了很大的提升,所以也让他成为了大众喜爱的开源高性能JavaScript引擎,目前被用于谷歌浏览器,安卓浏览器,node.js等大型项目中,并成为了不可或缺的一部分。网页渲染流程用户输...

2019-08-19 17:06:25 129

转载 Koa2源码分析

源码结构Koa的源码中主要为lib目录下的application.js, context.js, request.js与response.js文件.├── AUTHORS├── CODE_OF_CONDUCT.md├── History.md├── LICENSE├── Makefile├── Readme.md├── benchmarks├── docs├── lib...

2019-08-13 23:03:33 76

原创 面向面试题和实际使用谈promise

Promise是什么?  Promise是JS异步编程中的重要概念,异步抽象处理对象,是目前比较流行Javascript异步编程解决方案之一。这句话说的很明白了,Promise是一种用于解决异步问题的思路、方案或者对象方式。在js中,经常使用异步的地方是Ajax交互。比如在es5时代,jQuery的ajax的使用success来完成异步的:$.ajax({ url:'/xxx',...

2019-08-07 20:00:56 81

原创 JS进阶之---基本数据类型,引用类型,内存空间

一、内存空间:  为了便于理解,我们暂且先将Js的内存分为栈内存和堆内存。  JavaScript具有垃圾自动回收机制,内存的分配与回收都完全实现了自动管理。所以我们在开发时一般会忽视内存空间的问题。但是理解了内存空间,将会对JS理解更加深刻,认识也更加清晰。  JavaScript有自动垃圾收集机制,那么这个自动垃圾收集机制的原理是什么呢?其实很简单,就是找出那些不...

2019-08-07 15:53:14 48

原创 JavaScript中的内存释放

一、如何查找上级作用域在 JavaScript中的预解析 ,有讲到作用域链的概念,本次在正式讲JavaScript中的内存释放之前,先看一个问题:如何查找当前作用域的上级作用域。var num = 20;function fn() { var num = 200; return function () { console.log(num); };...

2019-08-07 15:22:47 206

原创 js浮点数精度计算问题解决

在工作中遇到这种精度问题,例如:➜ ~ node> 5.10*100509.99999999999994>大多数语言在处理浮点数的时候都会遇到精度问题,但是在JS里似乎特别严重,再来看一个例子alert(45.6*13);结果居然是592.800000000001,当然加法之类的也会有这个问题那这是js的错误吗?当然不是,你的电脑做着正确的二进制...

2019-08-07 14:18:01 63

原创 promise、async和await之执行顺序的那点事

转载:https://segmentfault.com/a/1190000015057278?utm_source=channel-newest故事要从一道今日头条的笔试题说起~题目来源:半年工作经验今日头条和美团面试题面经分享!!!!!async function async1(){ console.log('async1 start') await async2() con...

2019-08-02 18:09:18 108

转载 了解JS单线程和任务队列!

一、单线程和任务队列单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等待。 如果排队是因为计算量过大,CPU忙不过来,倒也算了,但是很多时候CPU是闲着的,因为IO设备(输入输出设备)很慢(比如Ajax操作从网络读取数据),不得不等着结果出来,再往下执行! JavaScript语言的设计者意识到,这时主线程完全可以不管IO...

2019-08-02 17:56:22 59

转载 面试中经常被问到的 Redis 持久化与恢复,该如何解决

转载:https://blog.csdn.net/qq_42882671/article/details/86595236一、前言本文主要讲了 Redis 的持久化相关功能,持久化一直是影响 Redis 性能的高发地,也是面试中经常被问到的。包括 RDB 相关的特定和优缺点,AOF 的优缺点,事实上,由于 RDB 的数据实时性问题,目前用 AOF 比较多了。而持久化恢复也是优先 AOF。...

2019-06-14 16:52:20 106

转载 Redis面试题

1、什么是Redis?简述它的优缺点?Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis的出色之处不仅仅是性能,Redis最大的魅...

2019-03-24 17:09:15 242

转载 修改docker默认网卡(docker0)IP

转载:http://blog.51cto.com/wsxxsl/2060761第一步 删除原有配置sudo service docker stopsudo ip link set dev docker0 downsudo brctl delbr docker0sudo iptables -t nat -F POSTROUTING第二步 创建新的网桥sudo brctl a...

2018-11-28 17:26:25 7396

转载 Docker常用操作

https://blog.csdn.net/lovelong8808/article/details/80433121 https://www.wangshaoxing.com/blog/docker-inter-view.html

2018-11-22 10:12:26 87

Node.js 开发指南

Node.js 开发指南,通俗易懂,是一本入门的好教材!

2014-06-18

MongoVUE1.5.3破解

破解步骤: 先安装MongoVUE.msi,然后将“破解.zip”解压,并将里面的MongoVUE.exe替换MongoVUE安装后的同名文件。 破解成功!

2013-09-27

移动客户端及pc浏览器UA区分

囊括目前全部移动平台客户端及PC浏览器的UA区分。

2013-09-23

java MD5加密

java MD5加密 代码实例 没有bug 典型例子

2012-10-11

java socket长连接客户端服务端(标准实例)

java socket长连接客户端服务端(标准实例),准确无误,流行结构。

2012-09-20

Apache Mina 2.0中文手册

Apache Mina 2.0中文手册,官方中文翻译

2012-09-20

Mina2.0完全剖析,完全自学手册【完整版】

Mina2.0完全剖析,完全自学手册【完整版】

2012-09-20

Java io 详解

Java io 各种流详解,清楚系统的描述了java各种流的功能与之间的区别

2012-09-20

CDN技术详解

CDN技术详解 CDN回源 CDN域名解析 CDN负载均衡

2017-03-22

Java面试题集锦

公司面试题目集锦。。。。。。。。。

2008-02-05

Java程序员公司面试题目

多年收集的JAVA程序员公司招聘面世题目。。

2008-02-05

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除