Skip to content

Commit

Permalink
1
Browse files Browse the repository at this point in the history
  • Loading branch information
YiRanCN committed May 10, 2024
1 parent 8733c9d commit b9194b2
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 54 deletions.
24 changes: 24 additions & 0 deletions docs/study/back/错误排除集锦.md
Original file line number Diff line number Diff line change
@@ -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请求。
117 changes: 63 additions & 54 deletions docs/study/db/NoSQL/Redis.md
Original file line number Diff line number Diff line change
@@ -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)
7 changes: 7 additions & 0 deletions docs/study/devops/Linux运维-常用.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,3 +244,10 @@ man pstree
#展示进程命令行
pstree -a
```

### 创建大文件

```shell
fallocate -l 1G largefile
truncate -s 1G largefile
```
23 changes: 23 additions & 0 deletions docs/study/net/VLAN-VXLAN.md
Original file line number Diff line number Diff line change
@@ -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)

0 comments on commit b9194b2

Please sign in to comment.