- 浏览: 138747 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (152)
- 异常以及异常处理框架探析 (1)
- java语法 (18)
- 职场生活 (8)
- js前端 (9)
- Tomcat (8)
- java架构 (23)
- .Net (2)
- Linux (4)
- Spring (6)
- Nginx (7)
- 设计模式 (3)
- JVM (4)
- 数据库 (2)
- 智力题 (1)
- SVN (1)
- Maven (3)
- MYSQL (5)
- java线程池2-任务队列的规则 (1)
- 英语学习 (1)
- 面试题 (7)
- MyBatis (2)
- 并发 (3)
- Memcache (2)
- XML (1)
- Hadoop (1)
- Web容器 (1)
- Struts2 (2)
- 产品运营 (1)
- 安全 (1)
- Mongodb (1)
- Shell (0)
- 恋爱 (1)
- 简单对象访问协议 (1)
- mybatis优化(转) (1)
- 算法 (1)
- Redis (2)
- Spring MVC数据绑定大全 (1)
- 错误搜集 (1)
- IDEA (1)
最新评论
-
sunshine_love:
故事里的事说是就是不是也是 故事里的事说不是就不是是也不是 故 ...
在这个变化的年代,IT人的方向在哪里?看两个故事
java网站架构设计
2012-12-17 09:17:31 我来说两句 作者:liuyong0818 收藏 我要投稿
闲来无事,梳理了一下自己的技术,简单聊聊一些大型网站的技术架构设计,算是个抛砖引玉吧,欢迎大家拍砖。
涉及到的技术及工具:java,springmvc,ibatis,freemarker,mysql,mongdb,memcached,ehcache,maven。
一个网站不可能说一开始就是要设计一个能够考虑所有情况的完美架构,一个成熟的架构都是随着需求的变化,流量的增高来随之变化的。
基本架构:
web服务器:ngnix+apache做负载均衡
技术架构: freemarker+springMVC+ibatis(myIbatis)+memcache+mysql
这样的架构一般的网站日均UV在几万十几万的情况下,部署个几台web机器基本就可以满足了。
一、随着流量的增加,首页想到要优化的就是数据库
1、分库 可以根据业务模块的划分进行分库,用来减轻单库压力。
2、分表 对个别数据量非常大的表,进行分表,减少单表数据量,提高查询速度。
3、分库之后,对于核心数据库,可以进行主/从库处理,将查询与更新分离,提高插入速度。
4、梳理业务,对于像动态之类的写量非常大,写后并不更新这类特征的数据,可以采用mongdb,获得更高的性能和更简单的业务处理。
数据库做到这个层面上,基本上就差不多了,新的业务进来,数据库可以从容的进行水平扩展。
二、随着业务渐渐复杂,数据库又分库分表,可能有一些业务流程就非常的长,导致应用程序需要去N个库查询或者更新N张表,这样客户端的响应就非常慢了,这个时候就需要异步登场了。
推荐:JMS,使用activeMQ,这些spring都有很好的实现。
三、缓存服务器,网站有一些基本信息,例如:网站配置信息、登录用户信息等等,这类核心数据,差不多每次请求都要去读取,但是这些数据是不怎么会变的,每次还要去memcache缓存服务器上去读取,服务器间通信也是要时间的,可以考虑本地缓存。
推荐:EhCach。它是一个纯Java的进程内缓存框架,具有快速、精干等特点。
四、静态化。网站首页、还有二级域名首页等类似首页性质的页面,访问量都比较大,静态化掉。可以定时任务几分钟生成一次。
推荐:Quartz。开源的作业调度框架。(其实这个一开始就应该集成进去,因为你的网站肯定会有类似的定时任务的需求,Quartz是当仁不二的选择)。
五、静态文件优化。
1、这个是html和js还有静态图片等,这些的优化方案就比较多了,js组件化,按需加载,css sprite等等,前端优化博大精深,这里就不说了,网上有很多方案,这是一个长期的优化和任务。
2、静态文件存储,分布式文件存储,开源的解决方案也有很多,MogileFS、HDFS
六、业务解耦。随着系统越来越复杂,它就像一个庞大的机器,所有的功能师都在上面开发,新手,老鸟,不关是谁,除了个别资深程序员和架构师以外,其他人未必能理解整个系统,很容易造成bug,而发布就变成了噩梦,只要有个人的功能有问题,整个系统就不能发布,所有人都得停下来等,造成大量资源浪费,加班严重。此阶段,必然需要系统拆分,将系统按照业务进行划分,例如用户模块、博客模块、图片模块等等。各个模块之间通过外部接口进行通讯,各个模块可以单独开发单独部署,互不影响。
2012-12-17 09:17:31 我来说两句 作者:liuyong0818 收藏 我要投稿
闲来无事,梳理了一下自己的技术,简单聊聊一些大型网站的技术架构设计,算是个抛砖引玉吧,欢迎大家拍砖。
涉及到的技术及工具:java,springmvc,ibatis,freemarker,mysql,mongdb,memcached,ehcache,maven。
一个网站不可能说一开始就是要设计一个能够考虑所有情况的完美架构,一个成熟的架构都是随着需求的变化,流量的增高来随之变化的。
基本架构:
web服务器:ngnix+apache做负载均衡
技术架构: freemarker+springMVC+ibatis(myIbatis)+memcache+mysql
这样的架构一般的网站日均UV在几万十几万的情况下,部署个几台web机器基本就可以满足了。
一、随着流量的增加,首页想到要优化的就是数据库
1、分库 可以根据业务模块的划分进行分库,用来减轻单库压力。
2、分表 对个别数据量非常大的表,进行分表,减少单表数据量,提高查询速度。
3、分库之后,对于核心数据库,可以进行主/从库处理,将查询与更新分离,提高插入速度。
4、梳理业务,对于像动态之类的写量非常大,写后并不更新这类特征的数据,可以采用mongdb,获得更高的性能和更简单的业务处理。
数据库做到这个层面上,基本上就差不多了,新的业务进来,数据库可以从容的进行水平扩展。
二、随着业务渐渐复杂,数据库又分库分表,可能有一些业务流程就非常的长,导致应用程序需要去N个库查询或者更新N张表,这样客户端的响应就非常慢了,这个时候就需要异步登场了。
推荐:JMS,使用activeMQ,这些spring都有很好的实现。
三、缓存服务器,网站有一些基本信息,例如:网站配置信息、登录用户信息等等,这类核心数据,差不多每次请求都要去读取,但是这些数据是不怎么会变的,每次还要去memcache缓存服务器上去读取,服务器间通信也是要时间的,可以考虑本地缓存。
推荐:EhCach。它是一个纯Java的进程内缓存框架,具有快速、精干等特点。
四、静态化。网站首页、还有二级域名首页等类似首页性质的页面,访问量都比较大,静态化掉。可以定时任务几分钟生成一次。
推荐:Quartz。开源的作业调度框架。(其实这个一开始就应该集成进去,因为你的网站肯定会有类似的定时任务的需求,Quartz是当仁不二的选择)。
五、静态文件优化。
1、这个是html和js还有静态图片等,这些的优化方案就比较多了,js组件化,按需加载,css sprite等等,前端优化博大精深,这里就不说了,网上有很多方案,这是一个长期的优化和任务。
2、静态文件存储,分布式文件存储,开源的解决方案也有很多,MogileFS、HDFS
六、业务解耦。随着系统越来越复杂,它就像一个庞大的机器,所有的功能师都在上面开发,新手,老鸟,不关是谁,除了个别资深程序员和架构师以外,其他人未必能理解整个系统,很容易造成bug,而发布就变成了噩梦,只要有个人的功能有问题,整个系统就不能发布,所有人都得停下来等,造成大量资源浪费,加班严重。此阶段,必然需要系统拆分,将系统按照业务进行划分,例如用户模块、博客模块、图片模块等等。各个模块之间通过外部接口进行通讯,各个模块可以单独开发单独部署,互不影响。
发表评论
-
Apache CXF
2014-06-17 10:15 599Apache CXF 编辑 目录 ▪ CXF的关键的设计考虑因 ... -
最全的HTTP状态码,一定要收藏起来
2014-05-17 18:56 429最全的HTTP状态码,一定 ... -
RESTful Webservice 和 SOAP Webserivce 对比及区别
2014-05-17 18:54 901RESTful Webservice 和 SOAP Webse ... -
基于ZooKeeper的Dubbo注册中心
2014-03-05 04:16 783基于ZooKeeper的Dubbo注册中心 Apr102 ... -
Dubbo zookeeper 初探
2014-03-05 03:54 856Dubbo zookeeper 初探 分类: zo ... -
某大型社区网站系统
2014-02-24 20:51 579某大型社区网站系统 分类: 架构设计 2 ... -
Structs2中配置文件详解-不仅要会用更要理解
2014-02-24 20:24 954Structs2中配置文件详解-不仅要会用更要理解 ... -
Spring MVC和Struts2的比较
2014-02-19 11:51 587Spring MVC和Struts2的比 ... -
高性能、高流量Java Web站点打造的最佳实践
2013-12-24 18:49 601高性能、高流量Java Web站点打造的最佳实践 博客 ... -
RESTEasy入门
2013-12-04 14:56 721RESTEasy是JBoss的开源项目之一,是一个REST ... -
优化和架构之服务切分
2013-11-26 08:49 420切分是最基本,且最多 ... -
最佳线程数和QPS以及RT
2013-11-20 08:49 1289最佳线程数和QPS以及RT 博客分类: java ... -
Spring中线程池的应用
2013-11-05 21:50 1150Spring中线程池的应用 您的评价: ... -
架构师成长历程:时刻对新技术保持敏感
2013-10-19 01:19 662架构师是一门建立在科 ... -
对JavaEE中session的理解
2013-10-14 14:50 755博客分类: JavaEE javaJaveEEwebsess ... -
MyBatis批量大数据测试的一些结果
2013-08-23 04:19 2117MyBatis批量大数据测试的一些结果 博客分类 ... -
webservice注解
2013-08-21 12:00 788webservice注解 博客分类: cxf ... -
WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单
2013-08-21 11:51 884现在的项目中需要用 ... -
隔离级别
2013-07-22 23:14 528隔离级别 自从知道事务的隔离级别已经很长时 ... -
Bean作用域的配置以及 Spring各种注入方式实例 list set map props
2013-07-12 13:15 575Bean作用域的配置以及 Spring各种注入方式实例 li ...
相关推荐
网站架构设计文档
《Java应用架构设计 模块化模式与OSGi》PDF版本下载
Java应用架构设计:模块化模式与OSGiJava应用架构设计
java系统软件技术架构设计方案全文共3页,当前为第1页。java系统软件技术架构设计方案全文共3页,当前为第1页。xxx系统力技术架构与平台设计 java系统软件技术架构设计方案全文共3页,当前为第1页。 java系统软件...
java软件架构设计方案.pdf
java系统软件技术架构设计方案(案例).docxjava系统软件技术架构设计方案(案例).docxjava系统软件技术架构设计方案(案例).docxjava系统软件技术架构设计方案(案例).docxjava系统软件技术架构设计方案(案例).docxjava...
Java应用架构设计模块化模式与OSGi
Java应用架构设计 模块化模式与OSGi
java实现23种设计模式,让我们能更好的理解设计模式。还有30种java架构图,让我们提前了解架构思想。
模块化在架构中扮演着重要的角色,本书带你如何对程序进行模块化
java大型架构三本全书(大型分布式网站架构设计,大型网站系统与java中间件实践,分布式java应用 基础与实践)
此版本有章节一级的目录,就是说只有点击章节才会跳转。
论文文件,电子书,写架构设计文档的参考示例。.NET也可参考
资源名称:Java高手真经(系统架构卷):Java Web系统设计与架构内容简介:本书讲解JavaWeb系统设计与架构,包括Java与UML建模技术、Java设计模式、面向服务架构SOA、面向资源架构ROA、面向云架构COA,这5部分内容...
Java应用架构设计、 如何进行模块化模式、与OSGi有什么联系?
JAVA架构设计原则与J2EE必读书目推荐
描写java软件设计中良好的架构的模式
Java架构设计.pdf
JAVA软件架构设计模式,详细介绍各种模式.很详细的描述,值得一看。
《大型分布式网站架构设计与实践》 Java 并发编程实战 pdf文档