网站的分布式架构学习

news/2024/5/20 13:01:11/文章来源:https://blog.csdn.net/cfyme/article/details/84714217

转载学习地址:http://www.cnblogs.com/sharpxiajun/archive/2013/05/11/3072798.html

 

网站的B/S技术架构图




 在传统B/S架构的企业管理系统里,技术架构往往就是一个工程项目,各个逻辑分层都是该工程的业务逻辑模块。但是作为提供公共服务的网站,由于用户群比较庞大,网站并发量高,需求变化大,变更频繁以及网站出于对安全的考虑,以上的逻辑分层在技术架构上的实现也就会复杂的多。本人前不久做一个网站,我设计的技术架构简图如下:

 




 我把网站项目拆分为三个子项目:前端项目、服务端项目和memcache项目,前端项目包含页面、静态资源和控制层;服务端项目包含业务层和数据库操作层;memcache项目缓存前端项目和服务端项目公用的数据。

  在系统部署上,前端项目和服务端项目都采用分布式方式(我们的网站前端是4台服务器,服务端是4台服务器),用户请求进入前先通过负载均衡设备进行请求分发,前端和服务端之间以及服务端和数据库之间有防火墙保证系统的安全性,前端的集群和服务端集群分属到不同网络环境里,前端集群可以访问外网,服务端集群和数据库所在网络不能直接访问外网,但是前端网络环境和服务端网络环境之间可以进行通信。

  服务端和客户端用我们自定义的报文进行通讯,传输协议时http,由于本人所在的网站安全性要求比较高,用户传输的请求协议使用https。

  为了保证服务端和客户端通讯的效率,客户端和服务端通讯我们使用长连接(我们网站服务端语言选择的是java,通讯层使用netty框架开发的),为了保证长连接,我们写了一个心跳检测服务,该服务在后台线程里运行,每个5分钟检测一次心跳,当然检测的间隔时间是可以配置的。此外,我们事先估计过网站的最大并发量,在网站启动时候,我们构建了一个线程池(我们使用的服务器是8核处理器,每核最大线程数256,所以我们线程池里总共的最大线程总数数是8*256*4=8196),每个线程处理一个用户的请求。

  由于客户端项目采取分布式部署,因此存在session共享的问题,我们网站的session共享没有使用web容器自带的session共享机制,而是我们自己研发了一套session机制,原理很简单,具体是我们会对每个用户会话生成一个唯一标示,我们的唯一标示是这么设计:当前用户的session的id值+随机16位数字和字母组合+当前的纳秒值,然后将该值哈希算出一个key,原有保存在session里的值保存在memcache集群里,这些数据的key就是我们算出的用户唯一标示。最终我们网站前端不在使用session对象,而是我们自己设计的session机制,对此我们还封装了一套自定义标签,在页面上操作我们自定义的session。

  服务端也有类似的共享机制,但是有所不同,当客户端请求服务端时候,请求会具体落到服务端的某一台服务器,因为本网站有些请求处理时异步的,也就是说客户某些请求不是立即返回给用户,而是现将请求分发给服务端,此时客户端会返回用户一个相应标示,说明该请求已经被受理,正在处理中,而服务端的某个线程此时已经开始处理了该请求,客户端按一定时间间隔发送请求给服务端,问询请求是否处理完成,但是服务端也是分布式,请求时随机发送,客户端的问询可能会分发到别的服务器,因此这样的请求,我会在客户端记录下处理的服务端ip地址和线程id,在问询的时候就会访问指定好的服务器和线程,直到请求处理完毕,最后关闭询问,将结果返回给用户。

  由于我们把一个网站项目拆分成了三个独立项目,因此在项目管理和协调上增加了难度,所以我们引入maven框架对工程进行了管理和构建,同时构建一个common工程,专门负责服务端和前端公共程序的开发。

  本框架将展示层和业务处理层彻底分开,因此客户端工程师可以专心做客户端,服务端工程师专心做服务端,大家只要学习如何封装通讯协议就行,因此很利于项目组人员的横向扩展。

 

 

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

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

相关文章

做网站用UTF-8还是GB2312?

转载自 http://justjavac.javaeye.com/blog/695252 经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312。 ● 为什么有这么…

小型电子商务网站设计原则

