随笔分类 - 分布式
摘要:线程池隔离 一个服务有多个接口,在提供服务时,使用了线程池,多个接口共用这一个线程池,如下图所示: 那么当某个接口处理效率缓慢,当对该接口的请求量上升时,由于该接口处理效率慢,对于该接口的请求就会占用公用的连接池,并且如果长时间没有释放连接,就会造成其他接口没有线程池来处理请求,于是就会出现因为一个
阅读全文
摘要:目录 一.基于权重的随机负载均衡策略 二.基于轮询的负载均衡策略 三.基于权重的轮询负载均衡策略 四.基于最少活跃数的轮询负载均衡策略 五.基于一致性hash的负载均衡策略 一.基于权重的随机负载均衡策略 有3台机器,每台机器都有各自的权重,如下如所示: 现在假设用户发起1次调用,请求被Server
阅读全文
摘要:平常开发过程中,如果涉及到RPC调用,对于服务调用方和服务提供方,都是可以设置接口超时时间的。以调用方为例,调用方需要调用远程的一个接口,为了保证服务的质量,一般会设置调用接口的超时时间,比如将调用接口的超时时间设置为1秒,当调用远程接口后,经过1秒还未拿到结果,那么就认为是超时了,调用方就不会继续
阅读全文
摘要:一.介绍 分布式锁,或者称为“全局锁”,在分布式环境中,保证锁只能被一个对象(或者成为“事务”)获取,经常出现在“避免数据重复处理”、“接口幂等”的场景。 下面介绍了Redis中两种分布式锁的实现方式。 二.setnx + expire组合 2.1命令介绍 使用setnx和expire命令组合实现,
阅读全文
摘要:参考: https://juejin.im/entry/591ea2a244d904006ca6db0a https://www.javazhiyin.com/23010.html https://www.cnblogs.com/wxgblogs/p/6639272.html 关于全局ID的生成,可
阅读全文
摘要:一. 背景介绍 在MySQL中,几乎所有的数据表都会有一个主键,主键是不允许重复的,所以表中的每一条数据的id都不会相同。 主键id可以是数字,也可以是字符串,一般情况下都会选择数字做主键id,数字类型,又可以分为int、long、float、double这几大类(可以细分),创建数据表的时候,会根
阅读全文
摘要:缓存雪崩介绍 选择缓存,都是为了提供“高速”的查询服务,这个“高速”是指数据库扛不住的高速,比如对于redis或者memcache来说,5万QPS不值一提,但是对于MySQL来说,上千QPS就要引起重视了。 以redis为例,如果一个数据从DB查出来放入redis缓存后,之后的查询直接在redis中
阅读全文