网站架构第一篇

news/2024/5/20 14:21:54/文章来源:https://blog.csdn.net/baidu_38339840/article/details/119944409

Web发展历程

CS时代:富客户端方案。卖软件可以赚钱。
QQ,影音,游戏
Web 1.0时代:主要是单向信息的发布。互联网内容是由少数编辑人员定制的,用户只有看的权限
三大门户网站:新浪、网易、搜狐。
Web 2.0时代:注重用户的交互。每个人都是内容的提供者。
博客、社区、微博、抖音

集群与分布式的区别

在这里插入图片描述
单机就是一台机器抗业务;集群就是多台机器抗业务;分布式就是将代码进行功能细化切分;
在这里插入图片描述
单机抗用户、商品、订单三个功能;当一台机器扛不住了,就用多台机器抗用户、商品、订单功能,就被称为集群;
分布式将用户、商品、订单功能进行拆分,用户服务可以部署在一台机器或者多台机器上组成一个用户服务集群;

架构演进

BS请求过程

在这里插入图片描述
当浏览器发起请求时,通过DNS域名解析将域名解析成具体的网站ip地址,然后去CDN加载网站的静态资源和加载网站的Html页面,最后通过浏览器渲染返回的文件数据展示在用户面前

架构一:早期架构

在这里插入图片描述
浏览器+服务器:只要提供静态页面的浏览需求

架构二:数据库开发

在这里插入图片描述
浏览器+服务器+数据库:只要提供静态页面的浏览需求,页面的数据从数据库中读取,业务逻辑简单,写sql查询数据处理

架构三:javaweb开发

在这里插入图片描述
Tomcat+servlet+jsp+mysql:一个war包打天下
项目框架结构:ssh、ssm组成的MVC架构
随着mysql查询的数据压力,产生了集群架构

架构四:javaweb的集群发展

在这里插入图片描述
硬件机器的横向扩展,对war包内部的项目结构无任何影响,还是一个war包打天下。

架构五:javaweb的分布式发展在这里插入图片描述

将MVC架构中的service服务层单独分离出去,成为一个单独的项目jar,单独运行
web服务器通过rpc框架,对分离出去的service进行调用

架构六:javaweb的微服务发展

在这里插入图片描述
将controller、service、dao+数据库三层单独独立出来,每一个微服务都是一个完整的服务。
在微服务的内部,需要对外提供接口,包装成rpc接口,供外部服务调用。

交互模式

架构一:整页交互


浏览器请求皆为页面请求,每次请求都是一次页面跳转、刷新

架构二:页面+ajax混合

在这里插入图片描述
浏览器请求主要为页面级请求,数据请求为ajax局部刷新,页面体验更好

架构三:单页面应用

在这里插入图片描述
首次请求返回页面,后续请求都为restful接口数据请求

架构中常见解决方案

架构的依据:
并发数(TPS)Transaction Per Second :每秒钟处理的事务数
数据量(QPS)Query Per Second:每秒钟处理的查询数
单Tomcat服务器能承受最大的TPS:–500,架构的最大并发数。如果超出则考虑集群和分布式方案。
Mysql数据承受最大的单表数据量–500万,架构的最大单表数据量。如果超出则考虑分库分表方案。

session跨域共享

在这里插入图片描述
方案:
1、使用缓存实现session共享
2、tomcat插件实现session共享
3、springsession插件实现session共享

缓存

在这里插入图片描述
1、先到缓存中查,如果缓存中存在值,则直接返回
2、无值(缓存穿透、缓存击穿)则调用接口或者查询数据库,并将值补入缓存区
3、缓存区数据和数据库中的数据可能不一致,使用过期时间调节等问题
4、若缓存区数据集中在某一时刻失效,将导致大量的缓存击穿(雪崩)
解决方案:
1、不设置过期时间,数据永久有效,避免雪崩;但是容易造成内存浪费
2、需要额外的机制来实现数据的同步更新

多线程

