总结篇:大型网站技术架构-性能(二)
来源:互联网 发布:淘宝上网络解锁可靠吗 编辑:程序博客网 时间:2024/05/20 01:11
前言:上次我说到缓存这块的东西,不过由于最近工作时间忙,项目催时间,出现了一些奇葩的问题,个人QQ空间都有记录每次遇到问题的解决方法,这就是经验吧,接着上面的来!
缓存预热
- 这个解释简单点,就是把常用的一些元数据,比如城市地名、类目等等,这些数据可以在启动时加载数据库中的全部数据到缓存中进行预热,(把一些常用的数据提前加载好)。
分布式缓存架构
- 首先说明下什么是分布式缓存,分布式缓存指缓存部署在多个服务器组成的集群中,以集群的方式提供缓存服务,它的架构方式有两种,第一是:JBoss Cache为代表的需要更新同步的分布式缓存,另一个也是我用的最多的,Memcached为代表的不互相通信的分布式缓存。我主要说下Memcached哦,毕竟我这个是用的最多的。
Memcached
- 首先它是使用的TCP协议通信,只要支持该协议的客户端都可以和Memcached服务器通信,(TCP协议后面要了解下,这个基本没怎么看过,哈哈),Memcached服务端通信模块基于Libevent(这玩意我也不知道是啥,等我后面有时间在研究哈,不过太深奥的它估计就看看吧,毕竟我还是以JAVA为主,后面会写点基础的东西)。Memcached是固定分配空间的,它的原理要画个图来说下,文字先说下,就是一个大空间看成N个小空间B 然后N个小空间B有包含N个小小空间C ,然后这个小小空间C大小是固定的,而相同空间大小的小小空间C又被组在一起看成一个,slab_class,然后每次放数据的时候是放在最小的slab_calss里面的,然后就没了。
代码优化
- 多线程的使用有助于提高任务并发度,提高系统吞吐能力,改善系统性能,但是使用多线程需要注意的问题就是线程安全问题,(就是N个线程并发对一个数据修改,导致数据混乱)。当然这是有解决的方法的。
- 将对象设计为无状态对象 (对象本身不存储状态信息)
- 使用局部对象
- 并发访问资源时使用锁、或者缓存 (别弄成死锁了啊)
资源复用
- 减少开销很大的系统资源的创建和销毁,资源复用的主要两种模式是:单例和对象池
垃圾回收
- 这个也是蛮重要的,为什么呢,因为理解垃圾回收机制有助于程序优化和参数调优,和编写内存安全的代码啊。就拿JVM来说,它的内存主要划分为,堆和堆栈,堆栈用于存储线程上下文信息;堆是存储对象的内存空间,对象的创建和释放、垃圾回收就在这里进行的哦,通过对对象生命周期的观察,发现大部分对象的生命周期都很短,然后这部分对象产生的垃圾应该被更快的收集,然后释放内存,这就是JVM分代垃圾回收,当然搞java的必须对JVM很了解,所以这个也是后面的任务之一啊,额,继续吧,在JVM分代垃圾回收机制中,将应用程序可用的堆空间分为 年轻代和老年代,年轻代有分为Eden区、Form区和To区,新的对象总是在Eden区被创建,然后Eden区空间满了,就触发一次年轻代的垃圾回收,将还被使用的对象复制到Form区,这样Eden未被使用的空间又可以继续创建对象咯,当Eden区再用完的时候会再次触发年轻代垃圾回收,把Eden区和Form区还在被使用的对象复制到To区,再然后多次触发年轻代垃圾回收,对象会在Form区和To区多次复制,要是超过某个阀值对象还没有被释放,就将该对象复制到老年区,要是老年区的空间也用完了,就会触发Full GC(全量回收),而全量回收会对系统的性能产生很大影响,所以要尽量的减少Full GC 。(这个后面在看看这本书)
《实战Java虚拟机:JVM故障诊断与性能优化》
存储性能优化 (这个就不说了,毕竟我现在确实看不懂这个)
0 0
- 总结篇:大型网站技术架构-性能(二)
- 总结篇:大型网站技术架构-性能(一)
- 大型网站技术架构』(二):高性能架构
- 大型网站技术架构 学习总结二(大型网站架构模式)
- 探索大型网站技术架构(二)
- 探索大型网站技术架构(二)
- 《大型网站技术架构》笔记(二)
- 『大型网站技术架构』(二):高性能架构
- 网站技术架构二(大型网站架构模式)
- 大型网站架构技术总结
- 《大型网站技术架构》总结---架构技术
- 大型网站技术架构(二)--架构模式(转)
- 大型网站技术架构(二)--架构模式
- 大型网站技术架构(二)--架构模式
- 大型网站技术架构(二)架构模式
- 大型网站技术架构(二)--架构模式
- 大型网站技术架构(二)--架构模式
- 大型网站技术架构(二)——架构模式
- 结巴分词2--基于前缀词典及动态规划实现分词
- 3.15
- 细说 IOS 时间相关
- oracle 多行合并成一行: listagg \ within group
- sdut 2870
- 总结篇:大型网站技术架构-性能(二)
- 1127. ZigZagging on a Tree (30) PAT 甲级
- JavaScript数据类型(一)
- 单例模式
- --save-dev 与--save的区别
- POJ 2503 Babelfish
- Android布局优化之Include(一)
- Java之多线程下载工具类
- 第一次编译AOSP简单流程