小志资源网 - 综合小刀娱乐网、小黑善恶资源网「资源免费」安全无毒 我要投稿 广告合作 免费流量卡Q群
您的位置:小志资源网 > SEO优化 > 正文

网站结构设计如何做 大型网站架构设计方法是什么

作者:小志 时间:2020-11-01 14:44 分类:SEO优化

1604026982565473.jpg

网站架构规划是一个循序渐进的过程,环绕“功用、可用性、伸缩性、扩展性、安全性”打开,下面是个人关于网站架构方面的一些总结,不到之处请大家多多批判。

前端

  • 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的运用,必定是未来干流的架构思想,作者正在努力学习。关于本文内容,欢迎大家活跃弥补。


欢迎 发表评论: