- Java219
- 数据库114
- 分布式82
- 设计81
- 框架75
- JavaCore65
- Spring64
- 工具53
- 笔记52
- 大数据32
- 分布式通信29
- 设计模式28
- Spring核心24
- 架构23
- 搜索引擎数据库22
- DevOps21
- 关系型数据库21
- 软件20
- KV数据库20
- 网络19
- Redis18
- 算法17
- MQ17
- 分布式协同16
- Elasticsearch16
- 操作系统15
- 列式数据库15
- 分布式理论15
- MySQL15
- 综合14
- 面试13
- 基础特性13
- HBase13
- 编程12
- 文档数据库12
- 中间件11
- Linux11
- IO11
- 并发11
- 其他11
- MongoDB11
- Spring数据10
- Kafka10
- Flink9
- Hive9
- JVM9
- 安全9
- 构建9
- 工作8
- 服务器8
- 编程语言8
- 解决方案8
- 分布式存储8
- SpringWeb8
- 重构7
- 分布式调度7
- 容器7
- 高级特性7
- ZooKeeper7
- Maven7
- 人工智能6
- JavaWeb6
- 网络分层6
- 网络协议6
- 分布式治理6
- 监控诊断6
- Python6
- Nginx6
- Hadoop5
- 缓存5
- 测试5
- Tomcat5
- 微服务5
- Docker5
- Elastic5
- RPC5
- UML4
- 网络技术4
- 数据库综合4
- 术4
- JavaBean4
- 模板引擎4
- ORM4
- IDE4
- SpringIO4
- Spring其他4
- Spring综合4
- Spring集成4
- 软件工程3
- 编程范式3
- 数据库中间件3
- 流量控制3
- Git3
- Kubernetes3
- RocketMQ3
- Spring安全2
- 健康1
- 器1
- 法1
在分布式系统中,服务之间的调用关系错综复杂。当某个服务出现故障或流量激增时,如果不加以控制,故障会迅速蔓延,导致整个系统雪崩。流量控制中间件通过限流、熔断、降级等手段,保障系统在恶劣环境下的可用性。
📖 内容
Sentinel 简介
Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量控制、流量路由、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性。

数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。——摘自百度百科
什么是数据库连接池
数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。 一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完都关闭连接,这样造成系统的 性能低下。 数据库连接池的解决方案是在应用程序启动时建立足够的数据库连接,并讲这些连接组成一个连接池(简单说:在一个“池”里放了好多半成品的数据库联接对象),由应用程序动态地对池中的连接进行申请、使用和释放。对于多于连接池中连接数的并发请求,应该在请求队列中排队等待。并且应用程序可以根据池中连接的使用率,动态增加或减少池中的连接数。 连接池技术尽可能多地重用了消耗内存地资源,大大节省了内存,提高了服务器地服务效率,能够支持更多的客户服务。通过使用连接池,将大大提高程序运行效率,同时,我们可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。
Hystrix 简介
Hystrix 是什么
Hystrix 是由 Netflix 开源,用于处理分布式系统的延迟和容错的一个开源组件。在分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等。Hystrix 采用断路器模式来实现服务间的彼此隔离,从而避免级联故障,以提高分布式系统整体的弹性。
“断路器”本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间的等待或者抛出调用方无法处理的异常,这样就保证了服务调用方的线程不会被长时间、不必要地占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。
EhCache 是一个纯 Java 的进程内缓存框架,具有快速、精干等特点,是 Hibernate 中默认的 CacheProvider。

HTTP 缓存分为 2 种,一种是强缓存,另一种是协商缓存。主要作用是可以加快资源获取速度,提升用户体验,减少网络传输,缓解服务端的压力。
Http 强缓存
不需要发送请求到服务端,直接读取浏览器本地缓存,在 Chrome 的 Network 中显示的 HTTP 状态码是 200 ,在 Chrome 中,强缓存又分为 Disk Cache (存放在硬盘中)和 Memory Cache (存放在内存中),存放的位置是由浏览器控制的。是否强缓存由 Expires、Cache-Control 和 Pragma 3 个 Header 属性共同来控制。
关键词:Spring Cache、J2Cache、JetCache
一 、JSR 107
JSR107 中制订了 Java 缓存的规范。
因此,在很多缓存框架、缓存库中,其 API 都参考了 JSR 107 规范。

关键词:ConcurrentHashMap、LRUHashMap、Guava Cache、Caffeine、Ehcache
一、ConcurrentHashMap
最简单的进程内缓存可以通过 JDK 自带的 HashMap 或 ConcurrentHashMap 实现。
适用场景:不需要淘汰的缓存数据。
缺点:无法进行缓存淘汰,内存会无限制的增长。