From b9194b2c8c30fab55da9c87c21d7527846a24916 Mon Sep 17 00:00:00 2001 From: weic Date: Fri, 10 May 2024 13:49:03 +0800 Subject: [PATCH] 1 --- ...22\351\231\244\351\233\206\351\224\246.md" | 24 ++++ docs/study/db/NoSQL/Redis.md | 117 ++++++++++-------- ...0\347\273\264-\345\270\270\347\224\250.md" | 7 ++ docs/study/net/VLAN-VXLAN.md | 23 ++++ 4 files changed, 117 insertions(+), 54 deletions(-) create mode 100644 "docs/study/back/\351\224\231\350\257\257\346\216\222\351\231\244\351\233\206\351\224\246.md" create mode 100644 docs/study/net/VLAN-VXLAN.md diff --git "a/docs/study/back/\351\224\231\350\257\257\346\216\222\351\231\244\351\233\206\351\224\246.md" "b/docs/study/back/\351\224\231\350\257\257\346\216\222\351\231\244\351\233\206\351\224\246.md" new file mode 100644 index 000000000..a5f34e8ca --- /dev/null +++ "b/docs/study/back/\351\224\231\350\257\257\346\216\222\351\231\244\351\233\206\351\224\246.md" @@ -0,0 +1,24 @@ +### 内存不足,导致上传文件失败 + +HTTP请求上传文件 + +报错如下 + +```shell +2024-05-09 11:09:36.896 [ccsp-aggregate-pt,TASK,6727263067663369608,] [task-2] INFO c.s.c.p.b.s.s.service.impl.ServiceInfoServiceImpl - start upload image fi +le to remote --- +2024-05-09 11:09:38.672 [ccsp-aggregate-pt,TASK,6727263067663369608,] [task-2] INFO org.apache.http.impl.execchain.RetryExec - I/O exception (java.net.Socket +Exception) caught when processing request to {s}->https://10.20.37.101:18086: Connection reset +2024-05-09 11:09:38.673 [ccsp-aggregate-pt,TASK,6727263067663369608,] [task-2] INFO org.apache.http.impl.execchain.RetryExec - Retrying request to {s}->https +://10.20.37.101:18086 +2024-05-09 11:09:40.552 [ccsp-aggregate-pt,TASK,6727263067663369608,] [task-2] INFO org.apache.http.impl.execchain.RetryExec - I/O exception (java.net.Socket +Exception) caught when processing request to {s}->https://10.20.37.101:18086: Connection reset +2024-05-09 11:09:40.552 [ccsp-aggregate-pt,TASK,6727263067663369608,] [task-2] INFO org.apache.http.impl.execchain.RetryExec - Retrying request to {s}->https +://10.20.37.101:18086 +2024-05-09 11:09:42.355 [ccsp-aggregate-pt,TASK,6727263067663369608,] [task-2] INFO org.apache.http.impl.execchain.RetryExec - I/O exception (java.net.Socket +Exception) caught when processing request to {s}->https://10.20.37.101:18086: Connection reset +2024-05-09 11:09:42.355 [ccsp-aggregate-pt,TASK,6727263067663369608,] [task-2] INFO org.apache.http.impl.execchain.RetryExec - Retrying request to {s}->https +://10.20.37.101:18086 +``` + +宿主机server端的内存不足,比上传的文件要小,导致无法接受,从而直接断联了HTTP请求。 \ No newline at end of file diff --git a/docs/study/db/NoSQL/Redis.md b/docs/study/db/NoSQL/Redis.md index 19885b709..6052903ff 100644 --- a/docs/study/db/NoSQL/Redis.md +++ b/docs/study/db/NoSQL/Redis.md @@ -1,54 +1,63 @@ -### Redis 是什么 - -redis 是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持久化的 Key-Value 数据库。[官网](https://redis.io)。 - -目前,Vmware 在资助着 redis 项目的开发和维护。 - -redis 的作者,他叫 Salvatore Sanfilippo,网名是 antirez,去他的博客逛逛,地址是 antirez.com,当然也可以去 follow 他的 github,地址是[http://github.com/antirez](http://github.com/antirez)。 - -Redis 是 K-V 存储的典型代表,它是一款开源(基于 BSD 许可)的高性能 K-V 缓存和存储系统。Redis 的 Value 是具体的数据结构,包括 string、hash、list、set、sorted set、bitmap 和 hyperloglog,所以常常被称为数据结构服务器。 - -### Redis 数据结构 - -redis 是一种高级的 key:value 存储系统,其中 value 支持五种数据类型: - -1. 字符串(strings) -2. 字符串列表(lists) -3. 字符串集合(sets) -4. 有序字符串集合(sorted sets) -5. 哈希(hashes) - 1. hashes 存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。 - -key 的命名规则: - -1. key 不要太长,尽量不要超过 1024 字节,这不仅消耗内存,而且会降低查找的效率; -2. key 也不要太短,太短的话,key 的可读性会降低; -3. 在一个项目中,key 最好使用统一的命名模式,例如 user:10000:passwd。 - -### Redis 持久化 - -redis 提供了两种持久化的方式,分别是 RDB(Redis DataBase)和 AOF(Append Only File)。 - -RDB,简而言之,就是在不同的时间点,将 redis 存储的数据生成快照并存储到磁盘等介质上; -AOF,则是换了一个角度来实现持久化,那就是将 redis 执行过的所有写指令记录下来,在下次 redis 重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。 - -其实 RDB 和 AOF 两种方式也可以同时使用,在这种情况下,如果 redis 重启的话,则会优先采用 AOF 方式来进行数据恢复,这是因为 AOF 方式的数据恢复完整度更高。 - -如果你没有数据持久化的需求,也完全可以关闭 RDB 和 AOF 方式,这样的话,redis 将变成一个纯内存数据库,就像 memcache 一样。 - -### Redis 主从 - -像 MySQL 一样,redis 是支持主从同步的,而且也支持一主多从以及多级从结构。 - -主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的 SORT 就可以由从服务器来承担。 - -redis 的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低 redis 的处理性能。 - -主从架构中,可以考虑关闭主服务器的数据持久化功能,只让从服务器进行持久化,这样可以提高主服务器的处理性能。 - -在主从架构中,从服务器通常被设置为只读模式,这样可以避免从服务器的数据被误修改。但是从服务器仍然可以接受 CONFIG 等指令,所以还是不应该将从服务器直接暴露到不安全的网络环境中。如果必须如此,那可以考虑给重要指令进行重命名,来避免命令被外人误执行。 - -### 参考资料 - -- [张彦飞-Redis 6 中的多线程实现方式比我预期的要差](https://zhuanlan.zhihu.com/p/523368070) -- [张彦飞-深度解析单线程的 Redis 如何做到每秒数万 QPS 的超高处理能力!](https://zhuanlan.zhihu.com/p/512502929) +### Redis 是什么 + +redis 是一个开源的、使用 C 语言编写的、支持网络交互的、可基于内存也可持久化的 Key-Value 数据库。[官网](https://redis.io)。 + +目前,Vmware 在资助着 redis 项目的开发和维护。 + +redis 的作者,他叫 Salvatore Sanfilippo,网名是 antirez,去他的博客逛逛,地址是 antirez.com,当然也可以去 follow 他的 github,地址是[http://github.com/antirez](http://github.com/antirez)。 + +Redis 是 K-V 存储的典型代表,它是一款开源(基于 BSD 许可)的高性能 K-V 缓存和存储系统。Redis 的 Value 是具体的数据结构,包括 string、hash、list、set、sorted set、bitmap 和 hyperloglog,所以常常被称为数据结构服务器。 + +### Redis 数据结构 + +redis 是一种高级的 key:value 存储系统,其中 value 支持五种数据类型: + +1. 字符串(strings) +2. 字符串列表(lists) +3. 字符串集合(sets) +4. 有序字符串集合(sorted sets) +5. 哈希(hashes) + 1. hashes 存的是字符串和字符串值之间的映射,比如一个用户要存储其全名、姓氏、年龄等等,就很适合使用哈希。 + +key 的命名规则: + +1. key 不要太长,尽量不要超过 1024 字节,这不仅消耗内存,而且会降低查找的效率; +2. key 也不要太短,太短的话,key 的可读性会降低; +3. 在一个项目中,key 最好使用统一的命名模式,例如 user:10000:passwd。 + +### Redis 持久化 + +redis 提供了两种持久化的方式,分别是 RDB(Redis DataBase)和 AOF(Append Only File)。 + +RDB,简而言之,就是在不同的时间点,将 redis 存储的数据生成快照并存储到磁盘等介质上; +AOF,则是换了一个角度来实现持久化,那就是将 redis 执行过的所有写指令记录下来,在下次 redis 重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。 + +其实 RDB 和 AOF 两种方式也可以同时使用,在这种情况下,如果 redis 重启的话,则会优先采用 AOF 方式来进行数据恢复,这是因为 AOF 方式的数据恢复完整度更高。 + +如果你没有数据持久化的需求,也完全可以关闭 RDB 和 AOF 方式,这样的话,redis 将变成一个纯内存数据库,就像 memcache 一样。 + +### 四种模式 + +[深入理解Redis的单机、主从、哨兵、集群四种模式](https://baijiahao.baidu.com/s?id=1761339110124241069&wfr=spider&for=pc) + +#### 单机 +#### 主从 + +像 MySQL 一样,redis 是支持主从同步的,而且也支持一主多从以及多级从结构。 + +主从结构,一是为了纯粹的冗余备份,二是为了提升读性能,比如很消耗性能的 SORT 就可以由从服务器来承担。 + +redis 的主从同步是异步进行的,这意味着主从同步不会影响主逻辑,也不会降低 redis 的处理性能。 + +主从架构中,可以考虑关闭主服务器的数据持久化功能,只让从服务器进行持久化,这样可以提高主服务器的处理性能。 + +在主从架构中,从服务器通常被设置为只读模式,这样可以避免从服务器的数据被误修改。但是从服务器仍然可以接受 CONFIG 等指令,所以还是不应该将从服务器直接暴露到不安全的网络环境中。如果必须如此,那可以考虑给重要指令进行重命名,来避免命令被外人误执行。 + +#### 哨兵 +#### 集群 + + +### 参考资料 + +- [张彦飞-Redis 6 中的多线程实现方式比我预期的要差](https://zhuanlan.zhihu.com/p/523368070) +- [张彦飞-深度解析单线程的 Redis 如何做到每秒数万 QPS 的超高处理能力!](https://zhuanlan.zhihu.com/p/512502929) diff --git "a/docs/study/devops/Linux\350\277\220\347\273\264-\345\270\270\347\224\250.md" "b/docs/study/devops/Linux\350\277\220\347\273\264-\345\270\270\347\224\250.md" index 6885761dd..c8a276d10 100644 --- "a/docs/study/devops/Linux\350\277\220\347\273\264-\345\270\270\347\224\250.md" +++ "b/docs/study/devops/Linux\350\277\220\347\273\264-\345\270\270\347\224\250.md" @@ -244,3 +244,10 @@ man pstree #展示进程命令行 pstree -a ``` + +### 创建大文件 + +```shell +fallocate -l 1G largefile +truncate -s 1G largefile +``` \ No newline at end of file diff --git a/docs/study/net/VLAN-VXLAN.md b/docs/study/net/VLAN-VXLAN.md new file mode 100644 index 000000000..9bb18c632 --- /dev/null +++ b/docs/study/net/VLAN-VXLAN.md @@ -0,0 +1,23 @@ +### VLAN + +VLAN(Virtual LAN),翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络(也就是广播域). + +VLAN作为传统的网络隔离技术,在标准定义中VLAN的数量只有4000个左右,无法满足大型数据中心的租户间隔离需求。另外,VLAN的二层范围一般较小且固定,无法支持虚拟机大范围的动态迁移. + +### VXLAN + +VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网),是由IETF定义的NVO3(Network Virtualization over Layer 3)标准技术之一,是对传统VLAN协议的一种扩展。VXLAN的特点是将L2的以太帧封装到UDP消息(即L2 over L4)中,并在L3网络中传输。是overlay网络的实现技术之一。 + +vxlan解决了什么关键问题 + +虚拟化服务器动态迁移 + +服务器从该二层交换机的一个端口迁移到另一个端口时,IP地址是可以保持不变的,VXLAN利用此设计理念,在数据中心IP网络基础上,构建一张全互联的二层隧道虚拟网络,保证任意两点之间都能通过VXLAN隧道来通信,并忽略底层网络的结构和细节,VXLAN为它们将整个数据中心基础网络虚拟成了一台巨大的“二层交换机(大二层)”,所有服务器都连接在这台虚拟二层交换机上。 + +大规模数据中心,海量租户隔离能力 + +在标准定义中VLAN的数量只有4000个左右,无法满足大型数据中心的租户间隔离需求。 VXLAN完美地弥补了VLAN的上述不足,一方面通过VXLAN中的24比特VNI字段。提供多达16M租户的标识能力 + +### 参考 + +- [csdn-vlan和vxlan](https://blog.csdn.net/ecloud_developer/article/details/120526041) \ No newline at end of file