架构选择的考量

gongqh21 2007-07-11 07:47:34
对一个并发量比较大的系统,比如说10万用户同时在线,选择什么样的架构呢?
MVC 框架+ spring + hibernate
或者
MVC框架 + spring + ibatis
或者
MVC框架 + EBB3.0

请有良好实践的人给出建议,并说明一下,您这样选择的理由?
...全文
601 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
whsxzh 2007-08-19
  • 打赏
  • 举报
回复
关键的是用好的持久层

持久层设计

背景:此方案设计的初衷是因为php的持久层成熟的框架不多,且大多过于繁复,学习和设计周期都太长
此方案虽为php大型网站的简化设计,但也适用于其他语言的持久层设计,比如java,.net的web应用
同时也给大家介绍数据持久层的原理和作用

如果谁按照我这个方案写了个封装的类或一套函数,希望和我交流,给俺参考参考你的源代码 :)


1:适用情况,在多台应用服务器,有一台数据库服务器的情况下为了提高查询数据的效率,避免重复,频繁的查询数据库给数据库服务器造成负载过大而使用的持久层内存数据方案。
2.主要的参数:
1)TimeOutMiniutes: 内存数据过期时间,根据数据库负载的程度和数据的及时性的要求,设置过多久内存数据才需要从数据库中刷新数据。
举例:如果是访问量很大,应用服务器很多,应当设置较长的时间,以减少数据库服务器的负载
如果即使性要求较高,访问量不是很大,可以设置时间短一点,保持数据比较新
2)MaxRecordsCount:最大返回记录数,通过该参数,限制返回记录集的大小,对于记录集要求过大的数据,应当分页查询


3.访问层次设计

1)封装所有查询,使得查询都经过固定的对象发送
function SqlQuery(SQL)//
/*
根据SQL检查是否在缓存中存在要求的数据
如果存在且在有效期内,则返回数据
过了有效期则从数据库中刷新数据,然后返回
不存在则建立内存数据,然后返回。
*/

2)function SqlQueryAfterChange(SQL,PK_name,PK_value)
/*
强制刷新最新数据
仅仅用于单条记录的查询,一般用于对数据更新或插入后的反馈
*/
3)ClearTimeOutData()
/*
清除过期的数据
*/

4.实现方法
1)内存数据的存储方式,数组或哈希表
2)主键(key),SQL
3)运行位置:当然是应用服务器了
4)内存数据的变量类型:应当是全局性变量

deng1234 2007-08-18
  • 打赏
  • 举报
回复
jsp+javabean+ajax+oracle

在写数据库的时候用存储过程,

前台用quartz做任务生成静态shtml页面

查询建索引,使用lucene全文搜索

niko7 2007-08-18
  • 打赏
  • 举报
回复
并发跟规模是两回事,一个hmtl大家下载也可以造成很大并发量。
看了并发还要看你的规模,规模和技术路线决定可维护程度。

可维护性和可扩展性是值得关注的,相信你的规模不会太小,经济投入也应该不是问题,此外,解决这类问题不是靠一台机器的,要从集群和负载均衡方面考虑。
所以我推荐ejb。
neucloud 2007-08-17
  • 打赏
  • 举报
回复
学习
catiga 2007-08-17
  • 打赏
  • 举报
回复
ssh对于大并发量情况不行,请问有测试吗?
lxy218 2007-08-17
  • 打赏
  • 举报
回复
并发1000算大吗?用PHP写的效率也还算可以
http://www.objecttutor.com/object_tutor.rar
beyondtkl 2007-08-14
  • 打赏
  • 举报
回复
关注 & 学习。
struts2 2007-08-14
  • 打赏
  • 举报
回复
个人认为
并发大不重要,重要的是规模有多大

规模小,可以使用Servlet + JDBC 性能最好,维护也不成问题
规模大,即必须牺牲部分的性能换取可维护性,
Struts 1.X + Spring + iBatis比较好

为什么不使用Hibernate呢?主要是考虑程序开发过程中的灵活性。
不过ibatis和hibernate的性能哪个更好,我真的还不知道,呵呵

不过要是节省cost的话建议楼上说的LAMP(Linux + Apache + MySQL + PHP)
livan1038 2007-08-08
  • 打赏
  • 举报
回复
同意三樓的說法,对于复杂数据检索,hibernate效率是很慢的,因为如果用hibernate,就要把这些数据都要映射成Java对象,这个对JVM的内存是个很大的挑战.有條件的話MVC框架 + EJB3.0应该是最好的
lemonfamily 2007-08-08
  • 打赏
  • 举报
回复
想必如此大的在线量,不是门户网站也是娱乐网站了。这种网站系统的的设计是比较讲究的,不同于传统的企业信息系统。
huanzhugege 2007-08-02
  • 打赏
  • 举报
回复
《J2EE开发全程实录 》这本书对这个问题进行了比较好的解释,推荐阅读,这里有在线阅读版:
http://book.csdn.net/bookfiles/427/
liuzi123 2007-07-25
  • 打赏
  • 举报
回复
呵呵,接分
sturdypine 2007-07-16
  • 打赏
  • 举报
回复
google:springMVC VS struts
现在有种新的持久层,结合hibernate和ibatis的思想。。
chen4765654 2007-07-15
  • 打赏
  • 举报
回复
同意楼上,对于复杂数据检索,hibernate效率是很慢的,如果熟悉sql推荐用ibatis
yht1985 2007-07-15
  • 打赏
  • 举报
回复
EJB现在用的还多吗
kaoloveting 2007-07-15
  • 打赏
  • 举报
回复
听课
GODProbe 2007-07-15
  • 打赏
  • 举报
回复
对于大并发访问,ssh架构不敢恭维。
spring + structs 上百就不大行了。
sureyor 2007-07-12
  • 打赏
  • 举报
回复
越简单的东西其实越好用,当然要达到高的并发量,光凭系统本身是不行的,还需要很强的硬件支持和系统部署策略,当然系统的优化,DB的优化也是必不可少的,架构性的东西反而显得比较弱
sureyor 2007-07-12
  • 打赏
  • 举报
回复
PHP+MySql
好多大型社区,论坛就是这种架构,比如sohu
King_liubin 2007-07-12
  • 打赏
  • 举报
回复
MVC框架 + EJB3.0应该是最好的,但EJB容器的费用很高啊,而且现在EJB3.0技术不是特别的成熟,会的人不多,就算有会的,一般也没有实战经验。
MVC 框架+ spring + hibernate
或者
MVC框架 + spring + ibatis
至于选择hibernate还是ibatis,我觉得还是看是否有大数据量的操作,如果有而且很多,建议选用ibatis,因为如果用hibernate,就要把这些数据都要映射成Java对象,这个对JVM的内存是个很大的挑战

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