软件的3大类型
- 单机类型
- C/S类型
- BS类型
BS网络架构传输方式分解方式有两种 一种 OSI参考模型 另一种 TCP/IP参考模型
数据传输的本质 按照晶体震动周期或者其整数倍来传输代表0/1的高低电平
网站最主要问题 响应速度
核心 :解决海量数据操作问题和高并发问题
海量数据的解决方案
缓存和页面静态化
==================================================================================================
缓存将获取数据结果暂时保存起来,下次使用不需要在访问数据库。
缓存的使用方式可分为
通过程序直接保存到内存 使用map 尤其是ConcurrentHashMap
和使用缓存框架 Ehcache Memcache Redis
缓存中最重要的问题是什么时候创建缓存和缓存的失效机制
例如 第一次获取创建 或者 程序启动 或者缓存失效后
失效 可以定期失效 也可以数据发生变化(还可以分粗粒度失效 细粒度失效)
缓存中最好将空数据 用特殊的类型值保存 原因可以自己思考
使用场景 不频繁变化 实时性要求不高
-------------------------------------------------------------------------------------------------------------------------------
页面静态化 将程序生成的页面保存起来,就不需要查询数据库,也不需要程序处理
实现方式:模板技术生成 常用的Freemark Velocity 还可以用缓存服务器在上一次缓存生成的页面 比如Squid Nginx提供了相应的功能
=====================================================================================================
数据库优化
=====================================================================================================
这是一种用技术换金钱的方式
常见的技术
表结构优化
SQL语句优化
分区
分表
索引优化
使用存储过程代替直接操作
合理使用冗余
数据库优化这些技术在后面可以做单独的一期讲解,待续--------------------
======================================================================================================
分离活跃数据
======================================================================================================
虽然总量很大,但是活跃的不多,例如网站注册很对,但很多都是僵尸用户,偶尔登录,通过一个定期的处理将不活跃的移动到别的数据库表中
其实主要想法类似于CPU的三级缓存
======================================================================================================
批量读取和延迟修改
=====================================================================================================
原理减少操作次数来提高效率
批量读取将多条查询合并到一次中进行,有效的减少了查询数据库的次数,这种类型可以用异步请求来处理
延迟修改针对高并发且频繁修改的数据,比如统计一些数据,可以先缓存起来,再去提交
=======================================================================================================
读写分离
=====================================================================================================
本质对数据库集群,高并发情况下降低单台服务器压力
引发的问题 分布式一致性 如何做到数据库同步
一般情况 一台服务器,即主服务器, 负责写 为master ,再同步到其他从服务器上slave,在后面有机会了做深入讲解
同步方式:数据库热备份 可能引发数据滞后性
集群就可能引发负载均衡问题,这些有专门的处理,保证对应用系统的透明性
负载均衡问题在后面也会做一期讲解,待续----
======================================================================================================
分布式数据库
========================================================================================================
数据库集群是将多个请求分配到不同的服务器处理从而减轻单台服务器压力
而分布式数据库是解决单个请求本身就很复杂的问题,将单个请求分配到多个服务器上处理
引发的问题:事物处理,多表查询
其他使用思路:将不同的业务数据保存在不同的节点
分布式事物会在后面做一期讲解,待续-----
======================================================================================================
nosql和Hadoop
======================================================================================================
nosql核心是非结构化,突破限制,灵活操作,利用多个块存储的特点,操作大数据数据快
Hadoop对数据的存储和处理提供了解决方案,hadoop存储思路和解决方案在后面会做一期讲解,待续----
=====================================================================================================
今天先更新到这里,欢迎补充,后期也会针对文章缺陷不断改进
=====================================================================================================
欢迎关注我的个人订阅号,我会推送更好的文章给大家,多谢
===============================================================================