BAT架构师分享之:大型网站技术架构

news/2024/5/18 22:52:50/文章来源:https://blog.csdn.net/weixin_33701251/article/details/92421699

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

早期的网站为了节省成本一般会设计成集中式系统,应用程序、数据库等都部署在一台服务器上。 但随着业务的快速度发展,逐渐出现瓶颈,按一定原则**(应用拆分、服务拆分、数据拆分、应用解耦)**,向分布式系统转型,涉及到以下环节改造。

主要环节

  • 业务拆分:将整个网站业务拆分成不同的应用,每个应用独立部署维护,应用之间通过RPC或消息队列通信。
  • 集群化(应用服务器;基于RPC的微服务应用等)
  • LVS负载均衡,负责将请求转发给不同业务集群
  • 反向代理服务器,常用的如Nginx
  • 应用服务器,servlet容器,如tomcat
  • 应用和数据服务分离,分别部署在不同的服务器
  • 后端应用合理分层,通常分为表现层或网关层、业务逻辑层、数据持久层
  • 缓存。分为两种:本地缓存;分布式缓存
  • CDN化。静态内容部署到CDN,就近获取,加速网站响应。
  • 数据库读写分离。数据库采用主从热备,应用服务器在写数据时访问主数据库,主数据库通过主从复制机制将数据更新同步到从数据库。
  • 分库分表,引入分布式数据框架
  • 引入NoSQL,支持海量数据存储
  • 借助elastics search等开源搜索引擎
  • 异步化,系统解耦。
  • 缩短业务流程,加快网站访问速度
  • 消除并发访问高峰

架构五要素:

  • 高性能
  • 可用性(Availability)
  • 伸缩性(Scalability)
  • 扩展性(Extensibility)
  • 安全性

1、高性能

性能的测试指标主要有:

  • 响应时间:指应用执行一个操作需要的时间
  • 并发数:指系统能够同时处理请求的数目
  • QPS:指单位时间内系统处理的请求量
  • 系统性能计数器:描述服务器或者操作系统性能的一些数据指标

性能优化,根据网站分层架构,可以分为三大类:

  • Web 前端性能优化
  • 减少 http 请求
  • 使用浏览器缓存
  • 启用压缩
  • CSS 放在页面最上面,JavaScript 放在页面最下面
  • 减少 Cookie 传输
  • 应用服务器性能优化:主要手段有 缓存、集群、异步
  • 多线程(设计为无状态,使用局部对象,并发访问资源使用锁)
  • 资源复用(单例,对象池)
  • 数据结构
  • 异步操作(消息队列,削峰作用)
  • 多台应用服务器组成一个集群共同对外服务,提高整体处理能力。
  • 使用 CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力
  • 应用服务器端,可以使用服务器本地缓存和分布式缓存(网站性能优化第一定律:优化考虑使用缓存优化性能)
  • 代码层面,也可以通过使用多线程、改善内存管理等手段优化性能。
  • 数据库服务器端,索引、缓存、SQL 优化等性能优化手段
  • NoSQL 数据库通过优化数据模型、存储结构、伸缩特性等
  • 存储服务器性能优化
  • 机械硬盘 vs. 固态硬盘
  • B+ 树 vs. LSM 树
  • RAID vs. HDFS

2、高可用

高可用的网站架构:目的是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问,主要手段数据和服务的冗余备份及失效转移

  • 高可用的应用:显著特点是应用的无状态性
  • 通过负载均衡进行无状态服务的失效转移
  • 应用服务器集群的 Session 管理
  • 高可用的服务:无状态的服务,可使用类似负载均衡的失效转移策略,此外还有如下策略
  • 超时设置
  • 异步调用
  • 服务降级
  • 限流
  • 高可用的数据:主要手段是数据备份和失效转移机制
  • 失效确认
  • 访问转移
  • 数据恢复
  • 冷备:缺点是不能保证数据最终一致和数据可用性
  • 热备:分为异步热备和同步热备
  • 数据一致性(Consisitency)
  • 数据可用性(Availibility)
  • 分区耐受性(Partition Tolerance)
  • CAP 原理
  • 数据备份
  • 软件质量保证
  • 自动化测试
  • 预发布验证
  • 灰度发布
  • 网站实时监控
  • 警报系统
  • 自动优雅降级
  • 用户行为日志采集(服务器端和客户端)
  • 服务器性能监控
  • 监控数据采集
  • 监控管理

