引流在校大学生粉丝方法,大型网站结构设计方案总结(网站设计步骤和思绪)

大型网站架构设计是一个循序渐进的历程,围绕“性能、可用性、伸缩性、扩展性、平安性”睁开,下面是小我私家关于网站架构方面的一些总结,不到之处请人人多多指斥。

前端

  • CDN加速:CSS/JS/图片等静态资源使用CDN加速,设置缓存时间、Referer限制(防盗链)等举行流量优化;
  • 削减HTTP请求:将CSS/JS/图片等静态资源合并,可以行使webpack等前端构建工具举行处置
  • 启用浏览器缓存和文件压缩:压缩图片、JS/CSS混淆压缩、Web服务器开启Gzip压缩&设置文件expire缓存时间;
  • 异步加载:动态接口通过Ajax异步加载,削减网络请求(可以通过JSONP或者设置Access-Control-Allow-Origin举行跨域);
  • 使用验证码:使用短信或图像验证码,提高验证码的复杂度及多样性,缓解羊毛党带来的流量打击;
  • 削减Cookie传输:Cookie包含在每次请求和响应中,太大的Cookie会严重影响数据传输,例如针对CDN接纳自力域名,可以削减静态资源加载携带Cookie信息;

缓存

关于缓存,永远要记着二八定律:80%的营业接见集中在20%的数据上。将热门数据举行缓存,可以降低网络I/O和磁盘I/O,极大提升响应速率,除了前端内陆资源缓存外,服务端缓存常见做法如下:

如何注册网站域名(注册手机域名的操作步骤)

  • 页面静态化:缓存整个页面,或者局部缓存,削减数据读取和运算频率;
  • 数据缓存:充实行使NoSQL数据库,例如memcached、redis、mongodb等,可以部署集群或分布式缓存,提高缓存掷中率,削减数据接见的压力,可以举行缓存预热、预先加载热门数据,同时需要防止缓存穿透

新闻行列

  • 异步解耦:行使Httpsqs、RabbitMQ、Kafka等行列或新闻中间件,将耗时/非即时性操作通过行列举行异步处置,提高服务器响应速率,以此降低对资源的并发接见。遵照一个原则:任何可以晚点做的事情都应该晚点再做
  • 削峰填谷:由于流量是颠簸转变的,岑岭和低谷差距很大,可以将一些操作存储到MQ行列中,消费端通过拉取的方式,而且拉去速率有消费端来控制,则就可以控制流量趋于平稳,到达了削峰填谷的目的,或者提及到了流控的目的。

数据库

使用缓存后,大部分数据读取操作都不用通过数据库完成,但是在缓存不掷中、缓存过时和所有的写操作时需要接见数据库。当用户到达一定规模后,数据库会由于负载压力过高而成为瓶颈,常见做法如下:

  • 读写星散:行使Mysql主从复制机制搭建读写星散集群,在客户端实现或者服务端行使中间件(例如MyCAT)实现读写星散;
  • 分库分表:针对差别营业类型,举行分库,部署到差别服务器上,削减单服务器压力,同时针对大表,凭据一定条件(如用户ID取模、ID局限)举行水中分表,削减单表读写压力;
  • 数据库毗邻池:充实行使毗邻复用,解决数据库毗邻历程需要占用资源,影响响应速率等问题,PHP自己没有毗邻池,可以行使第三方框架实现(例如SMProxy);
  • 硬件优化:行使磁盘阵列(RAID)提升数据可靠性,资金足够的话可以换SSD硬盘;

负载平衡

  • 营业拆分:凭据URL拆分营业,分发流量到差别的服务器组,防止单一功效模块卡住,而影响整个营业,主要遵照SOA的架构思绪,将营业模块打散(鸡蛋不要放在一个篮子内里)
  • 反向署理负载平衡:充实行使Nginx/Haproxy/LVS反向署理负载平衡,搭建服务器集群,提升并发处置能力;
  • DNS负载平衡:DNS剖析可以依据差别网络运营商、区域举行划分剖析、从而实现DNS层面负载平衡;

