Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Coudy Hou
JavaGuide
提交
614bb26c
J
JavaGuide
项目概览
Coudy Hou
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
614bb26c
编写于
10月 25, 2020
作者:
G
guide
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
计算机网络知识总结完善
上级
716b1122
变更
6
展开全部
显示空白变更内容
内联
并排
Showing
6 changed file
with
14 addition
and
18 deletion
+14
-18
docs/database/Redis/some-concepts-of-caching.md
docs/database/Redis/some-concepts-of-caching.md
+14
-18
docs/network/images/Cut-Trough-Switching_0.gif
docs/network/images/Cut-Trough-Switching_0.gif
+0
-0
docs/network/images/isp.png
docs/network/images/isp.png
+0
-0
docs/network/images/计算机网络概述.png
docs/network/images/计算机网络概述.png
+0
-0
docs/network/images/计算机网络第七版.png
docs/network/images/计算机网络第七版.png
+0
-0
docs/network/计算机网络知识总结.md
docs/network/计算机网络知识总结.md
+0
-0
未找到文件。
docs/database/Redis/some-concepts-of-caching.md
浏览文件 @
614bb26c
...
...
@@ -30,7 +30,7 @@
### 2. 使用缓存为系统带来了什么问题
**软件系统设计中没有银弹,往往任何技术的引入都像是把双刃剑。**
但是,你使用好了之后,这把剑就是好剑
。
**软件系统设计中没有银弹,往往任何技术的引入都像是把双刃剑。**
你使用的方式得当,就能为系统带来很大的收益。否则,只是费了精力不讨好
。
简单来说,为系统引入缓存之后往往会带来下面这些问题:
...
...
@@ -51,17 +51,13 @@ _那本地缓存的方案有哪些呢?且听 Guide 给你来说一说。_
**一:JDK 自带的 `HashMap` 和 `ConcurrentHashMap` 了。**
`ConcurrentHashMap`
可以看作是线程安全版本的
`HashMap`
,两者都是存放 key/value 形式的键值对。但是,大部分场景来说不会使用这两者当做缓存,因为只提供了缓存的功能,并没有提供其他诸如过期时间之类的功能。一个稍微完善一点的缓存框架至少要提供:
过期时间、淘汰机制、命中率统计
这三点。
`ConcurrentHashMap`
可以看作是线程安全版本的
`HashMap`
,两者都是存放 key/value 形式的键值对。但是,大部分场景来说不会使用这两者当做缓存,因为只提供了缓存的功能,并没有提供其他诸如过期时间之类的功能。一个稍微完善一点的缓存框架至少要提供:
**过期时间**
、
**淘汰机制**
、
**命中率统计**
这三点。
**二: `Ehcache` 、 `Guava Cache` 、 `Spring Cache` 这三者是使用的比较多的本地缓存框架。**
`Ehcache`
的话相比于其他两者更加重量。不过,相比于
`Guava Cache`
、
`Spring Cache`
来说,
`Ehcache`
支持可以嵌入到 hibernate 和 mybatis 作为多级缓存,并且可以将缓存的数据持久化到本地磁盘中、同时也提供了集群方案(比较鸡肋,可忽略)。
`Guava Cache`
和
`Spring Cache`
两者的话比较像。
`Guava`
相比于
`Spring Cache`
的话使用的更多一点,它提供了 API 非常方便我们使用,同时也提供了设置缓存有效时间等功能。它的内部实现也比较干净,很多地方都和
`ConcurrentHashMap`
的思想有异曲同工之妙。
使用
`Spring Cache`
的注解实现缓存的话,代码会看着很干净和优雅,但是很容易出现问题比如缓存穿透、内存溢出。
-
`Ehcache`
的话相比于其他两者更加重量。不过,相比于
`Guava Cache`
、
`Spring Cache`
来说,
`Ehcache`
支持可以嵌入到 hibernate 和 mybatis 作为多级缓存,并且可以将缓存的数据持久化到本地磁盘中、同时也提供了集群方案(比较鸡肋,可忽略)。
-
`Guava Cache`
和
`Spring Cache`
两者的话比较像。
`Guava`
相比于
`Spring Cache`
的话使用的更多一点,它提供了 API 非常方便我们使用,同时也提供了设置缓存有效时间等功能。它的内部实现也比较干净,很多地方都和
`ConcurrentHashMap`
的思想有异曲同工之妙。
-
使用
`Spring Cache`
的注解实现缓存的话,代码会看着很干净和优雅,但是很容易出现问题比如缓存穿透、内存溢出。
**三: 后起之秀 Caffeine。**
...
...
@@ -69,22 +65,22 @@ _那本地缓存的方案有哪些呢?且听 Guide 给你来说一说。_
本地缓存固然好,但是缺陷也很明显,比如多个相同服务之间的本地缓存的数据无法共享。
_下面我们从为什么要有分布式缓存为接入点来正式进入 Redis 的相关问题总结。_
### 4. 为什么要有分布式缓存?/为什么不直接用本地缓存?
_我们可以把分布式缓存(Distributed Cache) 看作是一种内存数据库的服务,它的最终作用就是提供缓存数据的服务。_
本地的缓存的优势非常明显:
**低依赖**
、
**轻量**
、
**简单**
、
**成本低**
。
如下图所示,就是一个简单的使用分布式缓存的架构图。我们使用 Nginx 来做负载均衡,部署两个相同的服务到服务器,两个服务使用同一个数据库和缓存。
但是,本地缓存
![
集中式缓存架构
](
./images/redis-all/集中式缓存架构.png
)
1.
**本地缓存对分布式架构支持不友好**
,比如同一个相同的服务部署在多台机器上的时候,各个服务之间的缓存是无法共享的,因为本地缓存只在当前机器上有。
2.
**本地缓存容量受服务部署所在的机器限制明显。**
如果当前系统服务所耗费的内存多,那么本地缓存可用的容量就很少。
本地的缓存的优势是低依赖,比较轻量并且通常相比于使用分布式缓存要更加简单。
**我们可以把分布式缓存(Distributed Cache) 看作是一种内存数据库的服务,它的最终作用就是提供缓存数据的服务。**
再来分析一下本地缓存的局限性:
如下图所示,就是一个简单的使用分布式缓存的架构图。我们使用 Nginx 来做负载均衡,部署两个相同的服务到服务器,两个服务使用同一个数据库和缓存。
1.
**本地缓存对分布式架构支持不友好**
,比如同一个相同的服务部署在多台机器上的时候,各个服务之间的缓存是无法共享的,因为本地缓存只在当前机器上有。
2.
**本地缓存容量受服务部署所在的机器限制明显。**
如果当前系统服务所耗费的内存多,那么本地缓存可用的容量就很少。
![
集中式缓存架构
](
./images/redis-all/集中式缓存架构.png
)
2.
使用分布式缓存之后,缓存部署在一台单独的服务器上,即使同一个相同的服务部署在再多机器上,也是使用的同一份缓存。 并且,单独的分布式缓存服务的性能、容量和提供的功能都要更加强大。
...
...
docs/network/images/Cut-Trough-Switching_0.gif
0 → 100644
浏览文件 @
614bb26c
153.3 KB
docs/network/images/isp.png
0 → 100644
浏览文件 @
614bb26c
50.1 KB
docs/network/images/计算机网络概述.png
已删除
100644 → 0
浏览文件 @
716b1122
58.2 KB
docs/network/images/计算机网络第七版.png
已删除
100644 → 0
浏览文件 @
716b1122
21.8 KB
docs/network/计算机网络知识总结.md
浏览文件 @
614bb26c
此差异已折叠。
点击以展开。
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录