微服务分布式架构 第九章 微服务的缓存与分布式消息通信
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微服务分布式第九课的实验
1. 【实例】微服务整合Spring Data Redis增删改查 2. 【实例】分布式使用Redis实现消息通信 3. 【实例】保持MySQL与Redis数据一致性
微服务分布式第九课的习题
1. 创建Spring Boot工程,使用Spring Data Redis整合Redis非关系型数据库,并进行增删改查,记录 Redis可视化软件中的相关结果。
2. 创建Spring Boot工程1与Spring Boot工程2,两个工程通过Redis达到消息通信的目的,即在Spring Boot工程1并不执行任何命令和函数的同时,Spring Boot工程2向Spring Boot工程1中传输数据,Spring Boot工程1能正确收到。
3. 创建Spring Boot工程,整合Spring Data JPA 和 Spring Cache分别用来操作Redis和MySQL,达到以 下目的。 (1)在查询MySQL前,优先查询Redis,若Redis中没有,再查询MySQL。 (2)在查询MySQL前,优先查询Redis,若Redis中有,直接使用Redis进行返回。 (3)若Redis中有某一数值,在对MySQL中该数值进行更改时,要保证Redis和MySQL之间的数据一致 性。
微服务分布式第九课的总结
本章通过《9.2 【实例】Spring Boot使用Spring Data Redis整合Redis增删改查》小节与《9.6 【实例】 用Cache和JPA整合MySQL与Redis保持数据一致性》小节分别使用Spring Data Redis与Spring Cache整 合Redis实现缓存的增删改查。
Spring Data Redis
Spring项目可以通过Spring Data Redis框架,可以将Java Bean数据使用键值对的 数据的格式存入Redis之中。Spring Data Redis提供了一个“模板”作为发送和接受消 息的高级抽象化载体。Spring Data Redis与Spring框架中的JDBC有许多使用上的 相似之处。
Spring Data Redis给Spring相关的应用程序提供了轻松的配置和访问ຫໍສະໝຸດ Baidu力,在使用 它的过程中,用户不需要知道底层是如何实现的,只需要关注自身的业务即可。当 然Spring Data Redis也依靠Spring IOC的方式,将RedisTemplate注入到自身的应 用程序之中即可操纵Redis数据库。
Redis
Redis是一个开源的(BSD许可的)内存数据结构存储,用作数据库、缓存和消息代理的非关系型数据库。 它支持字符串、散列、列表、集合、带范围查询的排序集、位图、超日志、具有RADIUS查询和流的地理 空间索引等数据结构。Redis内置了复制、Lua脚本、事务处理和不同级别的磁盘上持久化,并通过Redis Sentinel和Redis集群自动分区提供了高可用性。上文中的Lua是一门小巧的语言,作为脚本语言而存在, 通常在Unity3d、Cocos2d、服务器运维等方面独立存在着。
Spring Data Redis使用了RedisConnection为通信提供了核心的构建模块,它将处 理与Redis的连接通信。此时相当于把过去实现与Redis连接中的Conn工具类进行了 整合。当然若有特殊需要的时候,RedisConnection也提供了getNativeConnection 返回了通信的原始底层对象。在实际场景中,Spring Data Redis给予了使用者 RedisConnectionFactory的工程类,来统一管理RedisConnection连接,通常将 Redis相关的配置数据存入了Spring Boot的application.properties之中, RedisConnectionFactory可直接使用以上相关配置信息。整个过程都十分的便捷与 方便。最简单的使用方法是通过IOC容器将RedisConnectionFactory连接器工厂注 入到使用的类之中。
通过《9.5 【易错点】分布式使用Redis实现消息通信》小节实现了使用Redis作为消息通信中间件来进行 多个微服务之间的通信。
Redis是最简洁的非关系型缓存数据库,在工作中也是使用最频繁的,所以希望可以通过本章让读者更加 了解如何用微服务轻便的整合Redis缓存。
Redis使用类似于Map的Key-Value的数据类型进行存储。与其类似的项目还有Memcached、MongoDB。 为了保证效率,数据都是存储在内存之中的。而和实际内存的区别即是:Redis会周期性的把更新的数据 写入磁盘或者修改操作写入追加的记录文件,并以此为基础实现了Master-Slave主从同步的模式,后续又 有优化可部署为哨兵模式。Redis提供了将缓存持久化的能力,在不同的场合下可以对关系型数据库起到 了很好的补充作用。Redis使用广泛,除Java之外它也提供了C/C++,C#,PHP,Perl,Object-C, Python,Ruby等语言的整合方式,使用起来十分的方便,并且也是最流行的非关系型数据库之一。 Spring Boot通常整合Redis、Mongo等相关非关系型数据库作为微服务的缓存。