首页
学习
活动
专区
工具
TVP
发布

无题

专栏作者
17
文章
23565
阅读量
29
订阅数
分布式缓存一致性hash算法
在设计分布式缓存集群的时候,需要考虑集群的伸缩性,也就是当向集群中增加服务器的时候,要尽量减小对集群的影响,而一致性hash算法就是用来解决集群伸缩性。 当服务器不多,并且不考虑扩容的时候,可直接使用简单的路由算法,用服务器数除缓存数据KEY的hash值,余数作为服务器下标即可。 但是当业务发展,网站缓存服务需要扩容时就会出现问题,比如3台缓存服务器要扩容到4台,就会导致75%的数据无法命中,当100台服务器中增加一台,不命中率会到达99%(n/(n+1)),这显然是不能接受的。 在设计分布式缓存集群的时
于霆霖
2018-05-04
7950
分布式锁通用解决方案
分布式锁的解决方式: 基于数据库: 基于数据库表做乐观锁,用于分布式锁。(version) 基于数据库表做悲观锁(InnoDB,for update) 基于数据库表数据记录做唯一约束(表中记录方法名称) 基于缓存: 常用方案:使用redis的setnx()用于分布式锁。(setNx,直接设置值为当前时间+超时时间,保持操作原子性) 使用memcached的add()方法,用于分布式锁。 使用Tair的put()方法,用于分布式锁。 基于Zookeeper: 每个客户
于霆霖
2018-05-04
3.7K0
TPS与QPS概念
QPS是一种特殊的TPS,TPS指的是服务器每秒处理事务数,而QPS是针对查询服务器的每秒事务处理数也即每秒查询数 一、TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。TPS包括一条消息入和一条消息出,加上一次用户数据库访问。(业务TPS = CAPS × 每个呼叫平均TPS) TPS是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间
于霆霖
2018-05-04
2.7K0
ThreadLocal详解
ThreadLocal与synchronized的区别到底在哪里 synchronized这类线程同步的机制可以解决多线程并发问题,在这种解决方案下,多个线程访问到的,都是同一份变量的内容。为了防止在多线程访问的过程中,可能会出现的并发错误。不得不对多个线程的访问进行同步,这样也就意味着,多个线程必须先后对变量的值进行访问或者修改,这是一种以延长访问时间来换取线程安全性的策略。 而ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了,那
于霆霖
2018-05-04
6370
链式存储线性表(LinkedList)数据结构解析
LinkedList内部是通过链表来实现的 一、节点分析 LinkedList内部是通过链表来实现的,那么就少不了节点,所以在源码中必然能找到这样一个节点。 private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev, E element, Node<E> next) { this.item = element; this.next
于霆霖
2018-05-04
6410
分布式Session一致性解决方案
在分布式架构或微服务架构下,必须保证一个应用服务器上保存Session后,其它应用服务器可以同步或共享这个Session Web应用在单机部署的情况下,Session是被单个应用服务器存储管理的,由于只有一个应用服务器,用户的所有请求都是通过它进行响应处理的,所以能够很容易实现会话跟踪和保持。随着业务量的增长,系统架构需要做出调整以适应发展的需要,可能会使用分布式架构或微服务架构,无论使用哪种架构方式,应用系统单机部署的模式已经不能满足需求,所以会将应用系统部署到多台应用服务器上,用户的请求也会通过负载均
于霆霖
2018-05-04
1.1K0
JDK中Concurrent包工具类指南
这篇翻译指南很能解决问题,对于初步建立并发包的认识很有帮助,感谢原作者和翻译者 Java 并发工具包 java.util.concurrent 用户指南 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html。 本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去
于霆霖
2018-05-04
2.3K0
分库分表基本思想和实施策略
本文着重介绍sharding的基本思想和理论上的切分策略 参考地址:http://blog.csdn.net/bluishglc/article/details/6161475 要点总结 基本思想: 把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。 多数系统会将垂直切分和水平切分联合使用,先对系统做垂直切分,再针对每一小搓表的情况选择性地做水平切分。从而将整个数据库切分成一个分布式矩阵。 1.垂直切分: 对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用
于霆霖
2018-05-04
1.1K0
Rabbitmq基本原理
Exchange类似于数据通信网络中的交换机,提供消息路由策略。rabbitmq中,producer不是通过信道直接将消息发送给queue,而是先发送给Exchange。一个Exchange可以和多个Queue进行绑定,producer在传递消息的时候,会传递一个ROUTING_KEY,Exchange会根据这个ROUTING_KEY按照特定的路由算法,将消息路由给指定的queue。和Queue一样,Exchange也可设置为持久化,临时或者自动删除。 queue采用轮询的方式从绑定的queue中取消息。
于霆霖
2018-05-04
9930
Spring Boot核心原理-自动配置
为什么spring boot能够如此简单的让我们迅速上手。 之前在公司内部推行spring boot时,有同事跟我提到过,感觉换到spring boot这个框架后,好处是小白也能迅速上手写业务代码了。但是呢,这种情况下新手很容易写得云里雾里的,因为完全不知道背后的原理是什么,相对比在学习spring时需要深刻理解ioc、搞一堆繁琐的配置来说,的确缺少了被迫跳出舒适区去学习一些原理的过程,那么今天就讲讲,为什么spring boot能够如此简单的让我们迅速上手。 Spring由于其繁琐的配置,一度被人成为“
于霆霖
2018-05-04
1.7K0
Raft协议原理
* 在Raft中,任何时候一个服务器可以扮演下面角色之一: Leader: 处理所有客户端交互,日志复制等,一般一次只有一个Leader. Follower: 类似选民,完全被动 Candidate候选人: 类似Proposer律师,可以被选为一个新的领导人。 Raft阶段分为两个,首先是选举过程,然后在选举出来的领导人带领进行正常操作,比如日志复制等。 任何一个服务器都可以成为一个候选者Candidate,它向其他服务器Follower发出要求选举自己的请求: 其他服务器同意了,发出OK。 注意
于霆霖
2018-05-04
7800
Ehcache与Guava Cache
* 在Raft中,任何时候一个服务器可以扮演下面角色之一: Leader: 处理所有客户端交互,日志复制等,一般一次只有一个Leader. Follower: 类似选民,完全被动 Candidate候选人: 类似Proposer律师,可以被选为一个新的领导人。 Raft阶段分为两个,首先是选举过程,然后在选举出来的领导人带领进行正常操作,比如日志复制等。 任何一个服务器都可以成为一个候选者Candidate,它向其他服务器Follower发出要求选举自己的请求: 其他服务器同意了,发出OK。 注意
于霆霖
2018-05-04
9390
高并发商品详情页构建
* 主要思路: 1、数据变更还是通过MQ通知; 2、数据异构Worker得到通知,然后按照一些维度进行数据存储,存储到数据异构JIMDB集群(JIMDB:Redis+持久化引擎),存储的数据都是未加工的原子化数据,如商品基本信息、商品扩展属性、商品其他一些相关信息、商品规格参数、分类、商家信息等; 3、数据异构Worker存储成功后,会发送一个MQ给数据同步Worker,数据同步Worker也可以叫做数据聚合Worker,按照相应的维度聚合数据存储到相应的JIMDB集群;三个维度:基本信息(基本信息+扩展
于霆霖
2018-05-04
1.4K0
MemCache要点
* 1.特点 ####优势: 协议简单 使用Slab Allocation作为内置内存存储方式 该方案简单说是框架根据数据大小选择最合适的Slab,Memcache中维护者Slab内空闲Chunk的列表,根据该列表选择Chunk,将数据缓存在其中。 客户端分布式 劣势: 无法备份,重启无法恢复,可以通过配合新浪开源的兼容大部分Memcache操作的MemcacheDB来解决 2.缓存淘汰机制: LRU机制 Lazy Expiration:get操作时查看记录时间戳,检查是否过期。 CAS机制: 利用版本号
于霆霖
2018-05-04
1.3K0
Paxos算法原理
* 它的假设前提是,在分布式系统中进程之间的通信会出现丢失、延迟、重复等现象,但不会出现传错的现象。Paxos算法就是为了保证在这样的系统中进程间基于消息传递就某个值达成一致。 在Paxos算法中,有两种角色: Proposer Acceptor Paxos算法分为两个阶段。具体如下: 阶段一: (a) Proposer选择一个提案编号N(全剧唯一version),然后向半数以上的Acceptor发送编号为N的Prepare请求。 (b) 如果一个Acceptor收到一个编号为N的Prepare请求,且N
于霆霖
2018-05-04
9620
在高并发的核心技术中如何实现幂等性
* 实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。 例如: 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱; 发送消息,也应该只发一次,同样的短信发给用户,用户会崩溃; 创建业务订单,一次业务请求只能创建一个,创建多个就会出大问题。 等等很多重要的情况,这些逻辑都需要幂等的特性来支持。 下面说说幂等性概念: 幂等(idempotent、idemp
于霆霖
2018-05-04
1.8K0
Redis高可用要点
1.持久化方式(全量持久化与增量持久化) 2.水平拆分(数据分布) 3.主从复制(主从分工) 4.故障转移(sentinel相互感知,master故障发现,failover决策) 1.持久化方式 1)全量持久化模式: 基于全量的持久化在触发的时候,将当时的状态完全保存下来,形成一个snapshot 2)增量持久化模式: 基于全量的持久化保存的是数据的状态,增量持久化保存的状态的每一次变迁。 基于增量持久化的数据,可以对给定初始状态之后变迁进行回放,恢复数据的最终状态。 2.水平拆分(数据分布) 1)数据分
于霆霖
2018-05-04
6830
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档