Java集群--大型网站是怎样解决多用户高并发访问的

news/2024/5/8 17:38:22/文章来源:https://blog.csdn.net/p312011150/article/details/79696762

Java集群--大型网站是怎样解决多用户高并发访问的

      时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没那么的强,哈哈,看来还需不断的努力啊!(这里得特别说明一下本人面试的一些感受:做我们IT这一行,一定要使自己精于某个领域,再不断的去涉猎其他的领域,更重要的是学会找出各个领域的相融点,这跟我们学习书本一样,用‘Java’和‘计算机网络’来举下例子,我们知道Java中的socket编程,对于面向连接的编程来说(包括我们每次在网页上向服务器请求资源时),它的第一步就是建立双方之间的通讯链路,而这个过程其实就是TCP的连接,这时就可以联想计算机网络中的TCP连接的三次握手,而在断开时就可以联想TCP断开连接的四次挥手等等;再者就是学习每门编程语言时,要打好自己的基础,这在面试的时候是很重要的......)

      本人进入公司实习后,发现本人所在的项目组所采用的框架技术是Seam(简单粗暴的讲该框架就是JSF和EJB3的粘合剂),也许大多数的你们跟本人一样,在学校上基本没有听过有这么个框架,确实,这个框架确实没那么火,网上的资料也没有SSH三大架构的多,但是,既然在这个项目组了,那就得做好本职工作了,于是,花了两天的时间来先熟悉一下整体的代码,刚好,这时客户那边有一个新的需求,于是,导师就把这个重任放在本人身上了(深深的感觉导师太看重本人了),于是,花了三天的时间把这个功能实现了并交付给客户去使用,自己也因此对这个框架更加熟悉了一点。

      后来,公司觉得Seam这个框架有点老了,所以就想对该项目实行底层改造,也就是因为这个契机,通过项目组成员的讨论,在实现底层改造的同时,也把单机网站过渡到分布式网站,这也就是本人在本文将要讲诉的内容了。

      为了解决大型网站的访问量大、并发量高、海量数据的问题,我们一般会考虑业务拆分和分布式部署。我们可以把那些关联不太大的业务独立出来,部署到不同的机器上,从而实现大规模的分布式系统。但这之中也有一个问题,那就是用户如何选择相应的机器的问题,这也被称为访问统一入口问题,而解决的方法是我们可以在集群机器的前面增加负载均衡设备,实现流量分发(总图如下)。

     这里得先解释一下何为“负载均衡”,负载均衡就是将负载(工作任务、访问请求等)进行平衡、分摊到多个操作单元(服务器、组件等)上进行执行,是解决高性能,单点故障(高可用,如果你是单机版网络,一旦服务器挂掉了,那么用户就无法请求了,但对于集群来说,一台服务器挂掉了,负载均衡器会把用户的请求发送给其他的服务器进行处理),扩展性(这里主要是指水平伸缩)的终极解决方案。

    

      在这里,本人主要讨论负载均衡设备为Nginx(至于为啥不讲讲F5,因为人家太贵了,不过人家比较稳定),这是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,具有占用内存少、并发能力强等,中国大陆使用nginx网站用户有:百度、网易、新浪、腾讯等(该介绍来自百科)。

      nginx大家可以上其官网去下载最新版,解压后复制到部署目录,对于Nginx的配置网上的资料很多,这里就不再赘述了,只总结一下Nginx使用的注意事项:

      1.nginx的负载均衡配置中默认是采用轮询的方式,这种方式中,每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除,但存在各个服务器的session共享问题。

      2.另外一种方式是ip_hash:每个请求按访问的ip的hash结果分配,如果访问的IP是固定的,那么在正常情况下,该用户的请求都会分配到后台的同一台服务器去处理,但是如果用户每次请求的IP都不同呢?所以这种方式也同1的方式一样都存在这么一个问题:session在各个服务器上的共享问题。

      3.,如果集群中的服务器的性能不一,可以通过配置各个服务器的权值来实现资源利用率的最大化,即性能好的优先选择

      也许你会问,既然IP可能变化,那么用户用页面请求时的cookie的ID应该是确定的吧!那么我们可以用cookie_id来进行hash,然后在通过负载均衡器分发到对应的服务器上,这样就可以解决session问题了,其实当初本人也有想到这个方案,但最后本人也放弃这个方案了,因为是根据cookid_id确实可以把该用户的请求唯一的分发到那台独一无二的服务器上,那如果这台服务器挂掉了,那么根据这种分发策略,岂不是在这服务器上请求资源的用户都不能访问了,你说是不是呢?

      解决服务器共享session问题:使用redis来共享各个服务器的session,并同时通过redis来缓存一些常用的资源,加快用户获得请求资源的速度(个人比较喜欢redis,当然你们也可以使用memcache来实现,不过,memcache不能做到持久化,这样这台服务器一挂掉,那么所有的资源也都没有了......)。

     不过,本人觉得这样进行集群部署,最好配上数据库的主从部署,因为如果在集群中只分配一个数据库服务器,那么这个系统的瓶颈将会出现在数据库的操作上,虽然redis能减轻这种负担,但对于数据量大的还是有一定影响的,而且数据库的主从部署也可以防止因某个数据库服务器的挂掉而丢失用户的信息。

     一家之言,欢迎拍砖。

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

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

