服务器后台设计与大型网站设计,「大型网站架构设计」—— 前言

news/2024/5/20 16:09:15/文章来源:https://blog.csdn.net/weixin_32552195/article/details/119691037

嘿,笔者的个人博客已经孵化完成啦🐣,欢迎大家来逛逛。以后的文章也会在博客进行首发,快来关注我吧,我们继续一起探讨技术一同进步~

本文主要是笔者对《大型网站技术架构》一书的总结归纳。主要通过两种方式展现,一是通过「思维导图」的形式输出;另一种,就是本文以图文的形式更加详细和展开的描述‘大型网站技术架构’的方方面面。

一,前言

1.1 与传统企业应用系统相比,大型互联网应用系统有以下特点

高并发、大流量

高可用

海量数据

用户分布广泛,网络情况复杂

安全环境恶劣

需求快速变更,发布频繁

渐进式发展

1.2 大型网站架构图

86ebc9872bf7

image

根据大型网站的特点,该架构能够解决大多数的技术问题。下面我们将这个架构图进行简单的分解。

1.2.1 分层

分层是企业应用系统中最常见的一种架构模式,将系统在横向维度(功能架构维度)上切分成几个部分,每个部分负责一部分相对比较单一的职责,然后通过上层对下层的依赖和调用组成一个完整的系统。

在大型网站架构中采用的分层结构,会将网站软件系统分为“应用层”、“服务层”、“数据层”。

应用层

负责具体业务和视图展示,如网站首页及搜索输入和结果展示

服务层

为应用层提供服务支持,如用户管理服务,购物车服务等

数据层

提供数据存储访问服务,如数据库、缓存、文件、搜索引擎等

86ebc9872bf7

image

虽然分成架构模式最初的目的是规划软件清晰的逻辑结构便于开发维护。但在网站的发展过程中,分层结构对网站支持高并发向分布式方向发展至关重要。因此在网站规模还很小的时候就应该采用分层的架构,这样将来网站做大时才能更好地应对。

1.2.2 分割

如果说分层是将软件在横向方面进行切分,那么分割就是在纵向(业务逻辑维度)方面对软件进行切分。

网站越大,功能越复杂,服务和数据处理的种类也越多,将这些不同的功能和服务分割开来,包装成高内聚低耦合的模块单元。这些模块不管在逻辑上还是物理部署上,都可以是独立的。同样在服务层也可以根据需求将服务分割成合适的模块。

优点:

一方面有助于软件的开发和维护;

另一方面,便于不同模块的分布式部署,提高网站的并发处理能力和功能扩展能力。

1.2.3 分布式

分布式意味着可以使用更多的计算机完成同样的功能,计算机越多,CPU、内存、存储资源也就越多,能够处理的并发访问和数据量就越大,进而能够为更多的用户提供服务。

分布式在解决网站高并发问题的同时也带来了其他问题:

分布式意味着服务调用必须通过网络,这可能会对性能造成比较严重的影响;

服务器越多,服务器宕机的概率也就越大,一台服务器宕机造成的服务不可用可能会导致很多应用不可访问,使网站可用性降低;

数据在分布式的环境中保持数据一致性也非常困难,分布式事务也难以保证,这对网站业务正确性和业务流程有可能造成很大影响;

分布式还导致网站依赖错综复杂,开发管理维护困难。

常用的分布式方案:

① 分布式应用和服务

将分层和分割后的应用和服务模块分布式部署,除了可以改善网站性能和并发性、加快开发和发布速度、减少数据库连接资源消耗外;还可以使不同应用复用共同的服务,便于业务功能扩展。

② 分布式静态资源

网站的静态资源如 JS,CSS,Logo 图片等资源独立分布式部署,并采用独立的域名,即人们常说的动静分离。静态资源分布式部署可以减轻应用服务器的负载压力;通过使用独立域名加快浏览器并发加载的速度。

③ 分布式数据和存储

④ 分布式计算

