大型网站系统与JAVA中间件实践 学习总结 一

news/2024/5/15 12:28:10/文章来源:https://blog.csdn.net/qq_27756989/article/details/120791073

大型网站系统与JAVA中间件实践 学习总计 一

  • 前言
  • 一、用 JAVA技术和单机来构建的网站
  • 二、将单机系统设定为交易网站
  • 三、单机负载警告,数据库与应用分离
  • 四、应用服务器负载告警,如何让应用服务器走向集群
    • 访问选择问题---引入负载均衡
    • 解决session问题
      • Session Sticky
      • Session Replication
      • Session数据集中存储
      • Cookie Based
  • 五、数据读压力变大,读写分离
    • 搜索引擎其实是一个读库
    • 加速数据读取的利器---缓存
      • 数据缓存
      • 页面缓存
  • 六、弥补关系型数据库的不足,引入分布式存储系统
  • 七、读写分离后,数据库又遇到瓶颈
    • 专库专用,数据垂直拆分
    • 垂直拆分后的单机遇到瓶颈,数据水平拆分
  • 八、数据库问题解决后,应用面对的新挑战
    • 拆分应用
      • 根据功能拆分应用
    • 走服务化的路
  • 九、初识消息中间件
  • 总结


前言

首先大致了解一下大型网站的架构演进。一个单机的网站是怎么一步一步演变成一个集群网站。


一、用 JAVA技术和单机来构建的网站

一开始我们基本上会选择一个开源的server作为容器,直接使用JSP/Servlet等技术或者使用一些开源框架来构建我们的应用;然后选择一个数据库管理系统来存储数据,通过JDBC进行数据库的连接和操作。这样一个单机的网站就搭好了。整体结果如下图所示。
在这里插入图片描述

二、将单机系统设定为交易网站

为了更好的说明网站从小到大的演进过程,我们举一个交易类网站的例子。
作为一个交易类网站,需要的基本功能有三个部分:

  • 用户
    • 用户注册
    • 用户管理
    • 信息维护
    • …等等
  • 商品
    • 商品展示
    • 商品管理
    • …等等
  • 交易
    • 创建交易
    • 交易管理
    • …等等

我们先只设计这三个部分,那么整体结构会如下图所示。
在这里插入图片描述

三、单机负载警告,数据库与应用分离

网站得到用户的认可,使用的用户越来越多,访问量不断增大,单机服务器的负载持续升高,导致整个服务器开始卡顿,那么我们必须采取一些办法来应对了。首先我们可以做的就是把数据库操作与应用从 一台机器分到两台机器上,最好两个机器是在同一个内网中的,这样延时比较低。那么我们的网站结构会变成下图的结构了。
在这里插入图片描述

四、应用服务器负载告警,如何让应用服务器走向集群

应用服务器的压力不断变大,应该根据监测结果一步一步的优化。我们这里介绍从单机变成集群的优化方式。先看一下结构变化吧。
在这里插入图片描述
在这种情况下会有两个问题需要注意。

  • 两个应用服务器访问的选择问题。
  • session的问题。

访问选择问题—引入负载均衡

对于用户怎么选择应用服务器,就可以引入负载均衡来进行处理,负载均衡中有许多服务器过滤方案,可以配置好用户选择服务器的问题。如下图所示。
在这里插入图片描述

解决session问题

如下图所示,如果我们第一次访问网站时请求落到了左边的服务器,那么我的session就创建在左边的服务器上,如果我们不做处理,就不能保证接下来的请求每次都落在同一边服务器上,这就是session问题。
在这里插入图片描述

Session Sticky

负载均衡器根据每次请求的绘画标识来进行请求转发,让每次请求都是访问的同一个服务器,如下图所示。
在这里插入图片描述

Session Replication

在Session Replication中,不再要求负载均衡器来保证同一个会话的多次请求必须到同一个Web服务器上了,而是我们的Web服务器之间会进行会话诗句的同步,这样就保证了不同Web服务器之间的Session数据一致了。如下图所示。
在这里插入图片描述

Session数据集中存储

这个方式是把Session数据集中存储到一起,然后不同Web服务器从同样的地方来获取Session,从而保证Session一致。如下图所示。
在这里插入图片描述

Cookie Based

这个方案是通过Cookie来保存session数据,这就好比我每次把自己的筷子带在身上,这样我去哪家饭店吃饭都可以任意选择。如下图所示。
在这里插入图片描述

五、数据读压力变大,读写分离

随着业务的发展,我们的数据量和访问量都在增长,所以我们可以在前面的结构上增加一个读库,这个库不承担写的工作,只提供读服务,如下图所示。
在这里插入图片描述

搜索引擎其实是一个读库

随着系统越来越大,搜索的东西与方式也越来越多,进而会引进不同的搜索引擎,来提高搜索效率。搜索引擎其实就是一个读库。如下图所示。
在这里插入图片描述

加速数据读取的利器—缓存

缓存,也就是我们常说的Cache。常用的缓存分别是数据缓存与页面缓存。

数据缓存

众所周知,每次连接并操作数据库是很耗资源的,而缓存能够将许多热数据保存下来,用户请求热数据时,并不需要通过数据库去查询并直接返回给用户,当用户请求的数据缓存中没有的时候,才会去从数据库拿,大大降低了数据库的开销。当增加了缓存后,结构会变成下图结构。
在这里插入图片描述

页面缓存

用户请求页面时,会有许多的js文件,图片或者视频等静态资源,页面缓存就会将这些资源加上标识,用户访问的时候,查看静态资源是否有标识,有标识则表示有缓存资源,直接返回给用户,用户能够更快的渲染页面,没有则再从服务器上取。能够减少带宽的消耗,又能增加用户的响应速度。

六、弥补关系型数据库的不足,引入分布式存储系统

在之前的介绍中用于数据存储的主要是数据库,但是在有些场景下,数据库并不是很合适,比如数据量大,需要进行全文检索的场景,数据库就会查询的很慢并且达不到预期的效果。我们平时使用的多为单机数据库,并且提供了强的单机失误的支持。处理数据库之外,还有其他用于存储的系统,也就是我们常说的分布式存储系统。分布式存储系统在大型网站中有非常广泛的使用。引入分布式存储系统后,结构会是下图的结构。
在这里插入图片描述

七、读写分离后,数据库又遇到瓶颈

通过前面的优化后,随着业务的不断发展,我们的主库也会遇到瓶颈。网站演进到现在,交易、商品、用户的数据还都在一个数据库中,尽管采取了增加缓存、读写分离的方式,这个数据库的压力还是在继续增加,因为我们需要去解决这个问题骂我们有数据垂直拆分和水平拆分两种选择。

专库专用,数据垂直拆分

垂直拆分的意思是把数据库中不同的业务数据拆分到不同的数据库中,结合现在的例子,就是把交易、商品、用户的数据分开,如下图所示。
在这里插入图片描述

垂直拆分后的单机遇到瓶颈,数据水平拆分

水平拆分就是把同一个表的数据拆到两个数据库中。产生数据水平拆分的原因是某个业务的数据表的数据量或者更新量达到了单个数据库的瓶颈,这时就可以把这个表拆分到两个或者多个数据库中。结构如下图所示。
在这里插入图片描述
一旦我们能够完成数据的水平拆分,我们将能够很耗的应对数据库及写入量增长的情况。

八、数据库问题解决后,应用面对的新挑战

随着业务的发展,应用的功能会越来越多,应用也会越来越大,我们需要考虑如何不让应用持续变大,这就需要把应用拆开,从一个应用变成两个或多个应用。

拆分应用

根据功能拆分应用

在我们的例子中,主要的业务功能有交易、商品、用户。由于交易与商品都用的到用户,所以我们可以拆分为交易、商品两个应用,如下图所示。
在这里插入图片描述
拆分之后在不同系统中有一些相似的代码,例如用户相关的代码。如何能够保证这部分代码的一致一级如何对其复用是需要解决的问题。此外,这样拆分出来的新系统之间一般没有互相调用,而且新拆出来的应用可能连接同样的数据库。如下图所示。
在这里插入图片描述