相关文章

LAMP架构部署和动态网站环境的配置

实验环境:操作系统:centos 7.5服务器IP:192.168.10.5运行用户:root连接工具:xshell工具web环境:Linuxapachephpmariadb(LAMP架构) 大型动态应用系统平台主要是针对于大流量、高并发网…

web前端开发项目资源网站,私家珍藏!

1.CodePen: http://codepen.io/ 网站里有很多很酷的特效,而且可以看到效果的源代码,也可以看到实现效果,是一个非常不错的前端开发学习资源网站。 这个是CodePen网站里的一个效果的源码截图,是不是很酷呀! …

前端学习网站

gotoandlearn.com 一个很棒的视频教程网站 CodePlayer: http://thecodeplayer.com/ 它的优点是 你可以看到作者是怎样一个个字母把代码打出来的… Codepen: http://codepen.io/ 这里面有很多很酷的特效,而且你还能看到它们的源代码. CSSdeck: http://cssdeck.com…

认识动态网站

之前做项目,做的前端。第一个项目的时候蠢的来(థ౪థ)σ根本不明白前后端有什么联系,所以正好跟着这波纳新的同学学一下后端!ヾ(◍∇◍)ノ゙ 主要区分动态网站和静态网站: 动态网站用PHP开发&#xff…

网站SEO优化

1、SEO(Search Enginner Optinazition)与 SEM(Search Enginner Market) SEM比如:百度浏览器搜东西出来的前几个广告,是花钱的 而SEO是为了提高网站排名但是不花钱 2、权重: 权重越大&#x…

大型网站技术架构(一)大型网站架构演化

2019独角兽企业重金招聘Python工程师标准>>> 看完了有一本书,就应该有所收获,有所总结,最近把《大型网站技术架构》一书给看完了,给人的印象实在深刻,再加上之前也搞过书本上讲的反向代理和负载均衡以及ses…

利用dns解析来实现网站的负载均衡

当网站的访问量大了就会考虑负载均衡,这也是每一个架构师的基本功了,其基本地位就相当于相声里的说学逗唱,活好不好就看这个了 :) 传统的负载均衡思路是单点的,不管你是硬件的还是软件的基本都是这样的原理 对于一般的需求来说&a…

谷歌搜关键字找网站漏洞合集

天前谷歌地址 https://g.alexyang.me/到GoogLe,搜索一些关键字,edit.asp?韩国肉鸡为多,多数为MSSQL数据库!2,到Google,site:cq.cninurl:asp3,利用挖掘鸡和一个ASP木马.文件名是login.asp路径组是/manage/关键词是went.asp用oror来登陆4,这个应该N多人都搞过吧。。关键字&#…

网站信息量大,该采用分页式设计还是瀑布流滚动设计?