网站除了在线业务外还有后台业务要处理,比如,搜索引擎的索引构建、数据仓库的数据分析统计等。这些业务的计算规模非常庞大,目前网站普遍使用 Hadoop 及其 MapReduce 分布式计算框架进行此类批处理计算,其特点是移动计算而不是移动数据,将计算程序分发到数据所在的位置以加速计算和分布式计算。

⑤ 分布式配置

可以支持网站线上服务配置实时更新

⑥ 分布式锁

分布式环境下实现并发和协同的分布式锁

⑦ 分布式文件

支持云存储的分布式文件

1.2.4 集群

集群化:即多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。

目的:提高系统的可用性。

使用集群带来的好处:

① 可以提供更好的并发特性;

② 因为一个应用由多台服务器提供,当某台服务器发生故障时,负载均衡设备或者系统的失效转移机制会将请求转发到集群中其他服务器上,使服务器故障不影响用户使用。

1.2.5 缓存

缓存就是将数据存放在距离计算最近的位置以加快处理速度。

网站应用中,缓存除了可以加快数据访问速度,还可以减轻后端应用和数据存储的负载压力,这一点对网站数据库架构至关重要,网站数据库几乎都是按照有缓存的前提进行负载能力设计的。

1.2.6 异步

大型网站架构中,系统解耦的手段除了前面提到的分层、分割、分布等,还有一个重要手段是异步,业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行协作。

异步的实现:

① 单一服务器内:可通过多线程共享内存队列的方式实现异步;

② 分布式系统中:多个服务器集群通过分布式消息队列实现异步。

使用异步消息队列具有如下特性:

① 提高系统可用性,改善网站的扩展性

② 加快网站响应速度

③ 消除并发访问高峰

该方法会导致响应“延迟”。可以使用优先级队列来保证对时效性高的业务在访问高峰期的及时响应。

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

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

相关文章

JSP网站开发基础总结《九》

本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻松的完成之前的那个功能…

Jenkins 传统网站更新和CI/CD概念

门户网站传统部署流程 基于线上CentOS服务器,构建了一套LAMP(LNMP)PHP WEB环境,发布了Discuz门户网站代码,通过浏览器访问WEB网站,如图所示: [rootlocalhost ~]# yum install httpd php php-de…

Jenkins 更新网站静态文件

要想去更新网站必须先创建新的任务,任务名写上网站的名字。 现在去更新静态的logo图片是不需要编译的,所以这里不会用到创建maven项目,这里选择构建自由风格的软件项目(无需使用make ant maven去编译)。 创建好任务之…

Docker Dockefile制作nginx php镜像搭建Wordpress网站

这里的NGINX PHP镜像需要自己构建,mysql 5.7使用官方镜像即可 前端项目镜像构建与部署:Nginx [rootlocalhost _data]# cd /nginx/[rootlocalhost _data]# cd /nginx/ [rootlocalhost nginx]# ls Dockerfile nginx-1.15.5.tar.gz nginx.conf php.conf…

大型网站系统架构演化之路

前言 一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业 务功能的扩展逐渐演变完善的,在这个过程中,开发模式、…

私藏的18个黑科技网站,想找什么软件就找什么软件!!!

要说现在啊,我们使用频率最高的设备是啥,那一定是手机啊,几乎不离身,没了它,生活就索然无味啊😪,除了手机,对我来说,排在第二位的就是电脑了。 那么使用手机和电脑&#…

Apache搭建http网站服务器入门教程

Apache搭建http网站服务器入门教程 准备工具 一台带有Linux系统的主机,这里使用CentOS 7.1 64位系统一个备案过的域名,这里使用www.hellopage.cn一台可以访问网络的pc,这里使用的Win7_pro_sp1步骤 1.解析域名 在域名管理控制台添加对主机ip的…

dump分析工具_工作6年自学走来,私藏的,调优工具/技术网站

