- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大型互联网中的Java_Web应用
大型互联网应用中的Java Web开发介绍 唐力群 目录 整体架构观 Java Web开发中的经验 大型网站关注点 高可用性 响应时间 高并发数 可伸缩性 垂直伸缩 水平伸缩 其它 易管理 监控 做事方法 先做对,再做好,最后才是做快,即考虑性能及伸缩性问题 但高可用性、高性能、优秀伸缩的架构太有吸引力了,工程师可能会沉迷于这些技术,而忘记最终想要的是什么 其实,只需要了解一下这些技术,而不需要过于在设计的前期去强调这些技术 只有系统真正正确的运行起来,你才知道是否要去优化它,及如何去优化它 三高的基本解决方案 冗余 – 高可用性 拆分 – 读写分离,分区,分库,以实现高性能 负载均衡 – 应用拆分后的集成方式 缓存 – 分散IO瓶颈 目录 整体架构观 Java Web开发中的经验 优先水平伸缩 垂直伸缩相对简单,但成本更高,提升有上限 水平伸缩需要考虑同步问题,不一定机器越多,性能越好 选择一个好的Load Balance Apache Nginx F5 水平伸缩的问题 Session 复制 IP 绑定 Session集成存储 静态资源文件的处理 Java Web服务器处理静态资源文件性能并不好 解决方法 独立资源服务器 前端Web Server拦截 其它 合并CSS/JS 不要过多的DNS 善用客户端缓存 在保持实时性的同时,尽可能的利用浏览器对静态文件的缓存作用 不同浏览器和Web服务器的处理方式有所不同,需要考虑 Last-Modified Expires Etag struts2对etag有支持方案,应用场景 避免锁 锁不是一种高效的服务方式 除非涉及业务上无法解决并发访问的问题,不要使用锁机制 包括但不限于: 上传文件 资源竞争 防止Session滥用 很多时候,存储一些对象在HttpSession中是有必要的,可以加快系统的开发,如网上商店系统会把购物车信息保存在该用户的Session中 但当存储大量的信息或是大的对象在会话中时,是有害的,特别是当系统中用户的访问量很大,对内存的需求就会很高 这时就要投入成本选择其它解决方式了 缓存 90%性能瓶颈在IO 缓存可以有效分离IO热点到更高速的IO设备上,如内存 选择好的缓存策略 存储策略 清理策略 考虑集群环境中缓存的同步问题 复制 集中 选择更好的JVM及优化 默认参数下的Tomcat运行几天就可能会因OutOfMemory而停止响应 需要优化jvm的内存参数和GC参数 bea jrockit或ibm jdk是更好的服务器端jvm 选择应用服务器 应用服务器有同质化的趋势 主流的开源Java EE容器基本都使用Tomcat作为Servlet/JSP实现 提供的服务趋于完善和标准化 选择应用服务器需要考虑 社区支持和商业支持 成功案例 结合项目的实际情况 Struts2的优化 关闭不需要的Logging和devMode 去掉不需要的拦截器 不要在海量请求URL上使用通配符模式 Struts2中Freemarker的优化 在WEB-INF/classes目录,新建一个perties文件,增加以下属性:template_update_delay=60000s。该值决定Freemarker重新加载模板文件的频率,默认为500ms Struts 2.0.10 版本设置struts.freemarker.templatesCache=true时,激活struts内部的Freemarker模板的缓存。该值默认为false? 在初步了解了Servlet/JSP技术后,我们再看一下目前比较主流的Java Web开发方式,MVC. 祝成科技,高端企业级IT培训专家 * 在初步了解了Servlet/JSP技术后,我们再看一下目前比较主流的Java Web开发方式,MVC. 祝成科技,高端企业级IT培训专家 * 一、Last-Modified、Expires和Etag相关工作原理 1、Last-Modified 在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记(Http Reponse Header)此文件在服务期端最后被修改的时间,格式类似这样: Last-Modified: Tue, 24 Feb 2009 08:01:04 GMT 客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头(Http Request Header),询问该时间之后文件是否有被修改过: If-Modified-Since: Tue, 24 Feb 2009 08:01:04 GMT 如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Change
文档评论(0)