![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统设计
文章平均质量分 91
~Maple~
帅
展开
-
表妹要我教她负载均衡算法
一、随机法(Random) 完全随机:通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。 代码实现: public class Servers { public List<String> list = new ArrayList<>() { { add("192.168.1.原创 2021-11-22 09:44:57 · 794 阅读 · 0 评论 -
不会分布式锁,彬彬教你啊
为什么需要分布式锁 我们为什么需要分布式锁呢? 与分布式锁相对应的是「单机锁」,我们在写多线程程序时,避免同时操作一个共享变量产生数据问题,通常会使用一把锁来「互斥」,以保证共享变量的正确性,其使用范围是在「同一个进程」中。 如果换做是多个进程,需要同时操作一个共享资源,如何互斥呢? 例如,现在的业务应用通常都是微服务架构,这也意味着一个应用会部署多个进程,那这多个进程如果需要修改 MySQL 中的同一行记录时,为了避免操作乱序导致数据错误,此时,我们就需要引入「分布式锁」来解决这个问题了。 想要实现分布原创 2021-11-22 09:43:56 · 123 阅读 · 0 评论 -
还不懂一致性哈希算法,看这篇就够了
为什么要有一致性哈希算法 我们首先想象一个这样的场景,如果我们有3台缓存服务器用于缓存图片,为这3台服务器编号为0号、1号、2号、现在有3万张图片需要缓存在这3台服务器上,我们肯定希望这些图片被均匀的分散到这3台服务器上,以便能够分摊缓存的压力。那么我们应该怎么做呢? 如果我们随意的将这3万张图片缓存在这3台服务器上,可以满足我们的需求吗?可以,但是如果这样做,当我们需要访问某个缓存项时,则需要遍历3台缓存服务器,从3万张缓存图片中找到我们需要访问的那张图片,遍历的过程效率太低,时间太长,当我们找到需要访问原创 2021-11-22 09:42:36 · 160 阅读 · 0 评论 -
缓存和数据库一致性问题,看这篇就够了
如何保证缓存和数据库一致性,相信大家一定被这个搞的头疼过吧,今天,我就来治治你的头痛,带你一步一步,由浅入深地剖析缓存一致性问题,保证华强都能听懂。 为什么要引入缓存 我们都知道,引入缓存是为了提高性能,我们先从最简单的场景开始讲起。 如果你的业务处于起步阶段,流量非常小,那无论是读请求还是写请求,直接操作数据库即可,这时你的架构模型是这样的: 但随着业务量的增长,你的项目请求量越来越大,这时如果每次都从数据库中读数据,那肯定会有性能问题。 这个阶段通常的做法是,引入「缓存」来提高读性能,架构模型就变成了原创 2021-11-02 09:14:33 · 213 阅读 · 0 评论