其实很多程序员最头疼的事情,就是找学习资料或面试题,我这里,就给大家推荐一些,我赞了6年的优质技术网站,都是我精心挑选的,涵盖:4个算法网站,7个调优排错工具网站,都是大…

浏览器进不去网站解决方案

1.设置internet选项->安全->受信任站点,将该网站添加进去 2.可能是设置了代理,所以要去掉: 3.再不行我也不知道了 转载于:https://www.cnblogs.com/miaoying/p/5664466.html

图片网站源码_做好网站优化必须要知道的几个技巧

网站营销已经成为现在很多企业的营销手段了,而网站权重最高最重要的就是首页,一个完整的网站就是通过一个一个的页面组成的,我们在做网站优化的时候就会涉及到每一个页面,虽然网站优化的时候涉及到的知识比较简单但是要做好还是非…

【软件架构系列】一步一步构建大型网站

1 概述 软件架构是一门学问,并且是一门很深邃的学问,从本篇文章开始,我们就来聊聊架构,所用到的主流语言为.NET、Java和php。本篇文章作为架构的开篇文章,主要从广度上叙述软件架构的发展与演变,从软件架…

php 风水起名网站源代码_对金融网站漏洞检测的过程分享

天气越来越凉爽,在对客户网站代码进行渗透测试,漏洞测试的同时我们安全渗透技术要对客户的网站源代码进行全方位的安全检测与审计,只有真正的了解网站,才能更好的去渗透测试,发现网站存在的漏洞,尽可能的让客户的网站在上线之前,安全防护做到最极致.在后期的网站,平台快速发展过…

传输层 使用Web代理访问网站

代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。 万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。 当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需…

Python开发网站步骤

国内的豆瓣就是典型的Python开发的;使用python Django做网页的步骤: 1 、创建一个django项目(使用django-admin.py startproject MyDjangoSite ) 2、建立视图 from django.http import HttpResponsedef hello(request): return Ht…

Python利用 Django开发网站

1、创建Django project 1) start project 创建一个文件夹,命名为root(或者自己喜欢的名字),用命令打开文件夹,也就是cd文件路径:cd /Users/Hou/Desktop/root使用django-admin的命令创建一个项目&#xff0c…

修改wamp网站的根目录

wamp原本的网站根目录在wamp目录下的www文件夹。本文章说明如何修改wamp网站的根目录。 1.在f盘新建一个文件夹Demo存储网站代码。 2.打开apache的配置文件httpd.conf文件。 3.将DocumentRoot路径修改为Demo文件夹的路径,修改之后如下图所示: 将Director…

用vue写的小网站

先看实现后的效果&#xff1a;支付成功后跳转到订单列表页面&#xff1a;项目目录把导航和底部的内容layout.vue作为跟组件 先完成导航部分的制作&#xff0c;包括登录弹窗的显示&#xff0c;其中涉及到的有layout、dialog、logForm.vue //layout.vue<template><div&g…

如何查询网站dns服务器地址,如何查询DNS服务器地址 dns服务器地址查询方法详解...

我们知道电脑DNS地址一般都是自动或许的&#xff0c;那么我们有没办法查询DNS服务器地址呢&#xff1f;查询DNS地址其实并不能简单的在网络连接与本地连接中查看&#xff0c;下面编辑为大家介绍下如何查新DNS地址在去年的一篇文章为大家介绍过&#xff1a;dns是什么 dns服务器是…

云呼服务器网站,云呼服务器地址

云呼服务器地址 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。查询指定弹性云服务器的指定网络。无GET /v2.1/{project_id}/serve…

网站信息系统安全等级保护

2018年6月&#xff0c;我们接到一位来自北京的新客户反映&#xff0c;说是他们单位收到一封来自北京市公安局海淀分局网安大队的通知书&#xff0c;通知称&#xff1a;贵单位网站存在网络安全漏洞,网站被植入后门程序&#xff0c;要求你单位要在XX日之前&#xff0c;对网站进行…