互联网项目面临的是两个问题(特点)

互联网项目主要面临的是两个问题(也是互联网项目的特点):

1高并发访问(访问量大):
一般传统网站并发量在1000以上,就可以赚钱了.如果服务器遇到大规模的访问,如果不做优化,不做升级,架构不升级,网站是承受不了这么大的并发量.这样用户的体验度不是很好。

2海量数据存储问题(大数据):
用户一多,数据就会多,比如说淘宝网站,几亿用户注册,数据存入到数据库当中,从一个数据库查询出相应的数据,就算表的字段加上索引,也要花费大量的时间来查询,从而导致用户体验度不是良好。

面对这两个问题我们必须对架构进行优化,如果不做优化很难满足用户高并发访问,大数据存储。

架构优化:

1. 要求前端页面必须美观,大气,上档次,(好实现)
2. 后台系统必须具有流畅的运行效果(不好实现),—>要是系统具有流程的运行效果,就必须经过项目的一系列优化,具体哪些优化呢?
2.1.数据层的优化

  • 数据库集群(来解决主备,读写分离),数据库分表,分库储存来解决大数据存储问题,每个库存储大约500万条数据,大于500万条就换库进行存储.开启索引,开启缓存,数据库设计优化,sql优化.

  • 缓存优化(由于数据库本身结构的限制,并不能满足用户的高并发访问的需求,为了减轻数据库的压力,必须加一个缓存,作用是把频繁读取的数据放入缓存当中,就减轻了数据库的压力,防止数据库崩溃,我们经常发些项目一上线,最先出现瓶颈的一定是数据库,数据库往往出现崩溃的现象,因为我们施加给数据库的压力太大了)

  • 搜索优化(使用专业的搜索工具ES,那么搜索的效率性能是非常高的,比数据库搜索要快的多,同时也减轻数据库的压力)

2.2:项目层优化

  • *必须使用集群
  • *必须使用分布式
  • *jvm优化,tomcat服务器优化

2.3:应用层优化

  • *可以加上页面缓存
  • *可以加上页面静态化
  • *nginx进行负载均衡
  • *可以使用F5进行硬件负载均衡

在这里插入图片描述
互联网项目架构思想:
在这里插入图片描述
服务器就是项目的意思,项目上线就需要部署服务器里面,服务器在互联网项目当中不存在单机版的,一定是集群,来分担服务器压力(因为并发量太高),如上图,我们部署4台服务器.
我们的mysql数据库也要采用集群的方式,单机版是不可能满足我们搜索需求的.
上面的服务器中的项目要访问下面的数据库,由于数据库本身结构的限制导致查询效率不是很高(数据库都是从前到后依次扫描,如果加上索引,扫描速度会快点),但我我们想一想,是服务器项目的压力大,还是数据库的压力大?当然是数据库的压力大,比如我访问一个页面,这个页面要查询非常多的数据,比如我们上京东
在这里插入图片描述
这个页面上有分类数据1,导航数据2,广告数据3…所有的分类模块都要发送一条sql语句去数据库查询,所以每次刷新网页,加载整个页面会发送上百次sql语句查询数据库.所以所数据库面临的压力是远远大于服务器项目的.
同时由于数据库查询效率的问题,横容易造成数据库io阻塞,什么叫io阻塞,就是我们从数据库查询数据,查询的数据统统从io流出来,但是并发量太高的话,数据都会堵塞在流当中,最后就会造成数据库的崩溃。
如果采用非常多的集群的话,性能不升反降,同时成本太高.所以所数据库面临频繁的读取数据的问题。
所以我们在服务器项目集群和数据库集群之间加上redis缓存服务器,同时缓存服务器也采用集群的方式,这样项目就会先加载缓存当中的数据,如果缓存没有数据,再查mysql数据库,同时把数据放入缓存当中,那么加入redis数据库缓存有什么好处呢?1减轻数据库压力.2提高查询效率,尤其是redis的查询效率,所以当redis缓存服务器集群一加,完全满足高并发访问。
同时我们还需要搜索优化,我们使用ES索引库进行搜索,我们在项目服务器集群和mysql数据库集群之间创建一个ES项目来访问索引库。

由于服务器是集群的方式搭建的,所以我们并不知道让哪一个项目服务器来完成请求,那么怎么解决我们的请求发给哪一个服务器?
在项目服务器的上面,必须要有一个负载均衡nginx服务器(官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。)
同时也采用集群的方式,那么用户会把请求发给nginx服务器,nginx服务器就会自动决定将请求转发给一台项目服务器,但是由于nginx采用了集群的方式,每一台nginx服务器都会完成负载均衡,那么请求来了,我们到底将请求交给那一台nginx服务器呢?

这就存在一个问题:

最顶层也采用集群,意味着我们要对这个集群再次做负载,可以这么说,凡是集群,都要做负载均衡。
如果我们一直采用集群,就会一直向上循环,这个架构就一直往上顶,在最高层,必须只有一台服务器,不然就会处于无限的循环当中,我们nginx服务器采用主备的方式,备份机(监控主机有没有挂,一旦挂了,就立马充当主机,相当于有两条命,达到一个高可用的作用),相当于目前就一台nginx服务器,所以就不会出现无限的循环集群。

=====================================================
在这里插入图片描述
对于session如何共享问题?
用户第一次访问服务器1,在此服务器上产生一个名字jack,当这个服务器宕机了,用户请求转移服务器2,但是这个服务器并没有jack名字信息,由于是两个不同的pc,不同的服务器,那么怎么实现session数据共享问题呢?
可以使用tomcat集群session复制功能,把用户的信息直接广播给每一个集群服务器,但是这样不行,如果服务器1当中有1亿个session信息,sessipn数据量非常庞大,那么在传输过程中可能会卡死,这种方式在传统项目当中可以使用,但是在互联网项目当中,这种方式不可取.
另一种方式就是使用第三方服务器来存储我们的session数据,使用redis服务器来存储session数据,当请求一访问服务器1,服务器1就把数据放在redis服务器当中,如果服务器2想要数据的话,就去redis服务器当中查询就行了,这就实现了session共享.

在这里插入图片描述
集群:就是干同样的事情,
分布式:就是干不同的事情

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值