1、存储方式:
Memcached 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
Redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(笔者注:有快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。
2、数据支持类型:
Redis在数据支持上要比Memcached多的多。
3、使用底层模型不同:
新版本的Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
4、运行环境不同:
Redis目前官方只支持LINUX 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上。
三 .MySQL主从同步的原理
主库将变更写入 binlog 日志,然后从库连接到主库之后,从库有一个IO 线程,将主库的 binlog 日志拷贝到自己本地,写入一个 relay 中继日志中。接着从库中有一个 SQL 线程会从中继日志读取 binlog,然后执行 binlog 日志中的内容,也就是在自己本地再次执行一遍 SQL,这样就可以保证自己跟主库的数据是一样了。
四 .Redis实现主从工作原理
在master和slave互通之后,<1>首先,slave会向master发送sync同步指令;<2>当Master收到指令后,将在后台启动****存盘进程,同时收集所有修改的数据命令;<3>master完成后台存盘后,传递整个数据文件到slave;<4>slave接受数据文件,加载到内存中,完成首次同步,后续有新数据产生时,master继续收集数据修改命令。
五 .keepalived高可用原理
Keepalived是一个用C语言写的路由软件,以VRRP协议为实现基础的,即虚拟路由冗余协议;由多台相同功能的路由器组成一个组,由一个master(有一个对外提供服务的vip)和多个backup组成,master会发组播,当backup收不到vrrp包是就认为master宕机了,这时需要根据VRRP优先级来选举一个backup当master。
六 .Nginx基本优化有哪些
- 最大化worker_connections(1024)
- 启用Gzip压缩(压缩文件大小,减少了客户端http的传输带宽)
- 为静态文件启用缓存(减少带宽并提高性能)
- Timeouts
- 禁用access_logs
- 调整worker_processes
七 .Nginx常见负载均衡策略及原理
轮询(每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除)
;加权轮询(指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况)
;ip_hash(每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器)
;url_hash(按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器)
;fair(按后端服务器的响应时间分配请求,响应时间短的优先分配
八 .简述linux的优化方案
【硬件方面】
-
cpu
-
内存 (增加内存)
-
存储 (使用RAID 0+1 读写速度快、完全容错但成本高,用的比较多 4块盘 利用率50%,使用ssd)
-
网卡 (使用千兆网卡,或者双网卡绑定)
【系统方面 】
-
内核参数优化(网络相关、内存相关、缓冲缓存相关)
-
文件系统方面(分区调优,格式化时根据存储文件特性,指定合适的块大小,noatime,日志隔离,软raid,有效使用/dev/shm,关闭不必要的服务)
-
cpu优化 (进程绑定,中断绑定)
【应用程序方面】
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!