计算机网络
路由器¶
参考:路由器——既可以隔离冲突域,又能隔离广播域
路由器(Router)又称为网关设备(Gateway),用于连接多个逻辑上分开的网络,是连接互联网中各局域网和广域网的设备
路由操作在网络层进行,路由器属于网络层的互联设备
交换机¶
参考:交换机——可以隔离冲突域,但是不能隔离广播域
交换机(Switch)作用于数据链路层,通过MAC地址为接入交换机的任意两个节点提供独享的电信号通路,通常分为广域网交换机和局域网交换机
集线器¶
参考:集线器——不能隔离冲突域
集线器(Hub)主要功能是对接收到的信号进行再生放大,以扩大网络传输距离
集线器工作在局域网环境,属于物理层的互联设备
Ping所用的ICMP类型是什么?ICMP类型字段(Type)和代码字段(Code)含义汇总
这个太难了,变态操作系统
df [选项]... [FILE]...
- 文件-a, --all 包含所有的具有 0 Blocks 的文件系统
- 文件--block-size={SIZE} 使用 {SIZE} 大小的 Blocks
- 文件-h, --human-readable 使用人类可读的格式(预设值是不加这个选项的...)
- 文件-H, --si 很像 -h, 但是用 1000 为单位而不是用 1024
- 文件-i, --inodes 列出 inode 资讯,不列出已使用 block
- 文件-k, --kilobytes 就像是 --block-size=1024
- 文件-l, --local 限制列出的文件结构
- 文件-m, --megabytes 就像 --block-size=1048576
- 文件--no-sync 取得资讯前不 sync (预设值)
- 文件-P, --portability 使用 POSIX 输出格式
- 文件--sync 在取得资讯前 sync
- 文件-t, --type=TYPE 限制列出文件系统的 TYPE
- 😄文件-T, --print-type 显示文件系统的形式
- 文件-x, --exclude-type=TYPE 限制列出文件系统不要显示 TYPE
- 文件-v (忽略)
- 文件--help 显示这个帮手并且离开
- 文件--version 输出版本资讯并且离开
Linux du命令用于显示目录或文件的大小。
du会显示指定的目录或文件所占用的磁盘空间。
语法
du [-abcDhHklmsSx][-L <符号连接>][-X <文件>][--block-size][--exclude=<目录或文件>][--max-depth=<目录层数>][--help][--version][目录或文件]
tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。
tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。
命令格式:
负载均衡算法优缺点
轮询(Round Robin)
轮询是一种很简单的实现,依次将请求分配给后端服务器。优点就是实现简单,请求均匀分配。 缺点也恰恰在于请求均匀分配,因为后端服务器通常性能会有差异,所以希望性能好的服务器能够多承担一部分。也不适合对长连接和命中率有要求的场景。
加权轮询(Weighted Round Robin)
加权本质是一种带优先级的方式,加权轮询就是一种改进的轮询算***询算法是权值相同的加权轮询。需要给后端每个服务器设置不同的权值,决定分配的请求数比例。这个算法应用就相当广泛了,对于无状态的负载场景,非常适合。 优点解决了服务器性能不一的情况,缺点是权值需要静态配置,无法自动调节。也不适合对长连接和命中率有要求的场景。
随机Random
随机把请求分配给后端服务器。请求分配的均匀程度依赖于随机算法了,因为实现简单,常常用于配合处理一些极端的情况,如出现热点请求,这个时候就可以random到任意一台后端,以分散热点。当然缺点也不言而喻。
哈希Hash
哈希算法想必大家并不陌生,应用最为广泛。根据Source IP、 Destination IP、URL、或者其它,算hash值或者md5,再采用取模。比如有N台服务器: S1、S2、S3……Sn
hash值 % N
显然,相同的请求会被映射到相同的后端。这非常适合维护长连接和提高命中率。 但是它天生也有一些缺点。比如说,现在某个请求通过哈希被映射到S3上去了,如果S3宕机了,就不得不二次Hash,重新计算路由时会剔除宕机的后端。
hash值 % (N - 1)
这样会导致几乎所有请求路由产生变化。由此导致命中率的急剧下降。当然一般生产环境通过提供S3的备机来解决这种问题,但是主备之间切换也是需要时间,它们之间的数据同步也是有延时的。所以需要根据业务场景来权衡了。 扩容也会有类似的问题,计算路由公式变为:
hash值 % (N + 1)
为了解决这种问题,一般生产环境可能采用成倍扩容的方式。N -> 2N,这样求路由可以做到与原来保持一致。当然必不可少的造成机器资源的浪费。请各位看官自行权衡。 对于热点请求,这种Hash算法也可能成在雪崩效应,取决于采用何种Hash,基于URL还是基于IP等。总之,不能把热点请求路由到单机上,否则单机撑不住,会逐个逐个被打爆,也就是雪崩效应。
最小连接数LC
最小连接数(Least Connection),把请求分配给活动连接数最小的后端服务器。它通过活动来估计服务器的负载。比较智能,但需要维护后端服务器的连接列表。
加权最小连接数WLC
加权最小连接数(Weighted Least Connection),在后端服务器性能差异较大的情况下,可以优化LC的性能,高权值的服务可以承受更多的连接负载。
最短响应时间LRT
最短响应时间(Least Response Time),把请求分配给平均响应时间最短的后端服务器。平均响应时间可以通过ping探测请求或者正常请求响应时间获取。 RT(Response Time)是衡量服务器负载的一个非常重要的指标。对于响应很慢的服务器,说明其负载一般很高了,应该降低它的QPS。
之前有人说使用CPU占用率作为负载均衡的指标,只能说没理解CPU占用率的实质。理论上CPU占用率是越高越好,说明服务充分利用了CPU资源。但对于设计不合理的程序导致的CPU占用过高这是程序的设计问题,并不违背这条理论。
全部评论
(1) 回帖