走服务化的路

我们再来看一下服务化的做法。
在这里插入图片描述
从中可以看到我们把应用分为了三层,处于最上端的是Web系统,用于完成不同的业务功能;处于中间的是一些服务中心,不同的服务中心提供不同的业务服务;处于下层的则是业务的数据库。

与之前相比有几个很重要的变化:

  • 业务功能之间的访问不仅是单机内部的方法调用了,还引用了远程的服务调用。
  • 共享的代码不再是散落在不同的应用中了,这些实现被放在了各个服务中心。
  • 数据库的连接也发生了一些变化,我们把与数据库的交互工作放在服务中心,让前端的Web应用更加注重与浏览器交互的工作,不必过多关注业务逻辑的事情,并且可以降低数据库的连接数。
  • 服务中心将散落在各个业务的代码集中了起来,能够更好的维护。
  • 通过服务化,无论是前端Web应用还是服务中心,都可以由固定小团队来维护系统。

九、初识消息中间件

消息中间件是分布式系统中完成消息的发送和接受的基础软件。为什么要使用消息中间件呢?因为消息中间件有两个常被提及的好处,即异步和解耦。下图是消息中间件的一般结构。
在这里插入图片描述
可以从图中看到,应用A和应用B都和消息中间件打交道,而这两个应用之间并不直接联系。这样就完成了解耦,目的是希望收发消息的双发彼此不知道对方的存在,也不受对方影响,所以将消息投递给接收者实际上都采用了异步的方式。

总结

这里讲解了一个单机网站应用怎么变成大型网站应用的大概过程(并不是全部按部就班演进的)。随着业务到不同的阶段都需要不同的手段来优化应用,才能保证应用的稳定性。最后看一下演进之后我们的网站样子吧。
在这里插入图片描述

引用《大型网站系统与JAVA中间件实践》

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

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

相关文章

eyoucms网站基本信息设置

后台 — 网站首页 — 页面设置,即可设置。 网站基本信息是贯穿显示在整个网站上的,且其他SEO相关设置也会引用到,主要包含网站名称、关键词和网站描述等设置。 关闭网站:默认选择“否”,如果维护,备案或其…

eyoucms网站基本信息设置

后台 — 网站首页 — 页面设置,即可设置。 网站基本信息是贯穿显示在整个网站上的,且其他SEO相关设置也会引用到,主要包含网站名称、关键词和网站描述等设置。 关闭网站:默认选择“否”,如果维护,备案或其…

eyoucms 到底什么是网站根目录?

对于站长和互联网技术人员而言,网站根目录是一个很常见的概念,弄不明白到底哪一个目录才是根目录的新手也并不少见,今天益吾库就跟大家分享一下到底什么是网站根目录的相关知识。 什么是根目录 顾名思义,根就像树根一样&#xf…

setoolkit克隆网站并抓取账号密码

文章目录setoolkit简介setoolkit克隆站点遇到的问题setoolkit简介 社会工程师工具包(The Social-Engineer Toolkit)是一个为社会工程设计的开源渗透测试框架。SET有许多自定义攻击向量,允许您快速地进行可信的攻击。SET是TrustedSec有限责任…

eyoucms 网站导航怎么设计?

通常用户第一眼进入网站看到的是首页的图片,其次就是网站的主导航,因此主导航对网站来说至关重要,不仅能够起到很好的指引作用,一个有魅力的导航还能留住用户浏览更多的信息,而且带给用户良好的体验。,那么…

网站的组成部分有什么?

网站的组成分为网站域名、网站空间和网站程序,接下来我们分别了解一下这三个部分。 网站域名相关知识: 1、eyoucms.com为顶级域名,bbs.eyoucms.com为二级域名,拥有顶级域名所有权及管理权便可以自行分配二级域名,如ww…

eyoucms 如何判断网站的SEO优化情况

网站程序自身的SEO优化质量可以通过以下几个方面加以判断: 1、网页标题 (title部分)是否体现了全站的关键词,每个页面的关键词是否不同,一般栏目应该以栏目名称为主要关键词,内容页面以内容标题为关键词…

