1.1 软件的三大类型
- 单机软件,BS,CS
1.2 基础的软件架构
- BS结构网络传输的分解方式为2种:1.标准的OSI参考模型 2.TCP/IP参考模型
OSI参考模型一共分为7层,不过它主要用于教学,实际使用中更多的是TCP/IP的4层模型。对于TCP/IP4层模型可以简单理解为:
- 网络接入层:将需要连接的节点接入网络,从而为数据传输提供条件。
- 网际互连层:找到要传输数据的目标节点。
- 传输层:实际传输数据。
- 应用层:使用接受到的数据。
BS结构中TCP/IP模型中的网络接入层没用相关协议,网际互连层是IP协议,传输层是TCP协议,应用层是HTTP协议。
另外在BS结构中还使用了DNS协议,而且在HTTP上层还有相关的规范,如Java Web开发中使用的是Servlet标准。1.3 架构演变的起点
当数据和流量变得越来越大时,需要将应用程序和数据库分别放到不同的主机中。
1.4 海量数据的解决方案
1.4.1 缓存和页面静态化
数据量大这个问题直接的解决方法是使用缓存,缓存就是将从数据库中取得的数据暂时保存起来,在下次使用时,无需再从数据库中获取,这样可以大大降低数据库的压力。
缓存的使用方式可以分为通过程序直接保存到内存中和使用缓存框架两种方式。程序直接操作主要是使用Map,尤其是CurrentHashMap,而常用的缓存框架有Ehcache、Memcache和Redis等。缓存使用过程中最重要的问题是什么时候创建缓存和缓存的失效机制。缓存可以在第一次获取时创建,也可以在程序启动和缓存失效后立即创建。缓存的失效可以分为定期失效,也可以在数据发送变化时失效。如果按后者,还可以分为粗粒度失效和细粒度失效。
缓存主要适用于数据变化不是很频繁的情况。而且如果是定期失效(数据修改时不失效)的失效机制,实时性要求也不能太高。
跟缓存相似的另一种技术叫页面静态化,即将程序最后生成的页面保存起来。使用页面静态化就不需要每次调用都生成静态页面,这样不但不需要查询数据库,而且连应用程序处理都省了。
页面静态化可以在程序中使用模板技术生成