标签:
1.负载均衡,加服务器分流
1)nginx做负载服务器,分发处理请求,ip_hash依据ip定位服务器,防止session不共享处理。
2.代码尽量优化
1)包括常用写法,for循环变量等等,网上很多资料。
2)消耗资源和占用内存多的,都必须处理分批处理,比如批量处理txt文档,如果txt文档大于1w个,Apache ftp如果一次加载完,必然内存溢出,必须分批次处理,一次加载1000或者5000依据情况而定,最好使用多线程处理,比如读txt和处理txt,读线程池解决,CountDownLatch类处理线程池做任务的先后顺序。
3)用完资源及时关闭,对读取文件和连接还有socket等等
4)对httpclient请求,请求时间等待时间等等处理。
3.减少对数据库访问,最好批量插入。
1)系统启动时候启动线程处理队列,如果需要插入sql,把sql放入队列,线程定时处理这些sql。
4.缓存,增加缓存,增加访问速度。
1)memcached支持的语言最多,只支持key-value
2)redis对java支持最好,用的最多支持类型比memcached多。
5.缓存集群解决规模大的访问请求,主从复制一般小中型项目可以解决了。
1)无论memcached和redis都可以集群处理大型系统项目
2)我只用过redis主从复制,这个一般就可以解决大部分问题,只需写一个redis服务器,其他服务器自动复制,这样就可以访问这些服务器缓存数据。
6.限流,随机一些访问跳到宣传页面。
1)限流,没有办法的办法,对访问限制很好解决并发数多的请求。
7.对数据库访问高效率
1)jndi和druid,bencop选择合适的连接池,依据经验处理吧。
8.使用队列,一些操作可以使用多线程解决
1)activemq可以异步处理消息,也可以自己用jdk5线程池处理。
2)dubbox不知道对异步处理怎么样,需要我写demo,目前没测试。
9.分层,分隔,分布
1)我做过三种这种类型的项目开发,一种是建很多java工程,编译到web工程下面,没增加一个模块建一个工程,劣势要是使用某个模块很麻烦。
10.异步,使用队列,请求无需等到回应可以返回,队列处理这些请求!
11.高性能,程序员从加缓存,负载均衡,队列处理消息等处理。
12.高并发,web端页面样式图片存放服务器,最好放在负载均衡那台服务器,减少网络传输影响
1)web端的css,js,图片等等放到nginx,减少网络传输开销,最好处理方式
2)减少http请求,每个请求都需要耗费性能,不需要的请求可以减少,最好把数据准备好,一次请求搞定
标签:
原文地址:http://www.cnblogs.com/dayuebings/p/5061377.html