eyoucms 怎么使用网站地图?

网站无论大小,单独的网站地图页面都是必需的,通过网站地图,不仅用户可以对网站的所有内容一幕了然,搜索引擎也可以跟踪链接爬行到网站的主要部分。一般来说,网站地图有两种形式: 一种是HTML,…

eyoucms 网站描述怎么写?

用户在搜索关键词的时候,首先呈现给用户的是title和描述部分,想要进一步吸引用户点击,得到用户的青睐,醒目的描述将发挥重要的作用,因为标题的长度有限,并不能显示完全,而描述是概括一个网页内容…

eyoucms 如何提高企业网站文章内容质量

无论什么类型的网站,文章的高质量永远是放在靠前位的。文章的质量直接影响到网站的权重和网络排名。所以提高文章质量也就成了每一个企业网站优化的重中之重。那么我们要怎么才能提高质量呢?下面有几个小建议。 首先,原创内容永远是受欢迎的。…

eyoucms 分享一下网站内容建设技巧有哪些

网站制作中有句话“内容为王”。由此可以得出网站的内容对网站的制作是多么重要,网站内容是网站的核心,也是网站进行SEO优化的重点。所以,不管是网站的制作还是网站的SEO优化,网站内容都要做好,并且要更新一些有特色的…

eyoucms移动互联网时代 建设移动网站策划该怎么做?

从现在网站推广的力度以及方式来说,好像移动网站要比pc电脑网站更加具有优势一些,现在可以说是移动端设备的天下了,自然移动网站也变得更加受人们欢迎,但是移动网站的发展速度也是非常迅速的,稍不留神,就被…

什么是响应式网站 为什么会受到客户的喜欢

为了能够给不同的用户设计出不同的网站类型,业内人士在网站建设的设计上投入了众多的精力。其中,响应式网站设计的成功便是投入精力后优秀的产出品之一。那么,到底什么是响应式网站呢?它的哪些优势能让客户对它如此的依赖呢&#…

优化新网站需要注意的几个细节 让效果达到良好

因为每一个网站架构是不一样,因此网站优化前期准备工作也是不一样,作为一个专业优化人员,必须对需要优化的网站架构有一定了解。特别是在对于新网站做优化的时候,需要了解清楚好,因为新网站优化不好,可能会…

eyoucms 网站原创文章要怎样进行优化?

互联网一直都是在变化中的,而且百度、搜狗等搜索引擎的抓取方式也在不断的进行改变,这些都导致了网站优化手法的改变,如果说唯一没有变化的话就是对于原创文章的编写以及发布。但是要写出一个高质量原创的文章可不是一件简单的事情&#xff0…

网站外链如何合理布局

一个网站如果拥有比较好的搜索排名主要取决他两个方面,一个就是这个网站的内容能够带给用户非常好的体验,另外一个,就是这个网站当中的外链页面输送了很大的权重量,所以今天我们就来跟大家聊一聊,如何才能够让网页的建…

怎样让你的网站更受搜索引擎的青睐

如果你是做网站SEO的,那么相信肯定会思考一个问题,究竟什么样的网站能受到搜索引擎的青睐?下面我们就来为大家分析一下,看看到底如何才能让你的网站能够受到搜索引擎的青睐。 文章内容精彩标题符合题意 1、网站的内容编写能力一定…

百度商桥怎么搞网站里面去?

打开后台,基本信息,在以下的输入框录入即可。 转自:http://www.eyoucms.com/bbs/2483.html

eyoucms 如何更换网站模板

1.查看你的后台版本号。打开版本号文件 /data/conf/version.txt,如下图:1.2.7 2.到官网下载相对应的后台版本,本地解压,然后删除模板文件夹 /template,图片文件夹 /uploads,备份的数据库文件 /install/eyoucms.sql,以…

新手必看的网站建设核心组成部分

我们在做网站建设的全过程中,是务必要留意网站建设关键构成部分的,仅有掌握住关键才可以更强的让网站建设的更强,获得大量的用户转换,这儿告知初学者必读的网站建设关键构成部分。        一、有效呈现网站制作合理布局   …