- 浏览: 147280 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 659Apache CXF 编辑 目录 ▪ CXF的关键的设计考虑因 ... -
最全的HTTP状态码,一定要收藏起来
2014-05-17 18:56 470最全的HTTP状态码,一定 ... -
RESTful Webservice 和 SOAP Webserivce 对比及区别
2014-05-17 18:54 960RESTful Webservice 和 SOAP Webse ... -
基于ZooKeeper的Dubbo注册中心
2014-03-05 04:16 839基于ZooKeeper的Dubbo注册中心 Apr102 ... -
Dubbo zookeeper 初探
2014-03-05 03:54 924Dubbo zookeeper 初探 分类: zo ... -
某大型社区网站系统
2014-02-24 20:51 639某大型社区网站系统 分类: 架构设计 2 ... -
Structs2中配置文件详解-不仅要会用更要理解
2014-02-24 20:24 1014Structs2中配置文件详解-不仅要会用更要理解 ... -
Spring MVC和Struts2的比较
2014-02-19 11:51 654Spring MVC和Struts2的比 ... -
高性能、高流量Java Web站点打造的最佳实践
2013-12-24 18:49 640高性能、高流量Java Web站点打造的最佳实践 博客 ... -
RESTEasy入门
2013-12-04 14:56 786RESTEasy是JBoss的开源项目之一,是一个REST ... -
优化和架构之服务切分
2013-11-26 08:49 459切分是最基本,且最多 ... -
最佳线程数和QPS以及RT
2013-11-20 08:49 1354最佳线程数和QPS以及RT 博客分类: java ... -
Spring中线程池的应用
2013-11-05 21:50 1188Spring中线程池的应用 您的评价: ... -
架构师成长历程:时刻对新技术保持敏感
2013-10-19 01:19 715架构师是一门建立在科 ... -
对JavaEE中session的理解
2013-10-14 14:50 791博客分类: JavaEE javaJaveEEwebsess ... -
MyBatis批量大数据测试的一些结果
2013-08-23 04:19 2204MyBatis批量大数据测试的一些结果 博客分类 ... -
webservice注解
2013-08-21 12:00 828webservice注解 博客分类: cxf ... -
WebService开发笔记 1 -- 利用cxf开发WebService竟然如此简单
2013-08-21 11:51 965现在的项目中需要用 ... -
隔离级别
2013-07-22 23:14 601隔离级别 自从知道事务的隔离级别已经很长时 ... -
Bean作用域的配置以及 Spring各种注入方式实例 list set map props
2013-07-12 13:15 613Bean作用域的配置以及 Spring各种注入方式实例 li ...
相关推荐
《网站架构设计文档》 网站架构设计是构建高效、稳定、可扩展的互联网应用的关键步骤。这份文档将深入探讨如何进行有效的网站架构设计,确保系统的性能、可维护性以及技术选型的合理性。 1. **架构设计的目标** -...
Java架构设计示例文档涉及的知识点众多,通常它旨在为读者提供一个关于如何设计高效、可扩展和可维护的Java应用架构的参考。文档可能包含以下几个核心部分:需求分析、系统设计、技术选型、模块划分、接口设计、安全...
Java应用架构设计是软件开发中的核心议题,尤其是在大型企业级项目中,良好的架构设计能够确保系统的可扩展性、可维护性和高效性。本主题聚焦于模块化模式与OSGi(Open Services Gateway Initiative)在Java应用架构...
### Java系统软件技术架构设计方案分析 #### 设计理念与目标 根据提供的文档信息,“xxx系统”的设计理念在于同时创造客户价值并提供优秀的用户体验。“xxx公司”致力于确保产品既符合用户的使用习惯,又能满足...
【Java系统软件技术架构设计方案】 本方案主要探讨的是基于Java技术的系统软件设计,旨在创建一个既能创造客户价值又能提供良好用户体验的软件产品。设计理念上,公司着重于用户友好性和功能实用性,兼顾成本控制、...
分享一套Java分布式视频教程——《2022全新版-Java分布式架构设计与开发实战》。2022年7月完结新课,课程一共13章,提供配套的源码下载! 分布式架构是大型项目必用的架构方式,也是云原生、Serverless等新兴技术的...
Java设计模式和架构图是软件开发中的重要概念,它们对于构建高效、可维护的系统至关重要。设计模式是解决常见编程问题的经验总结,而架构图则是系统结构的可视化表示,帮助我们理解和规划系统的整体布局。 首先,...
三本书分别关注大型分布式网站架构设计、大型网站系统与Java中间件的实践以及分布式Java应用的基础与实践,它们是深入理解并掌握Java在大规模系统中的应用的关键资源。 首先,"大型分布式网站架构设计"这部分内容会...
Java后端架构设计精讲-大厂三面架构问题so-easy.docx 本资源是关于Java后端架构设计的面试宝典,主要面向中高级后端研发和想提前掌握架构设计知识的初级研发。该资源整合了架构设计面试中的六个方面,包括中间件、...
此版本有章节一级的目录,就是说只有点击章节才会跳转。
资源名称:Java高手真经(系统架构卷):Java Web系统设计与架构内容简介:本书讲解JavaWeb系统设计与架构,包括Java与UML建模技术、Java设计模式、面向服务架构SOA、面向资源架构ROA、面向云架构COA,这5部分内容...
总结,Java CS架构系统涉及的知识点广泛,包括Java编程、网络通信、数据库操作、设计模式、框架应用等多个方面。通过学习和实践《酒店管理系统》源码,可以更好地理解这些概念并提升实际开发能力。
Java应用架构设计、 如何进行模块化模式、与OSGi有什么联系?
“数据库”是任何应用程序的基础,对于Java架构师来说,MySQL、Oracle、MongoDB等关系型和非关系型数据库的使用和优化至关重要。你需要熟悉SQL语句、索引原理、事务处理以及数据库设计原则。 “JVM调优”是Java...
《大型分布式网站架构设计与实践》是一本深入探讨如何构建高效、可扩展的分布式系统的技术专著,结合了Java并发编程的实际应用。本书旨在帮助读者理解在高流量、大规模应用场景下,如何通过精心设计的架构和Java并发...
Java EE 架构师需要了解各种设计模式,包括创建型模式、结构型模式、行为型模式等。 UML UML(统一建模语言)是一种用于软件设计的建模语言。Java EE 架构师需要了解 UML 的基本概念和应用。 实例研究 实例研究...
这门课程旨在为有志于成为Java高级架构师的同学...课程涵盖了Java EE框架、微服务架构、性能优化、安全性等领域,并通过案例分析和项目实践,帮助学员深入理解并掌握高级架构设计与实施的关键技术。 视频大小:14.3G
java开发中型CS架构图书管理系统。中型CS架构图书管理系统,使用maven构建原生JavaFX项目,数据库使用Oracle11g 依据软件工程规范分析设计完成的数据库系统实现课程设计,并将绝大多数SQL操作都封装在存储过程中。...
在企业架构设计中,Java语言扮演着至关重要的角色。企业系统架构设计是构建大型、复杂、可扩展的应用程序的关键步骤,它涉及到多个层面,包括业务流程、应用结构、数据管理和技术基础设施。Java作为一门强大的、面向...