令牌桶算法 Google Guava RateLimiter 12345<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>22.0</version></dependency& 2023-12-09 算法 > 限流算法 #算法 #限流算法
固定窗口算法 实现思路: 把时间线划分为多个独立且固定大小的窗口 设置一个计数器,用于记录限流阈值 拦截所有请求执行canPass操作,如果在当前数据窗口计数器超过了阈值,则后续落在该窗口的请求都会被拒绝,没有超过则计数器 +1 时间到达下一个时间窗口后,重置时间窗口 123456789101112131415161718192021222324252627282930313233343536373839 2023-12-09 算法 > 限流算法 #算法 #限流算法
滑动窗口算法 实现思路: 把时间单位划分为多个区间,一般都是均分为多个小的时间段 每个区间都有一个计数器,有一个请求落在该区间,则该区间内的计数器 + 1 没过一个时间段,时间窗口就会往右滑动一个,抛弃最老的一个区间并重置它的计数器,并纳入新的一个区间 拦截所有请求执行canPass操作,计算整个时间窗口内的请求总数需要累计所有时间片段的计数器,如果计数总和超过了限制数量,则落在当前窗口的请求都会被丢弃和拒绝 2023-12-09 算法 > 限流算法 #算法 #限流算法
随机和加权随机算法 1 基础1.1 随机算法概念:将请求随机分发到候选服务器 使用场景:请求调用量大的情况较为适用,调用量越大,负载越均衡;调用量越小,容易出现热点 代码实现:ThreadLocalRandom.current().nextInt(随机数) 优点:简单易用,通用性强,容易实现 缺点:不考虑服务器实时负载,存在累积请求的问题 1.2 加权随机算法概念:为每个服务器分配一个权重值,根据权重比例进行随机访问 2023-12-09 算法 > 负载均衡算法 #算法
漏桶算法 实现思路: 定义一个数据结构实现漏桶功能,当有外部流量涌入时把流量放入桶中 实现一个请求处理器,以恒定的速率获取桶中流量进行处理 123456789101112131415161718192021222324252627282930313233343536373839404142434445public class LeakyBucketRateLimit implements RateLi 2023-12-09 算法 > 限流算法 #算法 #限流算法
序列化与反序列化 1 Java领域的对象如何传输1.1 基于socket进行对象传输12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758public class User{ private String name; public St 2023-07-23 网络通信 #java #序列化
远程通信协议 1 HTTP请求流程在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要通信。这个通信的过程一定会涉及到通信协议相关的知识点。用浏览器访问各种网站,作为用户来说,只需要输入一个网址并且正确跳转就行。但是作为程序员,看到的可能就是这个响应背后的整体流程。所以通过一个http请求的整体流程来进行整理通信的知识。 1.1 DNS服务(域名解析)首先,访问一个域名,会经过DNS解析 2023-07-23 网络通信 #http #通信协议
通信系统架构设计理论与实践 1 通信系统网络架构通信系统架构是软件架构的基础设施和系统环境,在架构实践中,软件的性能、可用性、可靠性等质量属性很大程度上,受到基础设施和环境的影响,良好的基础设施能够有效地帮助提高系统架构的性能和可用性,增强可靠性。 通信网络主要形式:局域网、广域网、移动通信网。 1.1 局域网网络架构局域网 是单一机构专用计算机的网络。通常由计算机支持多种传输界等设备组成。特点 :是覆盖地理范围小、数据传输 2023-07-22 系统架构师 > 理论和实践 #系统架构师
大数据架构设计理论与实践 1 传统数据处理系统的问题1.1 传统数据库的数据过载问题传统应用的数据系统架构设计时,应用直接访问数据库系统。当用户访问量增加时,数据库无法支撑日益增长的用户请求的负载,从而导致数据库服务器无法及时响应用户请求,出现超时的错误。 关于这个问题的常用解决方法如下:(1)增加异步处理队列(2)建立数据库水平分区(3)建立数据库分片或重新分片(4)引入读写分离技术(5)引入分库分表技术 1.2 大数据 2023-07-22 系统架构师 > 理论和实践 #系统架构师
层次式架构设计理论与实践 1 层次式体系结构概述软件体系结构可定义为:软件体系结构为软件系统提供了结构、行为和属性的高级抽象,由构成系统的元素描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构成系统的元素之间的对应关系,提供了一些设计决策的基本原理,是构建于软件系统之上的系统级复用。 分层式体系结构是一种最常见的架构设计方法,能有效地使 2023-07-22 系统架构师 > 理论和实践 #系统架构师