同步、异步:
在这里插入图片描述
同步调度(线程阻塞):
1、调度期间,主调和被调线程被同时占用。
2、被调执行完成前,主调等待。
3、程序内部的调度,则为一单线程。
异步调度(线程不阻塞):
1、主调与被调只是一次消息发送,信息到达即返回。
2、被调执行完成后,回调一次主调方,发送结果回来。
3、程序内部的调度,则回调函数是由被调线程执行。
在这里插入图片描述
多线程:空间换时间

消息中间件

在这里插入图片描述
1、每个应用启动,主动注册队列
2、后续收发信息,只管收发队列中数据
3、队列中数据的路由策略由mq管理者来配置,跟应用程序无关

数据分片

在这里插入图片描述
Redis/es/fastdfs,将数据按片切分:
1、切成6个片,每个片存储总量1/6数据
2、则两个库每个库分担三个片
3、若三个库,则每个库只需要承担两个片
4、路由管理,只记录数据与片柱的关系
此模式实现集群的动态扩容

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

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

相关文章

python 3 爬取某小说网站小说,注释详细

目标:每一个小说保存成一个txt文件 思路:获取每个小说地址(图一),进入后获取每章节地址(图二),然后进入获取该章节内容(图三)保存文件中。循环 效果图&#…

如何用自己电脑做服务器,绑定域名建一个个人网站

使用自己的电脑,下载一个tomcat服务器,并将域名解析到本机,这样就可以发布自己的网站了。不过,关机之后网站便登不上去了。这样做只是为了我们可以更好的开发调试自己的工程,网站上线之后可以让更多的朋友帮你找bug。这…

Android 学习论坛博客及网站推荐

一、博客推荐 1)http://blog.csdn.net/android_tutor(Android开发入门基础,高级进阶) 2)http://blog.csdn.net/hellogv(入门与提高,很多例子值得学习) 3)http://www.c…

【2019.6.11可用】chrome提示“无法添加来自此网站的应用、扩展程序和应用脚本”的解决办法

目前亲测可行的方法有两种,个人推荐第一种。 第一种方法(推荐) 1、在chrome上右键,打开属性。 在目标里添加参数“ --enable-easy-off-store-extension-install”。注意--前加上一个空格 2、【重启浏览器!】打开chr…

猪八戒学做网站之HTML5篇(2):编写网页的工具

一杯清茶还没有喝完,小朱告诉我,他的网页做完了,惊得我下巴都快掉了。 我张大着嘴巴来到小朱的电脑前,看到了他完成的网页,完成情况好像还不错。各位可以看一下,他的网页的完成效果: 说实话&…

猪八戒学做网站之HTML5篇(3):网页不是图片

一大早,被手机的闹铃吵醒。自从做了程序员之后,天天都感觉睡不醒。脑力劳动和体力劳动真不一样,体力劳动累了之后,睡一觉起来就什么事也没有了。而脑力劳动之后,怎么睡都睡不醒。说什么三十年前睡不醒,三十…

猪八戒学做网站之HTML5篇(5):Hello HTML

出了几天差,回来一看,猪八戒正在网上津津有味地看着什么呢。 猪八戒看见我回来了,马上站了起来:“师父,你回来啦!”一边说还一边接过我的行李包。 我把行李包递给猪八戒后问他:“我不在的这几天…

猪八戒学做网站之HTML5篇(6):标签!标签!

“师父,你在看什么呢?” “《南京!南京!》。”我头也不回地回答道。 “那我应该看什么呢?”猪八戒又问。 “标签!标签!”我还是头也没回地回答道。 “啥?”猪八戒一下子没有明白过来…

在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目

本文目的: 1、创建一个创建网站项目。 2、创建一个自定义控件项目。 下文目的: 1、创建一个自定义控件。 2、将自定义控件添加到工具箱中,以便调用。 这两篇博文的最终结果如下图所示。 首先声明,用户控件和自定义控件是不同…

python从网站抓取特定内容

背景 测试需要模拟浏览器的userAgent,从网站上找到一批 http://www.fynas.com/ua 分析 非常普通的table元素维护 约有8K多条,为防止中途中断导致数据丢失选择读取一页写一页,单个文件可能吃力,选择100页数据放入一个文件的方式…