3、伸缩性

大型网站需要面对大量用户的高并发访问和存储海量数据,不可能只用一台服务器就处理全部用户请求,存储全部数据。网站通过集群的方式将多台服务器组成一个整体共同提供服务。所谓伸缩性是指通过不断向集群中加入服务器的手段来缓解不断上升的用户并发访问压力和不断增长的数据存储需求。

衡量架构伸缩性的主要标准就是是否可以用多台服务器构建集群,是否容易向集群中添加新的服务器。加入新的服务器后是否可以提供和原来的服务器无差别的服务。集群中可容纳的总的服务器数量是否有限制。

对于应用服务器集群,只要服务器上不保存数据,所有服务器都是对等的,通过使用合适的负载均衡设备就可以向集群中不断加入服务器。

对于缓存服务器集群,加入新的服务器可能会导致缓存路由失效,进而导致集群中大部分缓存数据都无法访问。虽然缓存的数据可以通过数据库重新预热,但是如果应用已经严重依赖缓存,可能会导致整个网站崩溃。需要改进缓存路由算法保证缓存数据的可访问性。

关系数据库虽然支持数据复制,主从热备等机制,但是很难做到大规模集群的可伸缩性,因此关系数据库的集群伸缩性方案必须在数据库之外实现,通过路由分区等手段将部署有多个数据库的服务器组成一个集群。

至于大部分 NoSQL 数据库产品,由于其先天就是为海量数据而生,因此其对伸缩性的支持通常都非常好,可以做到在较少运维参与的情况下实现集群规模的线性伸缩。

概括起来伸缩性的分为如下几个方面:

  • 应用服务器集群的伸缩性设计
  • 轮询(Round Robin, RR)
  • 加权轮询(Weighted Round Robin, WRR)
  • 随机(Random)
  • 最少链接(Least Connections)
  • 源地址散列(Source Hashing)
  • DNS 域名解析负载均衡
  • 反向代理负载均衡(在 HTTP 协议层面,应用层负载均衡)
  • IP 负载均衡(在内核进程完成数据分发)
  • 数据链路层负载均衡(数据链路层修改 mac 地址,三角传输模式,LVS)
  • 分布式缓存集群的伸缩性设计
  • Memcached 客户端(包括 API,路由算法,服务器列表,通信模块)
  • Memcached 服务器集群
  • 分布式缓存的一致性 Hash 算法(一致性 Hash 环,虚拟层)
  • 数据存储服务集群的伸缩性设计
  • 关系数据库集群的伸缩性设计
  • NoSQL 数据库的伸缩性设计

4、可扩展

系统架构设计层面的“开闭原则”,构建可扩展的网站架构

  • 利用分布式消息队列降低耦合性
  • 分布式消息队列
  • 事件驱动架构(Event Driven Architecture)
  • 利用分布式服务打造可复用的业务平台
  • 分布式服务框架设计(Thrift,Dubbo)
  • 可扩展的数据结构(如 HBase的 ColumnFamily 设计)
  • 利用开放平台建设网站生态圈

5、网站的安全架构

XSS 攻击和 SQL 注入攻击是构成网站应用攻击最主要的两种手段,此外还包括 CSRF,Session 劫持等手段。

  • 攻击与防御
  • Error Code
  • 表单 Token
  • 验证码
  • jsonp请求的,Referer 校验
  • SQL 注入
  • html 危险字符转义
  • XSS 攻击:跨站点脚本攻击(Cross Site Script)

对js转义,使其失去执行功能,只作为纯字符串展示

  • CSRF 攻击:跨站点请求伪造(Cross Site Request Forgery)

