- 浏览: 599621 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (669)
- oracle (36)
- java (98)
- spring (48)
- UML (2)
- hibernate (10)
- tomcat (7)
- 高性能 (11)
- mysql (25)
- sql (19)
- web (42)
- 数据库设计 (4)
- Nio (6)
- Netty (8)
- Excel (3)
- File (4)
- AOP (1)
- Jetty (1)
- Log4J (4)
- 链表 (1)
- Spring Junit4 (3)
- Autowired Resource (0)
- Jackson (1)
- Javascript (58)
- Spring Cache (2)
- Spring - CXF (2)
- Spring Inject (2)
- 汉字拼音 (3)
- 代理模式 (3)
- Spring事务 (4)
- ActiveMQ (6)
- XML (3)
- Cglib (2)
- Activiti (15)
- 附件问题 (1)
- javaMail (1)
- Thread (19)
- 算法 (6)
- 正则表达式 (3)
- 国际化 (2)
- Json (3)
- EJB (3)
- Struts2 (1)
- Maven (7)
- Mybatis (7)
- Redis (8)
- DWR (1)
- Lucene (2)
- Linux (73)
- 杂谈 (2)
- CSS (13)
- Linux服务篇 (3)
- Kettle (9)
- android (81)
- protocol (2)
- EasyUI (6)
- nginx (2)
- zookeeper (6)
- Hadoop (41)
- cache (7)
- shiro (3)
- HBase (12)
- Hive (8)
- Spark (15)
- Scala (16)
- YARN (3)
- Kafka (5)
- Sqoop (2)
- Pig (3)
- Vue (6)
- sprint boot (19)
- dubbo (2)
- mongodb (2)
最新评论
一般情况下,架构分两种来讨论的,一种是开发架构,一种是部署架构
部署架构,就是开发完的程序在实际运行环境下,通过负载均衡,DNS轮询,SquID等等来减轻单台服务器负载,达到性能优化的目的
这里大家估计更想了解的是开发上的架构
我对这个的观点是,所有的架构都是死的,而Web高性能开发优化策略是活的,我在开发中,所有的东西都不是一定要按照什么固定的模式,去死开发,更多的是针对需要优化的信息进行针对处理,下面说说我的优化策略
1、数据库优化,这个是所有的优化策略中最重要的,可以说数据库设计的好坏,直接影响了一个系统的承受力。普通的数据库细节优化,网上已经有大笔文章了,没什么好说的,想了解的自己去找。而我要说的就是在数据库设计中的一个思路,分库、分表、缓存表。
1)分库指的是在设计中,要考虑到后期数据量大的情况下,你的数据库能够随着应用随时拆分,这个拆分并不是只是针对功能模块对应的数据拆分。举个例子,就用这个CSDN论坛吧,比如里面有很多类,C#版,JAVA版,系统设计版等等,拆分的目的是可以把任何一个版的数据拆分到单独的一个数据库中去。
2)分表相对的就好理解了,就是说同类型的数据,你可以为了性能优化,进行拆分到多个表中去,拆分规则可以有多种,按照类型、按照时间、按照姓名等等。同样以这个CSDN论坛来说,我要设计的话,我会按照里面的大版面进行数据库拆分,而按照小版,进行表拆分。
3)而对于缓存表,网上我还很少看到有人来说这个东西,这个的目的就是针对一个大的数据表中,一般中有死数据库和活动数据,比如用户表,里面有很多基本不来的用户,那么针对这样的情况,当表数据上了千万的时候,我就会采用缓存表的模式来进行了,就是在实际表和用户之间在搭建一个临时表,访问用户数据时,首先访问临时表,如果不存在,则进入实际表中获取,然后放入缓存表中,同时会通过后台线程,定时将缓存表数据同步到实际数据库中,同步时间可以针对系统要求来进行。
如果理解了上面的东西,那么在数据承载上,可以上升一个很大的层次。。。。。
2、程序优化。这个对我来说相对的就不是那么的看中了,程序的优化,我更多的认为是个技巧,而不是架构了,包括现在经常见到的那些各种设计模式,另外这里提下,很多设计模式,他的出发点并不是Web高性能开发,而是考虑的系统扩展性,所以在单个技术细节上,很多人也发现了,并不如直接的写代码来的快,但是就是推荐那样,是因为采用了那些模式的程序,扩展性比你的强,那么一旦系统要求变动,或者是要求进行拆分的时候要比你方便的多,在分担到多个服务器上时,性能相对的就起到了优化也。废话了通,继续说我对程序部分经常采用的方式吧
1)首推静态化,这个的优化效果不用多说,直接减轻了服务器负担,不过如果用上了Squid,那么有第三放来做静态,也可以达到同样的效果
2)合适的数据缓存,缓存很多人都用到了,但是在使用前,是否认真思考过为这个这个要进行Cache,Cache他的标准是什么?我说下我的标准:小数据量、大访问量、更新尽量少的数据,全部可以进行缓存。另外我提到的缓存,并不只是说。NET本身提供的Cache,我说的缓存还包括了使用 Static来进行的数据
3)活用线程,很多人的观念中感觉线程好象在B/S中是用不到的,或者是没有必要。其实这个观念完全错,在特定情况下使用线程,可以提高的局部性能不是一点两点
4)功能模块拆分,这个一般人基本都在做,我要补充的是,不只是在单个项目中进行功能模块的拆分,而是为了进行分步式开发而进行拆分
在其它的基本都是细节优化了,这个没有太多兴趣写了,网上资料应该不少,可以自己搜索查阅
上面的这几部分如果能在开发中,灵活运用上,可以说,你实现Web高性能开发,绝对不是难事。
我曾经开发的过的站点中,也有过社区,一个WEB服务器,一个DB服务器,主题帖千万,回复帖有6000W左右吧,其它数据不算,运行过程中没出过任何问题,日访问在100WPV情况下,还没有达到性能瓶颈。
部署架构,就是开发完的程序在实际运行环境下,通过负载均衡,DNS轮询,SquID等等来减轻单台服务器负载,达到性能优化的目的
这里大家估计更想了解的是开发上的架构
我对这个的观点是,所有的架构都是死的,而Web高性能开发优化策略是活的,我在开发中,所有的东西都不是一定要按照什么固定的模式,去死开发,更多的是针对需要优化的信息进行针对处理,下面说说我的优化策略
1、数据库优化,这个是所有的优化策略中最重要的,可以说数据库设计的好坏,直接影响了一个系统的承受力。普通的数据库细节优化,网上已经有大笔文章了,没什么好说的,想了解的自己去找。而我要说的就是在数据库设计中的一个思路,分库、分表、缓存表。
1)分库指的是在设计中,要考虑到后期数据量大的情况下,你的数据库能够随着应用随时拆分,这个拆分并不是只是针对功能模块对应的数据拆分。举个例子,就用这个CSDN论坛吧,比如里面有很多类,C#版,JAVA版,系统设计版等等,拆分的目的是可以把任何一个版的数据拆分到单独的一个数据库中去。
2)分表相对的就好理解了,就是说同类型的数据,你可以为了性能优化,进行拆分到多个表中去,拆分规则可以有多种,按照类型、按照时间、按照姓名等等。同样以这个CSDN论坛来说,我要设计的话,我会按照里面的大版面进行数据库拆分,而按照小版,进行表拆分。
3)而对于缓存表,网上我还很少看到有人来说这个东西,这个的目的就是针对一个大的数据表中,一般中有死数据库和活动数据,比如用户表,里面有很多基本不来的用户,那么针对这样的情况,当表数据上了千万的时候,我就会采用缓存表的模式来进行了,就是在实际表和用户之间在搭建一个临时表,访问用户数据时,首先访问临时表,如果不存在,则进入实际表中获取,然后放入缓存表中,同时会通过后台线程,定时将缓存表数据同步到实际数据库中,同步时间可以针对系统要求来进行。
如果理解了上面的东西,那么在数据承载上,可以上升一个很大的层次。。。。。
2、程序优化。这个对我来说相对的就不是那么的看中了,程序的优化,我更多的认为是个技巧,而不是架构了,包括现在经常见到的那些各种设计模式,另外这里提下,很多设计模式,他的出发点并不是Web高性能开发,而是考虑的系统扩展性,所以在单个技术细节上,很多人也发现了,并不如直接的写代码来的快,但是就是推荐那样,是因为采用了那些模式的程序,扩展性比你的强,那么一旦系统要求变动,或者是要求进行拆分的时候要比你方便的多,在分担到多个服务器上时,性能相对的就起到了优化也。废话了通,继续说我对程序部分经常采用的方式吧
1)首推静态化,这个的优化效果不用多说,直接减轻了服务器负担,不过如果用上了Squid,那么有第三放来做静态,也可以达到同样的效果
2)合适的数据缓存,缓存很多人都用到了,但是在使用前,是否认真思考过为这个这个要进行Cache,Cache他的标准是什么?我说下我的标准:小数据量、大访问量、更新尽量少的数据,全部可以进行缓存。另外我提到的缓存,并不只是说。NET本身提供的Cache,我说的缓存还包括了使用 Static来进行的数据
3)活用线程,很多人的观念中感觉线程好象在B/S中是用不到的,或者是没有必要。其实这个观念完全错,在特定情况下使用线程,可以提高的局部性能不是一点两点
4)功能模块拆分,这个一般人基本都在做,我要补充的是,不只是在单个项目中进行功能模块的拆分,而是为了进行分步式开发而进行拆分
在其它的基本都是细节优化了,这个没有太多兴趣写了,网上资料应该不少,可以自己搜索查阅
上面的这几部分如果能在开发中,灵活运用上,可以说,你实现Web高性能开发,绝对不是难事。
我曾经开发的过的站点中,也有过社区,一个WEB服务器,一个DB服务器,主题帖千万,回复帖有6000W左右吧,其它数据不算,运行过程中没出过任何问题,日访问在100WPV情况下,还没有达到性能瓶颈。
发表评论
文章已被作者锁定,不允许评论。
-
java CyclicBarrier进行并发编程
2017-08-25 15:44 673CyclicBarrier允许一组线程相互等待达到一个公共的障 ... -
java 几种性能优化的总结
2017-08-23 14:08 3251、使用StringBuilder 一般 ... -
java 使用kyro进行高性能序列化对象和集合
2017-08-23 14:05 2152import java.io.ByteArrayInp ... -
java 对重复电话号码进行排除的优化(排序和前后对比)
2017-08-22 14:14 7911.先对10万数据排序; 2.对比前后两条数据 ; 3.筛 ... -
如何解决常见的缓存穿透、并发和失效问题
2017-04-12 09:25 507缓存穿透与并发方案 相信不少朋友之前看过很多类似的文章,但是 ... -
系统架构设计理论与原则、负载均衡及高可用系统设计速记
2017-02-14 15:14 488一、系统架构设计理论与原则 这里主要介绍几种常见的架构设计理论 ... -
HTTP Cache机制学习(response meta标签)
2017-01-03 15:10 739HTTP Cache:response头部设置、http页面m ... -
java AbstractQueuedSynchronizer介绍以及原理分析
2016-11-18 14:27 507简介 提供了一个基于FIF ... -
java Guava cache学习笔记
2016-11-15 18:26 734缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单 ... -
java 一致性 hash 算法
2014-04-29 09:00 448一致性 hash 算法( consistent hashing ...
相关推荐
这份“最近几年Web开发总结”旨在梳理这一时期的热点技术和最佳实践,帮助我们更好地理解和应对Web开发的现状。 1. **前端框架的崛起**:JavaScript框架的迭代速度加快,从最初的jQuery到AngularJS,再到React、Vue...
在IT行业中,Web开发框架是构建高效、可维护和可扩展的Web应用程序的关键工具。本篇文章将对几个主流的Java Web开发框架进行深入探讨,包括Struts 2、Hibernate、Spring、Spring MVC以及MyBatis,这些都是在培训过程...
总结,开发高性能的Web Service应用涉及服务设计、服务器配置、网络传输、数据库、并发处理等多个层面。理解这些关键技术并结合实际应用场景进行优化,是提升Web Service性能的关键。提供的20051222pm--开发高性能的...
C++以其高效、低级特性和对内存管理的精细控制,能够为高性能Web应用程序提供强大的后盾。下面我们将详细探讨如何利用C++进行Web开发,并介绍相关的库和技术。 1. C++ Web框架 C++的Web开发并不像PHP那样有一套广泛...
Vue以其易学易用和高性能著称,适合快速开发;Angular则是一个完整的MVC解决方案,提供全面的工具链支持。 Web性能优化是另一个不可忽视的方面。通过压缩代码、减少HTTP请求、利用CDN(内容分发网络)和缓存策略,...
Flask,作为一个轻量级的Python Web框架,自2010年开源以来,已经在开发者社区中积累了极高的声誉。与Django这样的全功能框架相比,Flask以其灵活性、简单性和可扩展性赢得了众多Python爱好者的青睐。在本文中,我们...
Nginx作为高性能Web服务器的关键特性包括: 1. 事件驱动架构:Nginx使用了与传统多线程模型不同的事件驱动模型,这种方式更加高效地处理大量并发连接。 2. 轻量级:Nginx的资源占用很小,包括内存和CPU的占用都远...
高性能web站点的建立是前端开发中的一个重要环节,涉及网页加载速度、用户体验优化等多个方面。根据提供的文件内容,可以提取出以下几点关于高性能web站点建设的知识点: 1. 前端性能优化的重要性:文档中提到了高...
"2022年Web前端开发技术总结" 网络与软件环境 1. HTTP/2 普及:2022年,所有现代桌面浏览器都已经支持了HTTP/2协议,移动端依靠降级为SPDY依旧可以覆盖几乎所有平台,优化页面性能变得可能。 2. 静态资源打包:...
Java平台提供了丰富的库和框架,使得开发者能够高效地开发出高性能、可扩展的Web应用。 “代码收集.rar”可能包含了各种示例代码或项目片段,有助于学习和理解不同的Web开发技术。对于初学者,研究这些代码可以帮助...
从文章中提供的内容来看,JFinal框架的确能够满足当前快速发展的技术和Web需求,且在性能设计方面具有很高的可维护性和可扩展性。同时,JFinal项目的文档和社区支持也在不断壮大,为开发者提供了良好的资源和帮助。
它以其高性能、易用性和开源特性而受到青睐。 7. Struts:Struts是一个MVC框架,它简化了Java Web应用的开发。通过Struts,开发者可以将业务逻辑、表示层和控制逻辑分离,提高代码的可维护性和可重用性。 8. ...
本书《构建高性能Web站点》是一本面向Web开发人员、架构师和技术负责人的综合性指南。通过对关键技术和实践经验的深入讲解,帮助读者理解如何构建和维护高性能的Web站点。无论是对于希望提高现有站点性能的专业人士...
ASP.NET Core是跨平台的,支持快速开发高性能的Web应用。 【SQL Server】 SQL Server是微软公司的关系数据库管理系统,用于存储、管理和检索数据。它支持T-SQL(Transact-SQL)语言,提供了丰富的安全性和性能优化...
### 实战Nginx:取代Apache的高性能Web服务器 #### Nginx简介 Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发。自2004年公开发布以来,...
FastSwoole是一款基于PHP的Swoole扩展开发的高性能Web框架,旨在充分利用Swoole的非阻塞I/O、事件驱动和协程特性,为PHP开发者提供一个轻量级且高效的应用开发平台。本文将深入探讨FastSwoole的核心特性、工作原理...
### WEB前端开发性能优化知识点详解 #### 一、性能优化 **1. 减少HTTP请求数** - **背景**: 在网页加载过程中,每个图片、CSS文件、JavaScript文件、Flash对象等都会产生一个HTTP请求,这会显著增加网页加载时间...
总结,C#.NET Web服务开发涵盖了从基础的ASMX服务到更高级的WCF服务,以及RESTful服务的设计和实现。理解这些知识点对于开发者来说至关重要,能够帮助他们构建高效、安全的跨平台通信解决方案。