
Cloud
文章平均质量分 67
liudachu
当你的才华撑还不起你的野心时,那你就应该静下心来渎书
展开
-
一文搞定单点登录
在 B/S 系统中,登录功能通常都是基于 Cookie 来实现的。当用户登录成功后,一般会将登录状态记录到 Session 中,或者是给用户签发一个 Token,无论哪一种方式,都需要在客户端保存一些信息(Session ID 或 Token ),并要求客户端在之后的每次请求中携带它们。在这样的场景下,使用 Cookie 无疑是最方便的,因此我们一般都会将 Session 的 ID 或 Token 保存到 Cookie 中,当服务端收到请求后,通过验证 Cookie 中的信息来判断用户是否登录。原创 2024-05-29 23:19:05 · 1573 阅读 · 0 评论 -
分布式锁的三种实现方式
上面几种方式,哪种方式都无法做到完美。就像CAP一样,在复杂性、可靠性、性能等方面无法同时满足,所以,根据不同的应用场景选择最适合自己的才是王道。1.从实现的复杂性角度(从高到低)zookeeper >= redis> 数据库数据库实现的分布式锁易于理解和实现,且不会给项目引入其他依赖。zookeeper和redis需要考虑的情况更多,实现相对较为复杂,但是都有现成的分布式锁框架curator和redision,用起来代码反而可能会更简洁。原创 2024-06-08 15:11:34 · 1382 阅读 · 0 评论 -
Seata分布式事务
Seata是Java领域很强大的分布式事务框架,其支持了多种模式。其中默认支持的AT模式,相比于传统的2PC协议(基于数据库的XA协议),很好地解决了2PC长期锁资源的问题,提高了并发度。Seata支持的各个模式中,AT模式对业务零入侵实现分布式事务,对于开发者更加友好。另外Seata的Server在选择合适的存储介质时可以进行集群模式,减少单点故障影响。原创 2024-06-19 10:51:29 · 973 阅读 · 0 评论 -
自定义rocketmq启动脚本
按照顺序先后启动mqnamesrv、mqbroker、可视化管理工具。source一下,启动脚本我的是存放再script目录下。任意目录下都可以使用。原创 2022-08-04 17:40:45 · 978 阅读 · 0 评论 -
分布式事务解决方案
事务由单独单元的一个或者多个sq!语句组成,在这个单元中,每个mysql语句时相互依赖的。而整个单独单元作为一个不可分割的整体,如果单元中某条sq!语句一旦执行失败或者产生错误,整个单元将会回滚,所有受到影响的数据将会返回到事务开始以前的状态;如果单元中的所有sq!语句均执行成功,则事务被顺利执行。分布式事务就是为了保证不同数据库的数据一致性CAP定理,又被叫作布鲁尔定理。对于设计分布式系统(不仅仅是分布式事务)的架构师来说,CAP就是你的入门理论。...原创 2022-08-02 11:37:54 · 150 阅读 · 0 评论 -
消息中间件汇总
RabbtiMQ理论基础RabbitMQ支持消息的模式(官方API)RabbitMQ使用场景RabbitMQ支持消息的模式(SpringBoot)RabbitMQ-过期时间TTLRabbitMQ-死信队列RabbitMQ运维-持久化机制和内存磁盘的监控原创 2022-08-01 16:43:30 · 115 阅读 · 0 评论 -
RabbitMQ运维-持久化机制和内存磁盘的监控
消息持久化是通过消息的属性deliveryMode来设置是否持久化,在发送消息时通过basicPublish的参数传入。不论是持久化的消息还是非持久化的消息都可以写入到磁盘中,只不过非持久的是等内存不足的情况下才会被写入到磁盘中。非持久消息是指当内存不够用的时候,会把消息和数据转移到磁盘,但是重启以后非持久化队列消息就丢失。队列的持久化是定义队列时的durable参数来实现的,Durable为true时,队列才会持久化。然后重启rabbit-server服务,会发现持久化队列依然在,而非持久队列会丢失。..原创 2022-07-27 13:49:54 · 664 阅读 · 0 评论 -
RabbitMQ-死信队列
DLX,全称为Dead-Letter-Exchange,可以称之为死信交换机,也有人称之为死信邮箱。当消息在一个队列中变成死信(deadmessage)之后,它能被重新发送到另一个交换机中,这个交换机就是DLX,绑定DLX的队列就称之为死信队列。消息被拒绝消息过期队列达到最大长度DLX也是一个正常的交换机,和一般的交换机没有区别,它能在任何的队列上被指定,实际上就是设置某一个队列的属性。......原创 2022-07-27 13:43:28 · 446 阅读 · 0 评论 -
RabbitMQ-过期时间TTL
过期时间TTL表示可以对消息设置预期的时间,在这个时间内都可以被消费者接收获取;过了之后消息将自动被删除。RabbitMQ可以对消息和队列设置TTL。目前有两种方法可以设置。第一种方法是通过队列属性设置,队列中所有消息都有相同的过期时间。第二种方法是对消息进行单独设置,每条消息TTL可以不同。如果上述两种方法同时使用,则消息的过期时间以两者之间TTL较小的那个数值为准。消息在队列的生存时间一旦超过设置的TTL值,就称为deadmessage被投递到死信队列,消费者将无法再收到该消息。...原创 2022-07-27 13:25:55 · 460 阅读 · 0 评论 -
RabbitMQ支持消息的模式(SpringBoot)
生产者负责生产订单,并调用消息队列调用其他服务//1.根据商品id查询库存是否重组//2.保存订单StringorderId=UUID.randomUUID().toString();System.out.println("订单生产成功"+orderId);//3.通过MQ来完成消息的分发/**参数1交换机*参数2路由key/queue队列名称System.out.println("producer发送订单信息成功");......原创 2022-07-26 09:26:52 · 439 阅读 · 0 评论 -
RabbitMQ使用场景
按照以上约定,用户的响应时间相当于是订单信息写入数据库的时间,也就是50毫秒。注册邮件,发送短信写入消息队列后,直接返回,因此写入消息队列的速度很快,基本可以忽略,因此用户的响应时间可能是50毫秒。并行方式将订单信息写入数据库成功后,发送注册邮件的同时,发送注册短信。与串行的差别是,并行的方式可以提高处理的时间。串行方式将订单信息写入数据库成功后,发送注册邮件,再发送注册短信。5如果服务器承载不了,你需要自己去写高可用,HA镜像模型高可用。4如何保证消息的可靠性,死信队列和消息转移的等。...原创 2022-07-25 19:33:33 · 141 阅读 · 0 评论 -
RabbitMQ支持消息的模式(官方API)
由于消息接收者处理消息的能力不同,存在处理快慢的问题,我们就需要能者多劳,处理快的多处理,处理慢的少处理;2、公平分发根据消费者的消费能力进行公平分发,处理快的处理的多,处理慢的处理的少;总结work1和work2的消息处理能力不同,但是最后处理的消息条数相同,是“按均分配”。当有多个消费者时,我们的消息会被哪个消费者消费呢,我们又该如何均衡消费者消费信息的多少呢?Direct模式是fanout模式上的一种叠加,增加了路由RoutingKey的模式。1、轮询模式的分发一个消费者一条,按均分配;...原创 2022-07-25 19:12:16 · 283 阅读 · 0 评论 -
RabbitMQ理论基础
1、项目中为什么要使用消息中间件2、项目中为什么使用RocketMQ而不是RabbitMQ3、系统TPS有多少?引入消息中间件之后,系统一定不会被撑爆了吗?4、消息中间件中出现大量的消息堆积。会产生什么后果?5、如何发现出现了大量消息的堆积?采取了哪些应急措施?问题产生的根源是什么?如何避免。......原创 2022-07-25 09:02:26 · 322 阅读 · 0 评论 -
微服务脑图及经典面试题解答
经典面试题(欢迎大家解答)1.1 什么是微服务?1.2 微服务之间是如何独立通讯的?1.3 SpringCloud和Dubbo有哪些区别?1.4 Springboot和Springcloud,请谈谈你对他们的理解1.5 什么是服务熔断?什么是服务降级?1.6 微服务的优缺点是什么?说一下你在项目开发中遇到的坑1.7 你所知道的微服务技术栈有哪些?列举一二1.8 Eureka和Zookeeper都可以提供服务注册与发现的功能,请说说两者的区别...原创 2021-08-07 19:07:20 · 163 阅读 · 0 评论