防范:httpOnly;增加token校验;通过Referer识别。

  • 网站安全漏洞扫描

转载于:https://my.oschina.net/u/3954808/blog/3049960

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_769996.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

仿某某网站模板thinkphp_建网站一般多少钱?300足够了

网站,就相当于公司在互联网的上一个门面,所以其实不管什么行业,公司规模大小,个人建议还是都应该建一个属于自己公司的官网。再说,现在建一个网站真是非常的便宜,不像之前动辄上万,少则大几千&a…

php旅游管理系统,基于Laravel框架开发的旅游网站管理系统PHP源码

源码介绍旅游网站管理系统是一款基于Laravel框架开发的在线旅游网站系统,一个类似企业网站的张家界旅游网站,主要目标是为了实现对张家界的各个景点,文化艺术,当地生活的描述。同时实现可以登陆注册网站上订购门票和酒店&#xff…

anguler 画面布局适应屏幕大小_自适应与响应式网站设计特点是什么?有哪些优缺点?...

自从2007年第一代iPhone问世以来,移动设备在日常使用中变得更加方便。目前约有25亿人使用智能手机来完成日常活动,其中包括浏览网站。由于越来越多的用户更喜欢使用移动设备而不是更大的电脑,因此网页设计师们将大部分精力都放在了完善这类设…

linux虚拟主机网站,linux网站中虚拟主机的实现

一台linux中网站虚拟主机的完成主要有三种方式:a、根据ip地址;b、根据端口号;c、根据域名。一下为完成进程:(本试验的linux虚机系统为rhel5.6)1、基于域名的实现:这种方式需要搭建dns域名服务器。#cat/etc/sysconfig/n…

网站二级页面后总有html,二级网页打不开,详细教您浏览器二级页面打不开怎么解决...

很多电脑用户使用浏览器进行一些网页上的操作,不过有用户遇到了浏览器可以正常打开网站的主页,但是网站中的其他链接却打不开,咋回事?那么用户遇到二级网页打不开情况该怎么办?下面,小编跟大家介绍浏览器二…

Android程序员35岁之后还在招聘网站上投简历找工作丢人吗?

5.没啥明显长处,但做事踏踏实实,交给你的事情不会出漏子,和你工作过的人觉得和你搭档舒心。 6.虽然有个性,但也有创意,能做别人想不出来的好策划,好设计。 7.要么擅长娱乐酒席,要么擅长活动组…

文件服务器空间,网站文件服务器空间

网站文件服务器空间 内容精选换一换环境是基因容器服务所需要使用的计算资源的集合。基因容器的环境由云容器实例和云容器引擎提供。云容器实例云容器实例(Cloud Container Instance,CCI)服务提供 Serverless Container(无服务器容器)引擎,让您无需创建和…

java企业网站_企业实时Java

java企业网站当人们听到实时计算时,他们常常会误以为它们必须是快速系统,并且几乎总是用于控制机械系统。 的确,在大多数情况下,所需的响应时间很快,但是速度并不是定义实时系统的因素。 实时环境的真正核心是&#xf…

一步一步SharePoint 2007之六:改变一个网站的导航栏

摘要  上一篇文章中,我们讲到向网站中添加了一个子网站,但是子网站的在导航栏中位置却不是我们希望的位置,这让我们的女神计划受到了一定的阻碍,那么,我们有没有办法改变她在导航栏中的位置呢?  本篇文…

如何利用反向代理提高网站性能

1.什么是正向代理和正向代理服务器? 正向代理就是通常所说的代理,是某台电脑通过一台服务器来上Internet网的这种方式,其中这台电脑就叫客户机,这台服务器就叫正向代理服务器也就是通常所说的代理服务器。在这种方式中&#xff0c…

网站建设流程

第一步: 客户提出建站申请有意向 1:客户提出网站建设基本要求,我们进行需求分析; 2:客户提供相关文件及图片资料。 A:公司介绍 B:项目描述 C:网站基本功能需求 D:基本设计要求 第二步:制定网站建设方案 1.双方就网站建设内容进行协商,修改、补…