最近谈得最多的话题莫过于大规模,大数据量,高性能,高并发等架构话题,其实一个电子商务网站开始时一定是小规模,小数据量,用不着把架构弄得过于复杂。高度设计、过度扩展(高德纳大爷也说过,"…

Mysql在大型网站的应用架构演变

写在最前: 本文主要描述在网站的不同的并发访问量级下,Mysql架构的演变 可扩展性 架构的可扩展性往往和并发是息息相关,没有并发的增长,也就没有必要做高可扩展性的架构,这里对可扩展性进行简单介绍一下,常用的扩展手段…

(转载)可扩展、高可用、负载均衡网站架构设计方案

可扩展、高可用、负载均衡网站架构设计方案作者:田逸(sery163.com) 本作品已刊登在《IT实验室周报》第6期第6版 基本需求: 1、 高可用性:将停止服务时间降低到最低甚至是不间断服务 2、 可扩展性:随着访问的增加,系统具备良好的…

MOUSEOVER在拼接的HTML无效处理

正常情况下: //鼠标移入移出(顶部企业图标信息)$(".patternBg").mouseover(function (){ $(".enterpriseContent").show(); }).mouseout(function () {$(".enterpriseContent").hide();}); 修改成&#x…

SQl语句查存储过程\触发器\约束(网站数据库转移缺漏审查)

网站开发最让我们头疼的就是数据的架构.本地开发很轻松.程序只需要打包dll就可以了,但是数据库要架设到空间服务器上,就要转移.一不小心就会忘了一些存储过程,触发器,约束.这里为大家提供几个查用的检查.能够快速找出有哪些东西是忘记传了.很实用.有好的方法,请知道. 该条语句查…

从小型网站到超大规模网站的MySQL参考架构

Oracle发布《面向大规模可伸缩网站基础设施的MySQL参考架构》白皮书,针对将MySQL用作数据存储的不同类型和不同规模的网站给出了推荐的拓扑结构。 根据分别提供4类服务——用户和会话管理、电子商务、分析类应用 (多结构数据)和CMS(元数据)—…

在不同尺寸屏幕下浏览网站效果 - Responsivator

如果你需要开发响应式的网站的话,使用一个必要的浏览工具来检验不同尺寸屏幕下显示效果还是非常有用的,在今天的这篇文章中,我们再给大家介绍另外一个不错的在线工具 - Responsivator,它提供了很多不同的尺寸屏幕的展示效果&#…

行业网站设计心得

作者:何迁 时间: 2004-08-18 文档类型:原创 来自:蓝色理想 浏览统计 total:11158 | year:596 | Quarter:596 | Month:596 | Week:47 | today:7 很多设计师认为做好了企业网站就一定能够做好行业网站的设计,其实对设…

云计算之路-阿里云上:网站故障致歉

后续进展:云计算之路-阿里云上:向大家汇报一下今天上午的网站故障 今天上午(5月16日)9:30~9:40左右,下午16:30~17:00左右,由于博客站点的Web服务器CPU大幅波动(有如坐过山车)&#x…

带给你灵感的20个漂亮的单页网站设计作品

带给你灵感的20个漂亮的单页网站设计作品 单页网站是指只有一个页面的网站,这种形式的网站曾经非常流行,现在依然有很多人喜欢。不过,并不是每个网站都适合做成单页,一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做…

寻找网页设计灵感的27个最佳网站推荐

今天,本文要向大家推荐的是27个寻找网页设计灵感的最佳网站。设计师们可通过这些网站收集的优秀网页设计作品来获取灵感,进而设计出更加时尚、更有创意的作品。如果你有收藏这个列表中遗漏的网站,欢迎在评论中与大家分享。 CSS Nature Desig…

优秀网页设计:20佳别出心裁的国外单页网站作品

单页网站是非常好的灵感来源,这些网站界面简洁、主题突出、设计精美,有创意的动态效果,带给访客强烈的视觉冲击。这种形式的网站需要把内容都放在一个页面中,只有重要内容才会展现在屏幕中。下面收集了20佳优秀的单页网站作品&…

2068个开源的网站模板

在网上溜达的时候发了这个好网站——opendesigns.org,上面分享了2068个免费的网站模板。提供了搜索功能,可以根据风格和功能(艺术、教育、画廊、杂志、作品集、电子商务等)、颜色以及关键字搜索模板,高级搜索模式还支持…

『优秀作品』20个激发灵感的橙色风格网站设计

『优秀作品』20个激发灵感的橙色风格网站设计 橙色是一种欢快活泼的色彩,是暖色系中最温暖的色,它使人联想到金色的秋天,丰硕的果实,是一种富足、快乐而幸福的颜色。今天,本文收集了20个橙色风格的网页设计作品与大家分…

网站项目必备——12款经典的白富美型 jQuery 图片轮播插件

图片轮播是网站中的常用功能,用于在有限的网页空间内展示一组产品图片或者照片,同时还有非常吸引人的动画效果。本文向大家推荐12款实用的 jQuery 图片轮播效果插件,帮助你在你的项目中加入一些效果精美的图片轮播效果,希望这些插…

分享50个优秀的电子商务网站设计案例

对于电子商务网站来说,也许销售更多产品比漂亮的外观设计更重要,不过漂亮的东西总是能给用户留下深刻的印象。今天,这篇文章与大家分享50个优秀的电子商务网站设计作品案例,希望能带给你灵感。 Free People Me & Mommy-to-be…

冒牌网站提供假冒卡巴斯基KIS7.0下载

近日,多位用户反映在多家网络论坛提供假冒的卡巴斯基互联网安全套装7.0简体中文版下载。 当用户按提供的地址下载后,将会下载回一个文件压缩包,解压后可以找到一个名为Kaspersky7.0的可执行文件,文件大小为25.4MB。但是执行该文件…

《时代周刊》评选出07年50个最佳网站 2007-07-10

来源 : cnbeta 时间:2007-07-10 美国《时代周刊》近日公布2007年50个最佳网站,由陈士骏与Chad Hurley创办的YouTube与近期窜红的同类型网站Twitter上榜。 《时代周刊》还列出了网站评级和投票数等信息。2007年这50个最佳网站分为艺术与休闲(Arts & Leisure…

(转)理清网站数据分析思路导图

下图是一个网站分析的生命周期示意图,在确认好分析需求并收集好我们所需要的数据后(强调一下,明确分析需求很重要,这可以避免为了分析而分析),我们就可以充分使用网站分析工具的各种报告对数据展开分析。 但…