网站集成第三方登录--QQ

网站平台集成第三方登录--QQ 注:仅适用于线上测试,不提供本地测试(供新手参考)第一步:1、 登陆QQ互联开放平台首页 http://connect.qq.com/ ,注册开发者信息2、 选择菜单栏“管理中心”创建应用-网站3、 填…

网站集成第三方登录--sina

网站平台集成第三方登录--sina 注&#xff1a;仅适用于线上测试&#xff0c;不提供本地测试&#xff08;供新手参考&#xff09;第一步&#xff1a;1、 登陆新浪微博开放平台首页 http://open.weibo.com/ &#xff0c;登录后编辑开发者信息 及身份认证2、 开始创建应用 并将<…

iframe引入的网站不能全屏宽度有滚动条_程序猿进阶不能错过的最全前端性能优化秘籍(一)!...

很多人通常在完成了产品之后才会去考虑性能。把与性能相关的事情拖到项目的最后来做&#xff0c;所做的也不过是对服务器上的config文件进行一些微调、串联、优化以及部分特别小的调整。而现在&#xff0c;技术已经有了翻天覆地的变化。一个项目的性能是非常重要的&#xff0c;…

linux网络方面命令大全,网络操作命令 - Linux常用命令大全_Linux教程_Linux公社-Linux系统门户网站...

网络操作命令命令功能命令功能ftp传送文件telnet远端登陆bye结束连线并结束程序rlogin远端登入ping检测主机netstat显示网络状态8.1 ftp命令ftp命令用来传输文件&#xff0c;非常重要。如果在网络上看到一个很重要的文件&#xff0c;就可以用这个命令把那个文件传到自己的机器上…

如何将静态网站挂在github上

github.page是一个免费的静态托管服务&#xff0c;我们可以将静态网站托管在github上。具体的方法如下&#xff1a; 在github中新建一个username.github.io的公开仓库。&#xff08;username必须和你的github账户名完全一致。&#xff09;如果有静态网站的制作经验&#xff0c…

利用Lucene.net搭建站内搜索(4)---数据检索

前面的文章&#xff0c;我们已经对要检索的数据创建了索引&#xff0c;现在要做的就是为用户提供全文搜索的功能。通过Lucene我们还可以简单而高效地对搜索结果进行访问。此文和大家简单的说说利用Lucene.net进行数据的搜索。当我们查询Lucene的一个索引时&#xff0c;Lucene会…

50佳精美的单页网站设计作品欣赏(上篇)

单页网站是指只有一个页面的网站&#xff0c;这种形式的网站曾经非常流行&#xff0c;现在依然有很多人喜欢。不过&#xff0c;并不是每个网站都适合做成单页&#xff0c;一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

Web 应用程序项目与网站项目比较分析

在 Visual Studio 中&#xff0c;我们可以创建“Web 应用程序项目”或“网站项目”。每种项目类型各有优缺点&#xff0c;所以我们要选择可以满足需要的最佳项目类型&#xff0c;应了解各项目类型之间的差异。今天将深入的学习这两种项目之间的异同。 项目文件结构 Web 应用…

旅游类建站要求

旅游建站要求&#xff0c; 第一大类&#xff1a;系统的建设&#xff0c;竟然你是技术员&#xff0c;我就不多说 1、系统采用松散构架&#xff0c;方便后期处理&#xff0c;管理员可自动修改、调整模版的设计或者模版中的图片文字等 2、后期修改模版网站要便于操作&#xff0c;…

php修改根目录,phpStudy如何修改端口或WWW目录(网站根目录)

方法1&#xff1a;phpStudy修改端口或WWW目录(网站根目录)非常简单&#xff1a;点击『其他选项菜单』-『phpStudy设置』-『端口常规设置』。打开Apache的配置文件httpd-conf文件&#xff1a;打开phpstudy界面 ->点击“其他选项菜单” -> 点击“打开配置文件” -> …