微服务
文章平均质量分 65
STZ程序猿
简洁、直观、美。
展开
-
消息队列之RabbitMQ+SpringAMQP实现延时消息
RabbitMQ的消息过期是基于追溯方式来实现的,也就是说当一个消息的TTL到期以后不一定会被移除或投递到死信交换机,而是在消息恰好处于队首时才会被处理。当队列中消息堆积很多的时候,过期消息可能不会被按时处理,因此你设置的TTL时间不一定准确。原创 2024-08-07 19:59:28 · 478 阅读 · 0 评论 -
消息队列之RabbitMQ+SpringAMQP实现消息可靠性
每个只能配置一个,因此我们可以在配置类中统一设置。我们在publisher模块定义一个配置类:@Slf4j@Overridelog.error("触发return callback,");});由于每个消息发送时的处理逻辑不一定相同,因此ConfirmCallback需要在每次发消息时定义。具体来说,是在调用RabbitTemplate中的convertAndSend方法时,多传递一个参数:id:消息的唯一标示,MQ对不同的消息的回执以此做判断,避免混淆。原创 2024-08-07 18:32:11 · 221 阅读 · 0 评论 -
消息队列之RabbitMQ+SpringAMQP
publisher:生产者,也就是发送消息的一方consumer:消费者,也就是消费消息的一方queue:队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。:虚拟主机,起到数据隔离的作用。每个虚拟主机相互独立,有各自的exchange、queue。原创 2024-08-07 18:02:14 · 455 阅读 · 0 评论 -
分布式事务之Seata实现
Seata的解决思路就是找一个统一的,与多个分支事务通信,检测每个分支事务的执行状态,保证全局事务下的每一个分支事务同时成功或失败即可。大多数的分布式事务框架都是基于这个理论来实现的。维护全局和分支事务的状态,协调全局事务提交或回滚。定义全局事务的范围、开始全局事务、提交或回滚全局事务。管理分支事务,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。Seata的工作架构:其中,和可以理解为Seata的客户端部分,引入到参与事务的微服务依赖中即可。将来和。原创 2024-08-07 00:19:03 · 214 阅读 · 0 评论 -
分布式事务之Seata实现之四种事务模式
XA 规范 是 X/Open 组织定义的分布式事务处理(DTP,Distributed Transaction Processing)标准,XA 规范 描述了全局的TM与局部的RM之间的接口,几乎所有主流的数据库都对 XA 规范 提供了支持。原创 2024-08-07 00:17:34 · 358 阅读 · 0 评论 -
微服务保护之Sentinel实现服务熔断
在上一篇文章,利用线程隔离对查询购物车业务进行隔离,保护了购物车服务的其它接口。由于查询商品的功能耗时较高(模拟500毫秒延时),再加上线程隔离限定了线程数为5,导致接口吞吐能力有限,最终QPS只有10左右。这就导致了几个问题:第一,超出的QPS上限的请求就只能抛出异常,从而导致购物车的查询失败。但从业务角度来说,即便没有查询到最新的商品信息,购物车也应该展示给用户,用户体验更好。也就是给查询失败设置一个逻辑。第二,由于查询商品的延迟较高(模拟的500ms),从而导致查询购物车的响应时间也变的很长。原创 2024-08-06 23:06:00 · 542 阅读 · 0 评论 -
微服务保护之Sentinel实现线程隔离
上一篇的限流可以降低服务器压力,尽量减少因并发流量引起的服务故障的概率。但并不能完全避免服务故障。一旦某个服务出现故障,我们必须隔离对这个服务的调用,避免发生雪崩。比如,查询购物车的时候需要查询商品,为了避免因商品查询出现故障,导致购物车服务级联失败,我们可以把购物车业务中查询商品的部分隔离起来,限制可用的线程资源:这样,即便商品服务出现故障,最多导致查询购物车业务故障,并且可用的线程资源也被限定在一定范围,不会导致整个购物车服务崩溃。原创 2024-08-06 22:55:14 · 152 阅读 · 0 评论 -
微服务保护之Sentinel实现限流
这样就把查询购物车列表这个簇点资源的流量限制在了每秒6个,也就是最大QPS为6。原创 2024-08-06 22:41:12 · 85 阅读 · 0 评论 -
微服务保护之Sentinel安装整合
1.下载jar包2.运行3.访问需要输入账号和密码,默认都是:sentinel。原创 2024-08-06 22:32:46 · 70 阅读 · 0 评论 -
远程调用OpenFeign的使用
因此我们通常会使用带有连接池的客户端来代替默认的HttpURLConnection。比如,我们使用OK Http.Feign底层发起http请求,依赖于其它的框架。有了上述信息,OpenFeign就可以利用动态代理帮我们实现这个方法,并且向。HttpURLConnection:默认实现,不支持连接池。这里只需要声明接口,无需实现方法。请求,携带ids为请求参数,并自动将返回值处理为。我们只需要直接调用这个方法,即可实现远程调用了。Apache HttpClient :支持连接池。OKHttp:支持连接池。原创 2024-08-06 21:06:42 · 157 阅读 · 0 评论 -
Nacos的安装部署、注册服务、发现服务、配置中心
1.操作控制面板在nacos控制台分别添加这些配置。原创 2024-08-06 20:39:07 · 552 阅读 · 0 评论