当页面内容信息很多时,设计上应该使用分页,还是 瀑布流 无限滚动的方式呢?今天这篇好文详细分析了各大信息流网站(谷歌、Pinterest、淘宝)的做法,列举了这两种方式的优缺点和适用场景。一篇精悍简练的干货文…

前端开发需要掌握的SEO的知识点

SEO 工作的目的   seo 的工作目的是为了让网站更利于让各大搜索引擎抓取和收录,增加产品的曝光率。 1. title description keywords 标签设置 2. h1-h6 img的alt a 标签的 rel"nofollow" 3. 建立 robots.txt 文件 4. 建立网站的 sitemap 地图…

4月4日网站变灰色的效果是怎么实现的?

4月4日时,很多网站包括主页和内容(包括图片、按钮等)也都已经变成了灰色。当天我打开的csdn、人人视频都全部变为了灰色。 我当时第一想法是难道把这些图片都换了一遍吗???但是成本未免太高,且可…

iframe嵌入其他网站,如何自适应高度

终于有一周时间,工作不那么忙了,腾出手来总结下工作过程中学到的知识。 每天遇到新问题,解决新问题,但是却很少有时间去仔细研究下,或者总结下。攒的多了,就得从头捋一遍。 说下iframe自适应高度&#xf…

如何将 arXiv 网站中的文献导入成 endnote 格式或者其它你想要的格式

arXiv 是发布论文预印本的平台,现在很多自然科学的论文,特别是计算机科学的论文,都是先发表到arXiv 网站,当我们想引用的时候,发现用Endnote 等软件检索不到。那么如何将arXiv 导出为endnote 格式 或者其他你想要的格式…

发布网站报错

发布网站时提示以下错误 解决方法: 1.重新安装IIS,将里面的所有子节点都打勾。 2.在C:\Windows\Microsoft.NET\Framework64\v4.0.30319路径下添加文件夹Temporary ASP.NET Files。 3.修改IIS管理器的应用程序池的托管通道为“经典”。 转载于:https://ww…

22个免费的UI界面设计工具、资源及网站

1.原型界面制作工具Lumzy 官方地址:http://www.lumzy.com/ Lumzy是一个网站应用和原型界面制作工具。使用Lumzy,您可以轻松创建UI模型并即时发送到客户电脑中。 Lumzy还具有团队协作编辑工具。 2.在线工具Mockingbird 官方地址:https://gomo…

(PHP开发)thinkphp5 换网站图标icon无法显示问题

选择自己喜欢的图片(jpg、png都行) 前往在线生成icon生成网站: https://www.bejson.com/ui/icomaker/ 将选择的图片生成图标,然后将图标放到public目录下 修改视图文件,将图标路径换成相对路径即可

[转] Optimizely:在线网站A/B测试平台

Optimizely:在线网站A/B测试平台是一家提供 A/B 测试服务的公司。A/B 测试能够对比不同版本的设计,选取更吸引用户眼球的那一款,从而带来更为优化的个人体验。让网站所有者易于对不同版本的设计和内容进行测试。 该公司的客户现已突破7000家,这些客户完成了超过50万…

精挑细选 8款HTML5/jQuery应用助网站走向高上大

http://www.html5tricks.com/8-html5-jquery-app-website.html 在WEB3.0的时代,我们的网站不仅要实现实用价值,更要为用户设计优秀的用户体验。jQuery是一个不错的JS框架,结合目前最新的HTML5技术,我们可以将自己的网站脱胎换骨&a…

想成为程序猿?28个在线学习网站让你变身齐天大圣!

无论是考虑换工作成为一个全职的程序猿,还是试图搭建一个网站,亦或是想要掌握更多的技能,总之现在越来越多的人都开始学习如何编程。虽然编程不一定适合所有人,但是对相关的知识多深入了解一下总归是有一些好处的。 在正式介绍这些…

学习新技能的37个最佳网站

忘了过于褒奖的学校、整天呆在拥挤的教室而效果却差得可怜。这些网站和应用涵盖了科学、艺术和技术的无数话题。它们可以教会你实践练习任何技能,从制作豆沙到用 node.js 开发 app,而且它们都是免费的。你绝对没有任何理由不去掌握一个新技能、拓展你的知…