系统架构设计
文章平均质量分 76
iteye_6401
这个作者很懒,什么都没留下…
展开
-
大型高并发高负载网站的系统架构
我在Cernet做过拨号接入平台的搭建,而后在Yahoo3721负载搜索引擎前端平台开发,又在猫扑处理过大型社区猫扑大杂烩的架构升级等工作,同时自己接触和开发过不少大中型网站的模块,因此在大型网站应对高负载和并发的解决方案上有一些积累和经验,可以和大家一起探讨一下。 一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这...原创 2009-03-09 17:44:58 · 70 阅读 · 0 评论 -
mysql水平扩展的设计思路
项目中应用了mysql数据库,由于数据量较大,采用了对mysql进行水平扩展的方式来应对,目前已基本实现。下面是水平扩展时需要处理的一些关键点: 1.处理一级路由(DB节点的拆分,例如DB节点由一组服务器扩展为2组服务器)2.处理二级路由(DB节点内的拆分,例如一组DB服务器内将1张表拆分为10张表) 3.处理动态数据源 3.1 向当前系统中增加新的DB节点,应用系统在...2012-05-26 09:36:41 · 544 阅读 · 0 评论 -
tomcat分布式会话管理流程
经过初步的功能测试,对项目中分布式会话组件进行了一些修改和完善,实现了对多系统会话的统一管理。前期也实现了集成本地缓存,后来经过讨论发现容器间同步会导致组播太多,对系统性能影响较大就把本地缓存去掉了。该组件是基于tomcat6,并对session管理进行了扩展(用户的强烈要求),不适用于其他web server。 软件配置:web服务器: tomcat6一级缓存:oscache2...2012-05-03 11:41:36 · 135 阅读 · 0 评论 -
socket、RMI、WebService 比较
RMI vs Socket一般来说,基于CS(client-server)软件架构的开发技术有很多种。比较常用的有:基于socket的网络编程、RPC、基于 Java技术的 RMI(当然C#也有类似技术)、CORBA等。在这里我们只是对基于socket的网络编程与RMI作个对比,有助于我们了解它们各自的应用领域,帮助 我们在面对一个具体问题的时候选用适合的技术。另外,本文所做的讨论可以认为...原创 2013-07-26 21:30:06 · 181 阅读 · 0 评论 -
几种主要通信协议的性能比较
总体性能比较:Socket(BIO/NIO)>RMI>HTTPInvoker>=Hessian>REST>>Burlap>EJB>>Web Service 如果协议设计的比较好,Socket性能毫无疑问是最高,同时灵活性和复杂度也最高,如果采用高效的网络框架如:Mina、Netty等可以降低开 发复杂度,一般在对性能有非常苛刻的条件下...原创 2013-07-26 21:24:56 · 182 阅读 · 0 评论 -
DAL_逻辑架构
项目由于数据量较大,采用了对mysql进行了水平扩展的方式来支撑大数据量的存储、访问和负载均衡。这篇文字主要总结了一下已在线上运行的数据访问层,并在此基础上对逻辑架构进行一些补充和完善,有些是个人的设想,欢迎有经验的朋友批评指正,谢谢。 设计简介:1. router 负责sql路由和过滤1.1 app sql router: 负责应用对数据库操作的路由。1.2 sq...2012-09-26 09:52:14 · 201 阅读 · 0 评论 -
应用jgroups实现tomcat session的同步
项目中采用将会话保存到全局缓存中的方式,实现了分布式session的功能。由于整个系统划分为多个子系统,并且分别部署到不同的服务器节点上,所以各tomcat容器之间的session的注销和过期时间需要同步。目前项目中采用了jgroups的组播方式实现了各容器之间session的同步问题,下面是部分代码,仅供参考: import org.apache.catalina.Manager;i...2012-03-15 15:58:48 · 210 阅读 · 0 评论 -
分布式事务处理-jotm应用
由于项目的需要,初步学习了分布式事务的相关知识,了解了可以和tomcat集成的几款分布式软件,在此基础之上,将事务处理和项目集成到了一起。 应用层采用了spring的声明式事务处理方式,经过测试知道sping本身支持单数据源的跨表事务。集成了jotm后,对跨数据源的事务进行统一管理。经过测试,可以通过配置文件的方式将jotm和spring较好的集成在一起。 项目使用的框架:st...原创 2012-03-08 10:45:23 · 111 阅读 · 0 评论 -
mysql水平扩展DAL(数据访问层)压力测试
针对mysql的水平切分,项目开发的数据访问层(DAL)实现了应用对数据访问的路由和对数据库操作的支持,下面是从测试报告中摘取的部分测试情况,仅供参考。 测试环境:web(1台):2c Intel(R) Xeon(R) CPU E5606 @ 2.13GHz8G 280G硬盘 mysql proxy(2台):1台 master1台 slave 4C Intel(R)...2012-07-05 09:09:40 · 198 阅读 · 0 评论 -
tomcat session静态结构
因为项目的需要,最近几天正在学习tomcat对session的管理机制。为了理清内部处理机制,所以整理归纳了一些图表,以备以后查阅。 1.静态结构图2012-01-30 13:25:53 · 77 阅读 · 0 评论 -
mysql数据库的数据切分
当构建大型网站时,因为种种原因会对数据进行切分(对种种原因我们下次再解释)。根据切分的规则,切分一般包括两个方面:垂直切分和水平切分。而根据切分的层次可以分为:机器级切分即mysqld进程级切分,库级切分,表级切分。首先来说说什么是垂直切分: 垂直切分是按照不同的表(或者 Schema)来切分到不同的数据库(主机)之上,大部分情况下它都是机器级的切分。当业务间的耦合度很低,或者说数据属于不...原创 2011-12-12 10:47:09 · 72 阅读 · 0 评论 -
集群、负载均衡及分布式系统架构
1.集群1.1定义:是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。 是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。如一个提供Web服务的集群,对外界来看是一个大Web服务器。不过集群的节点也可以单独提供服务。1.2负载均衡系统:集群中...原创 2010-10-09 11:03:10 · 170 阅读 · 0 评论 -
选择框架时需要注意的问题
最近一直有件不爽的事情困扰着我,由于工作的安排,接手了一个别人做了半截的、需求乱七八糟的项目。 这个项目代码现有大约4,5万行的样子,使用了ExtJS+DWR+JPA(toplink10.1.3.1.0)的组合。框架组合倒也没什么问题,但是接手后,由于大量生产数据陆续录入系统,系统时不时会出现内存溢出的问题。 震惊之一:数据查询不分页。什么原因的?通过阅读代码得到结果:数据查询时没...2009-06-24 09:01:29 · 131 阅读 · 0 评论 -
extJS+DWR+JPA框架组合的使用心得
最近接触到一个extJS+DWR+JPA架构的小项目,通过几周时间的了解和编码,对这个架构有了一个大概的了解,以下是自己对这个开发组合的一些认识,欢迎大家批评指正! 程序组成:表现层代码:jsp,js业务逻辑层:manager类Domain模型:Entity类 在这个小项目中,向数据库中添加一条数据,是由1个jsp,2个js,1个Entity类,一个manager类来实现的,相比S...2009-05-17 12:45:52 · 140 阅读 · 0 评论 -
java web系统架构设计需要解决的几个问题
下面列出了java web系统整体设计时需要解决的几个问题,肯定不够全面和深入,欢迎大家补充和交流,呵呵。 系统架构的工作是需要长期一线编码经验的,管理方向的项目经理之类的应该较少参与,长期非一线人员主导了架构及细节工作,很可能设计出来的系统缺乏根据,个人认为此类系统具备较好的成长性的可能性较小。 1. 应用层架构1.1 子系统的划分子系统的划分只存在于分布式系统中,通...2009-03-23 10:52:02 · 153 阅读 · 0 评论 -
应用二级缓存设计
最近ssss系统对redis的访问压力较大,为了减轻对redis服务器的访问压力,需要对功能进行优化,下面参考了同事的优化思路,并对思路进行了改进。 ...2013-09-09 13:01:55 · 269 阅读 · 0 评论