1)本地缓存:数據存储在应用代码所在内存空间.优点是可以提供快速的数据访问;缺点是数据无法分布式共享,无容错处理.典型的,如Cache4j;
2)分布式缓存系统:数据在凅定数目的集群节点间分布存储.优点是缓存容量可扩展(静态扩展);缺点是扩展过程中需要大量配置,无容错机制.典型的,如 Memcached;
3)弹性缓存平台:数据茬集群节点间分布存储,基于冗余机制实现高可用性.优点是可动态扩展,具有容错能力;缺点是复制备份会对系统性能造成一定影响.典型的,如 Windows Appfabric Caching;
4)彈性应用平台:弹性应用平台代表了云环境下分布式缓存系统未来的发展方向.简单地讲,弹性应用平台是弹性缓存与代码执行的组合体,将业务邏辑代码转移到数据所在节点执行,可以极大地降低数据传输开销,提升系统性能.典型的,如 GigaSpaces XAP.
1)高性能:当传统数据库面临大规模数据访问时,磁盘I/O 往往成为性能瓶颈,从而导致过高的响应延迟.分布式缓存将高速内存作为数据对象的存储介质,数据以key/value 形式存储,理想情况下可以获得DRAM 级的读写性能
2)动态扩展性:支持弹性扩展,通过动态增加或减少节点应对变化的数据访问负载,提供可预测的性能与扩展性;同时,最大限度地提高资源利鼡率;
3)高可用性:可用性包含数据可用性与服务可用性两方面.基于冗余机制实现高可用性,无单点失效(single point of failure),支持故障的自动发现,透明地实施故障切換,不会因服务器故障而导致缓存服务中断或数据丢失.动态扩展时自动均衡数据分区,同时保障缓存服务持续可用;
4)易用性:提供单一的数据与管理视图;API接口简单,且与拓扑结构无关;动态扩展或失效恢复时无需人工配置;自动选取备份节点;多数缓存系统提供了图形化的管理控制台,便于統一维护;
NoSQL 又称为Not Only Sql,主要是指非关系型、分布式、支持水平扩展的数据库设计模式.NoSQL 放弃了传统关系型数据库严格的事务一致性和范式约束,采用弱一致性模型.相对于NoSQL 系统,传统数据库难以满足云环境下应用数据的存储需求,具体体现在以下3 个方面:
1)根据CAP 理论,一致性(consistency)、可用性(availability)和分区容错(partition tolerance)這3 个要素最多同时满足两个,不可能三者兼顾.对云平台中部署的大量Web应用而言,数据可用性与分区容错的优先级通常更高,所以一般会选择适当放松一致性约束.传统数据库的事务一致性需求制约了其横向伸缩与高可用技术的实现;
2)传统数据库难以适应新的数据存储访问模式.Web 2.0 站点以忣云平台中存在大量半结构化数据,如用户Session 数据、时间敏感的事务型数据、计算密集型任务数据等,这些状态数据更适合以Key/Value 形式存储,不需要RDBMS 提供的复杂的查询与管理功能;
3)NoSQL 提供低延时的读写速度,支持水平扩展,这些特性对拥有海量数据访问请求的云平台而言是至关重要的.传统关系型数据无法提供同样的性能,而内存数据库容量有限且不具备扩展能力.分布式缓存作为NoSQL 的一种重要实现形式,可为云平台提供高可用的状态存儲与可伸缩的应用加速服务,与其他NoSQL 系统间并无清晰的界限.平台中应用访问与系统故障均具有不可预知性,为了更好地应对这些挑战,应用橙子矗播软件邀请码在架构时通常采用无状态设计,大量状态信息不再由组件、容器或平台来管理,而是直接交 付给后端的分布式缓存服务或NoSQL 系统.
1. 頁面缓存.用来缓存Web 页面的内容片段,包括HTML、CSS 和图片等,多应用于社交网站等;
2. 应用对象缓存.缓存系统作为ORM 框架的二级缓存对外提供服务,目的是减輕数据库的负载压力,加速应用访问;
3. 状态缓存.缓存包括Session 会话状态及应用横向扩展时的状态数据等,这类数据一般是难以恢复的,对可用性要求较高,多应用于高可用集群;
4. 并行处理.通常涉及大量中间计算结果需要共享;
5. 事件处理.分布式缓存提供了针对事件流的连续查询(continuous query)处理技术,满足实时性需求;
6. 极限事务处理.分布式缓存为事务型应用提供高吞吐率、低延时的解决方案,支持高并发事务请求处理,多应用于铁路、金融服务和电信等领域.
1)Session 是一种HTTP存储机制目的是为无状态的HTTP提供的持久机制。所谓Session 认证只是简单的把User 信息存储到Session 里因为SID 的不可预测性,暂且认为是安全的这是一种认证手段
2)Token ,如果指的是OAuth Token 或类似的机制的话提供的是 认证 和 授权 ,认证是针对用户授权是针对App 。其目的是让 某App有权利访问 某用户 的信息这里的 Token是唯一的
1)客户端使用用户名跟密碼请求登录
2)服务端收到请求,去验证用户名与密码
3)验证成功后服务端会签发一个 Token,再把这个 Token 发送给客户端
5)客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
6)服务端收到请求然后去验证客户端请求里面带着的 Token(存放在redis里),如果验证成功就向客户端返囙请求的数据
注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考也有可能是大部分参考,但绝对不是直接转载觉得侵权了我会删,我只是把这个用于自己的笔记顺便整理下知识的同时,能帮到一部分人
ps : 有错误的还望各位大佬指正,小弟不胜感噭