运维与架构师的两大主题?
1、数据
项目经验:
全网数据备份解决方案:数据库数据,图片资源等,程序,运维配置文件,其他相关的。(丢失了线上的环境,保证可以恢复)
数据库数据:主从(解决物理故障),备机开binlog保持1天以上,按天做备份(丢失数据不会超过1分钟)。
百度案例:一主多从,其中有个从不提供服务,实时同步 drbd(基本不丢数据)
M-S1:(不提供服务,专做备份,半同步插件)
-S2:
图片资源等:
1、每天晚上全量备份,1T以下
增量备份:
01、rsync 小文件比对时间很长
02、drbd 浪费资源,备节点不可用
03、按时间增量,201606 201607
04、更新资源写log,让rsync直接通过log同步,不用再进行比对
05、innotify,sersync
全量备份:
01、drbd
02、程序双写,提交数据写到两个存储。
03、分布式存储 NoSQL,mysql,mongodb同步机制做存储
04、分布式架构方案。
程序运维的配置文件:都需要放到SVN里,再向外发布
按天备份即可:维护好SVN,就可以
办公室SVN-->IDC测试
-->IDC正式
备份思想:
需求分析:对于每个项目或者业务点,事先定好备份计划。
数据库:数据规划好可以丢失多少,10分钟和1天,方案不同。
--> 需求谁来提出来?运维总监,开发总监,团队讨论。
机房迁移,OPENSSL升级,数据库升级
2、7x24小时不间断提供服务
集群lvs,nginx,haproxy,f5,netscaler
高可用keepalive,heartbeat,nginx,haproxy
性能/扩展:优化,用户体验要好,业务可以自动扩展收缩
监控:运维级别(网络连通性,磁盘,DNS)
应用级别(jvm垃圾回收,访问速度,流量pv抖动)
业务级别(按产品线监控,流量,负载,访问请求,错误日志50X 40x,接口存活以及流量)
1、降低服务器访问压力
可以将不同的资源放到不同的服务器上,可以降低单台服务器的压力,也可以加快整个网站的访问速度。另外,不同的服务器,减少cookie的传送,也可以降低带宽
2、页面静态化
直接在服务器端生成静态页面,避免频繁访问数据库,降低数据库压力。
SHTML server sider incluee SSI 服务器端html拼接技术。
CDN对动态地址,不会做优化处理,对与请求静态的文件或者地址,进行优化。所以页面静态化也显得很有必要了
有些不适合静态化的,比如有权限的页面,需要注册登陆后才能浏览,这就不能静态化。
3、CDN
通过DNS解析,让不同区域的用户,访问最近的区域,使访问速度更快
现在很多企业没有能力搭建CDN服务,可以购买第三方CDN优化。开发需要留意会因为有CDN,开发会有不同。
CDN对动态地址,不会做优化处理,对与请求静态的文件或者地址,进行优化。所以页面静态化也显得很有必要了
4、js压缩和csssprite
用工具把js文件压缩,可以减少服务器和网络的压力,加快网页加载速度。
把所有的图片压缩到一个图片上,显示的时候利用CSS偏移就可以显示不同的图片。
访问不同的资源,可能请求不同的服务器,对于session可能存在不同服务器之间没有同步,造成需要重新登陆的情况,因此session放到专门的服务器,每次都去同一个地方访问session,就避免了这个问题
5、反向代理
用户向web发送请求的时候,并不是直接向服务器请求,先请求反向代理服务器,然后由反向代理服务器请求资源服务器。反向代理起到中转者的角色。
反向代理服务器可以米面慢速Internet占用Web服务器的连接数
反向代理服务器还可以起到安全和负载均衡的优点。
6、分离
文件服务器和web服务器分离:不同的事,不同服务器完成
上传和下载分离
消耗资源的处理(视频转码,图片加水印)和web服务器分离
数据库读写分离
数据库分库,分表
7、缓存-->降低服务器,数据库压力的最好方法
8、搜索引擎技术:全文检索
sql like的问题:数据库搜索时,用like查询 让整个数据库很容易卡死
全文检索的需求:高效率;模糊匹配
Lucene()全文检索的工具-->效率低
Solr:基于java的封装了Lucene-->效率高
技术都是混合架构的,适合的地方,使用适合的技术,不存在非谁不可的问题。
9、高并发的场景
秒杀和抢单:不能出现重复的问题
方法1:加锁,只能有一个线程进行操作。缺点:效率低,慢。 高并发场景,不使用这种方案
方案2:两个阶段处理,自由抢,然后排队裁判。
文章的阅读数:避免同时并发加1
方法1:加锁,只能有一个线程进行操作。缺点:效率低,慢。
方法2:每条阅读单独记录,然后汇总统计。
10、云计算 按需服务
比如12306平时10w够用,春运的时候需要100w,这就没有必要买100w台服务器,利用云服务,按照需要买需要的服务就可以了
随着云服务的深入,越来越多的企业,会去掉低端的网管,所以应该有危机感。