代码

  • 多线程:充实行使多CPU优势举行数据批处置
  • :在高并发情形下,对统一资源读写接见容易泛起脏读、幻读,这个时刻需要对焦点资源枷锁,行使Redis或者Zookeeper等可以实现分布式锁;
  • 设计模式:充实行使设计模式,实现逻辑解耦、分层和资源服用,例如单利模式、观察者模式等;
  • 数据结构和算法:好的数据结构和算法可以给程序性能带来很大提升、例如链表查找、快速排序等;
  • 垃圾接纳:优越的编程习惯,例如即时清算内存占用大的变量、制止操作的数据量大等都可以制止泛起内存泄露(OOM)的情形发生。
  • SQL查询优化:SQL执行效率一样平常是影响响应速率的要害,可以开启SQL慢查询日志,对执行效率慢的SQL语句举行优化;
  • GIT多分支:优越的分支治理对于CI/CD、版本测试有很好的作用,建议参考git-flow举行一样平常Git协作。
  • 日志:统一的日志输出尺度,有利于举行数据追踪和问题排查。

冗余

  • 数据定期备份:定期全量备份+主从同步增量备份,例如MySQL/Redis主从复制举行增量备份、Mysqldump全量备份、Redis行使RDB或者AOF举行备份;
  • 集群:一定数目的备用服务器,可以保障系统的高可用,防止单点故障,可以连系Keepalived+LVS/HAProxy/Nginx等实现数据库/Web服务器/缓存/新闻中间件高可用集群;

自动化

  • CI/CD:行使成熟的CI/CD机制实现自动化测试、代码检测,自动化公布,例如可接纳Git+Jenkins+Docker搭建CI/CD工作流。
  • 自动化部署:针对跨越30台的服务器部署,可以接纳ansible举行批量治理
  • 自动监控/报警:监控用户行为日志、服务器日志等 ,可连系zabbix+ELK举行实行;
  • 自动降级和资源调剂:微服务架构范围,作者也在努力学习中。

平安

  • 二次验证:充实手机验证/人脸识别举行二次验证,保障操作的真实性;
  • web防火墙:传统防火墙仅限于包过滤,网络和端口地址转换(NAT)和VPN等功效。它凭据端口,协媾和IP地址做出决议;Web防火墙(WAF)则提供了HTTP/HTTPS接见请求监控、自定义过滤规则、Web攻击防护、平安合规等功效;可以行使阿里云等提供的WAF服务或者基于Nginx+lua等实现的类似API网关实行类似功效;
  • 内外网间隔:露出出来的IP和端口越少,平安系数越高;例如数据库服务、缓存服务、中间件等只管只允许内外接见,若是确实需要可以通过路由转发或反向署理实现;
  • 数据加密:充实行使非对称加密,例如启用https, rsa加密等,保障数据传输的平安性;
  • 网络攻击:需要防止DDOS攻击、XSS攻击、SQL注入、CSRF等,常见手段CDN加速、高仿IP、Linux内核优化、数据输入输出过滤、Referer限制、表单添加随机token/验证码等;
  • 信息平安:对于垃圾信息、敏感信息可以接纳第三方解决方案(例如网易云盾、百度AI等)对文本、图片、音频、视频等举行过滤和审核。

总结

架构的演变,遵照着”分层->支解->分布式”的思绪不停深入,是随着营业的增进,不停积累履历、优化、改良的历程。营业生长是架构生长的主要气力,架构的焦点价值是服务营业的天真生长。所有的架构设计必须以领会营业特点作为起点,需要思量互联互通、负载平衡、网络、开发、缓存、存储、数据库、平安性等层面,这些层面看似一个整体,任何一个环节出问题都可能导致整个溃逃,以是一个高可用、高并发的平台还少不了监控、开发、运维等角色通力协作。

大型网站的架构设计,作者也在不停的学习和实践,特别是微服务架构和K8S的运用,一定是未来主流的架构头脑,作者正在努力学习。关于本文内容,迎接人人努力弥补。

本文来源于自互联网,不代表n5网立场,侵删。发布者:虚拟资源中心,转载请注明出处:https://www.n5w.com/194966.html

(0)
打赏 微信扫一扫 微信扫一扫
虚拟资源中心虚拟资源中心网络小白
上一篇 2020年6月23日 03:34
下一篇 2020年6月23日 03:34

相关推荐

联系我们

电话:

在线咨询:点击这里给我发消息

邮件:@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

公众号