ASP.NET的SEO: 服务器控件背后——SEO友好的Html和JavaScript

本系列目录 假设你需要从一个页面转向其他页面&#xff0c;下面有很多种方式&#xff0c;你是如何选择的呢&#xff1f;你能清晰的说明理由么&#xff1f;<%--链接的表现形式--%><asp:HyperLink ID"HyperLink1"runat"server"NavigateUrl"~/…

windows2003 构建SSL网站

实验之前&#xff0c;说说公钥基础结构&#xff08;PKI&#xff09;&#xff0c;它是使用公钥技术和数字证书来确保系统信息安全并负责验证数字证书持有者的身份的一种体系PKI由4部分构成&#xff0c;公钥加密技术、数字证书、CA&#xff08;证书颁发机构&#xff09;、RA&…

JavaWeb-IDEA利用Tomcat发布网站

JavaWeb入门1、基本概念1.1、Web和JavaWeb1.2、 B/S架构1.3、 静态资源1.4、 动态资源1.5、 数据库1.6、 HTTP协议1.7、 Web服务器2、HTTP2.1、协议特点2.2、请求数据格式2.3、响应数据格式2.4、Java模拟服务端3、状态码大类3.1、常见的响应状态码4、Tomat4.1、下载安装4.2、配…

卢松松:每个网站都该有个监测服务

每次收到HostUCan的邮件通知&#xff0c;就知道空间又挂了&#xff0c;心情就无比惆怅。但也使我第一时间知道网站运行是否正常&#xff0c;总能第一时间找到空间商&#xff0c;让他们解决问题。 (手机收到的服务器宕机短信) 使用网站监测服务的好处不言而喻&#xff0c;国内知…

WEB开发中两个新建模版的比较(仅针对VS2008讨论):新建网站》ASP.NET网站和新建项目》ASP.NET WEB 应用程序...

一直以来自己不是很清楚这两者之间到底有什么区别&#xff0c;只知道怎么去用&#xff0c;今天看书时又看到这个问题了&#xff0c;所以就网罗了一下大家的观点&#xff0c;并自己做了一下比较&#xff0c;再次声明&#xff0c;目前所有的比较内容都是建立在VS2008开发环境下的…

卢松松:每个网站都该有个监测服务

每次收到HostUCan的邮件通知&#xff0c;就知道空间又挂了&#xff0c;心情就无比惆怅。但也使我第一时间知道网站运行是否正常&#xff0c;总能第一时间找到空间商&#xff0c;让他们解决问题。 (手机收到的服务器宕机短信) 使用网站监测服务的好处不言而喻&#xff0c;国内知…

网站global.asa木马

最近在查看网站流量统计的时候发现流量有些异常&#xff0c;于是检查网站程序的时候发现程序多出了一个文件。文件名是Global.asa,上传时间为9月13日晚上&#xff0c;我的网站使用的是开源的企业建站系统&#xff0c;一开始没注意过这个问题&#xff0c;就在昨天我的网站流量一…

解决谷歌浏览器打开搜狗网页的问题(Chrome首页被流氓网站劫持)

关于谷歌浏览器打开后是搜狗网址导航的问题 问题描述&#xff1a; 今天需要装一个软件&#xff0c;下载安装后&#xff0c;就感觉不是太对&#xff0c;果断卸载。 原以为就应该结束了&#xff0c;谁知道才是开始。打开谷歌之后呢&#xff0c;竟然成了搜狗网址导航&#xff0c;…

暑期做站长:建站方向与程序推荐

暑假马上到了&#xff0c;很多童鞋会在这期间拥有人生中的第一个网站&#xff0c;本文将推荐当下国内比较流行的建站程序&#xff0c;虽然只是个引子&#xff0c;但希望对即将建站的朋友有所帮助。 一&#xff0c;建资讯站 资讯站是多数个人站长首选&#xff0c;而资讯站的CMS程…