dubbo入门-dubbo用redis(5-9-87)
更新时间:2024-05-18 分类:Redis 浏览量:2
Redis本文目录一览:
- 1、使用redis实现的分布式锁原理是什么?
- 2、因在缓存对象中增加字段,导致Redis出现反序列化失败的问题
- 3、Dubbo——服务调用、服务暴露、服务引用过程
- 4、Dubbo简介
- 5、dubbo不支持Redis集群
使用redis实现的分布式锁原理是什么?
说实话,如果在公司里落地生产环境用分布式锁的时候,一定是会用开源类库的,比如Redis分布式锁,一般就是用Redisson框架就好了,非常的简便易用。
Redis分布式锁可以有多种方式实现但是其核心就是通过以下三个Redis命令组合实现。SETNX SETNX key val 当且仅当key不存在时,set一个key为val的字符串,返回1;若key存在,则什么都不做,返回0。
所以这个就是redis cluster,或者是redis master-slave架构的主从异步复制导致的redis分布式锁的最大缺陷:在redis master实例宕机的时候,可能导致多个客户端同时完成加锁。
分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。
首先,分布式锁和我们平常讲到的锁原理基本一样,目的就是确保在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。
获取锁最终都会调用这个方法,通过 lua 脚本与 redis 进行交互,来实现分布式锁。首先分析,传给 lua 脚本的参数:lua 脚本的流程:为了实现无限制持有锁,那么就需要定时刷新锁的过期时间。
因在缓存对象中增加字段,导致Redis出现反序列化失败的问题
那么这个时候取出来的缓存(最新的DTO的缓存)就会有反序列化的错误,发包的延迟和预发布验证的时间都会导致线上反序列化失败,从而阻塞业务。
该对象需要存进redis里面,序列化进去,没发现问题,但反序列化时,报如下错 经查,原来是fastjson不支持泛型,修改原有的对象即可:去掉泛形后序列化一起正常。
解决方案 这个问题肯定是和序列化有关的,我们指定一下缓存value的序列化方式,使用json来序列化对象,配置类的改造如下:再重启服务,缓存读取出来反序列化后的对象,可以正常使用。
最后说下jackson+redis序列化会根据get方法自动序列没有此字段的序列化字段出来,SimpleGrantedAuthority中只有role字段 ,没有authority字段,有getAuthority方法赋值role值。
要序列化,主要是一种针对需要I/O操作的,此时写入磁盘恰巧需要I/O。让类实现serializable接口,此类的对象就可以被序列化了。
Dubbo——服务调用、服务暴露、服务引用过程
1、从表面上duboo客户端能执行调用某个接口的方法,其实是通过网络传输告诉服务端。我要调用哪些方法,传递给你哪些参数。你帮我执行完。然后把结果给我就行了。这就是dubbo动态代理要完成的功能。
2、在我了解的范围里,目前只有 dubbo 、 SOFARPC 、 HSF 三个阿里系的 RPC 框架支持了接口级的服务发现。
3、dubbo原理和机制:应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。
4、Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
5、Provider: 暴露服务的服务提供方。Consumer: 调用远程服务的服务消费方。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次数和调用时间的监控中心。
Dubbo简介
Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。
蓝湖 蓝湖是一款产品文档和设计图的共享平台,帮助互联网团队更好地管理文档和设计图。蓝湖可以在线展示Axure,自动生成设计图标注,与团队共享设计图。
查尔斯特大学创建于1989年,是澳大利亚一所综合公立大学,历史可追溯至1890年,位于新南威尔士州。学校在Albury-Wodonga,Bathurst,Wagga Wagga,Dubbo,Orange拥有5个主要校园。
dubbo不支持Redis集群
1、Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的,默认也是用的dubbo协议。
2、集群本来就是为了分担压力,负载均衡做的不好,就会失去了集群的意义。 按照权重随机分配 按照权重随机分配,即是不均等随机事件。比如一块不均匀的硬币,字面30%概率,花面70%概率。这种就是不均等的随机事件。
3、最好不要,因为集群系统暂时还没同步大型数据库(mssql;mysql)。所以当服务器不 能正常工作时,集群系统只是把您的站点转移到别的服务器上,并没把数据库也同时转 移过去,所以最好把数据库开设在群外的服务器上。