当前位置: 首页 > news >正文

那些网站可以做外链网址一键生成app免费

那些网站可以做外链,网址一键生成app免费,红安县建设局网站,广告设计平面设计文章目录 前言一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一 ID指纹码机制6、Redis 原子性 二、优先级队列1、使用场景2、如何添加3、实战 三、惰性队列1、使用场景2、两种模式3、内存开销对比 总结 前言 一、幂等性 1、概念 2、消息重复消费 3、… 文章目录 前言一、幂等性1、概念2、消息重复消费3、解决思路4、消费端的幂等性保障5、唯一 ID指纹码机制6、Redis 原子性 二、优先级队列1、使用场景2、如何添加3、实战 三、惰性队列1、使用场景2、两种模式3、内存开销对比 总结 前言 一、幂等性 1、概念 2、消息重复消费 3、解决思路 4、消费端的幂等性保障 5、唯一 ID指纹码机制 6、Redis 原子性 二、优先级队列 1、使用场景 2、如何添加 3、实战 三、惰性队列 1、使用场景 2、两种模式 3、内存开销对比 一、幂等性 1、概念 用户对于同一操作发起的一次请求或者多次请求的结果是一致的不会因为多次点击而产生了副作用。举个最简单的例子那就是支付用户购买商品后支付支付扣款成功但是返回结果的时候网络异常此时钱已经扣了用户再次点击按钮此时会进行第二次扣款返回结果成功用户查询余额发现多扣钱了流水记录也变成了两条。在以前的单应用系统中我们只需要把数据操作放入事务中即可发生错误立即回滚但是再响应客户端的时候也有可能出现网络中断或者异常等等 2、消息重复消费 消费者在消费 MQ 中的消息时MQ 已把消息发送给消费者消费者在给 MQ 返回 ack 时网络中断故 MQ 未收到确认信息该条消息会重新发给其他的消费者或者在网络重连后再次发送给该消费者但实际上该消费者已成功消费了该条消息造成消费者消费了重复的消息。 3、解决思路 MQ 消费者的幂等性的解决一般使用全局 ID 或者写个唯一标识比如时间戳 或者 UUID 或者订单消费者消费 MQ 中的消息也可利用 MQ 的该 id 来判断或者可按自己的规则生成一个全局唯一 id每次消费消息时用该 id 先判断该消息是否已消费过。 4、消费端的幂等性保障 在海量订单生成的业务高峰期生产端有可能就会重复发生了消息这时候消费端就要实现幂等性这就意味着我们的消息永远不会被消费多次即使我们收到了一样的消息。业界主流的幂等性有两种操作:a.唯一 ID指纹码机制,利用数据库主键去重, b.利用 redis 的原子性去实现。 5、唯一 ID指纹码机制 指纹码:我们的一些规则或者时间戳加别的服务给到的唯一信息码,它并不一定是我们系统生成的基本都是由我们的业务规则拼接而来但是一定要保证唯一性然后就利用查询语句进行判断这个 id 是否存在数据库中,优势就是实现简单就一个拼接然后查询判断是否重复劣势就是在高并发时如果是单个数据库就会有写入性能瓶颈当然也可以采用分库分表提升性能但也不是我们最推荐的方式。 6、Redis 原子性 利用 redis 执行 setnx 命令天然具有幂等性。从而实现不重复消费。 二、优先级队列 1、使用场景 在我们系统中有一个订单催付的场景我们的客户在天猫下的订单,淘宝会及时将订单推送给我们如果在用户设定的时间内未付款那么就会给用户推送一条短信提醒很简单的一个功能对吧但是tmall商家对我们来说肯定是要分大客户和小客户的对吧比如像苹果小米这样大商家一年起码能给我们创造很大的利润所以理应当然他们的订单必须得到优先处理而曾经我们的后端系统是使用 redis 来存放的定时轮询大家都知道 redis 只能用 List 做一个简简单单的消息队列并不能实现一个优先级的场景所以订单量大了后采用 RabbitMQ 进行改造和优化,如果发现是大客户的订单给一个相对比较高的优先级否则就是默认优先级。 2、如何添加 a.控制台页面添加 b.队列中代码添加优先级 MapString, Object params new HashMap(); params.put(x-max-priority, 10); channel.queueDeclare(hello, true, false, false, params);c.消息中代码添加优先级 AMQP.BasicProperties properties new AMQP.BasicProperties().builder().priority(5).build();d.注意事项 要让队列实现优先级需要做的事情有如下事情:队列需要设置为优先级队列消息需要设置消息的优先级消费者需要等待消息已经发送到队列中才去消费因为这样才有机会对消息进行排序。 3、实战 a.消息生产者 public class Producer {private static final String QUEUE_NAMEhello;public static void main(String[] args) throws Exception {try (Channel channel RabbitMqUtils.getChannel();) {//给消息赋予一个 priority 属性AMQP.BasicProperties properties new AMQP.BasicProperties().builder().priority(5).build();for (int i 1; i 11; i) {String message infoi;if(i5){channel.basicPublish(, QUEUE_NAME, properties, message.getBytes());}else{channel.basicPublish(, QUEUE_NAME, null, message.getBytes());}System.out.println(发送消息完成: message);}}} }b.消息消费者 public class Consumer {private static final String QUEUE_NAMEhello;public static void main(String[] args) throws Exception {Channel channel RabbitMqUtils.getChannel();//设置队列的最大优先级 最大可以设置到 255 官网推荐 1-10 如果设置太高比较吃内存和 CPUMapString, Object params new HashMap();params.put(x-max-priority, 10);channel.queueDeclare(QUEUE_NAME, true, false, false, params);System.out.println(消费者启动等待消费......);DeliverCallback deliverCallback(consumerTag, delivery)-{String receivedMessage new String(delivery.getBody());System.out.println(接收到消息:receivedMessage);};channel.basicConsume(QUEUE_NAME,true,deliverCallback,(consumerTag)-{System.out.println(消费者无法消费消息时调用如队列被删除);});} }三、惰性队列 1、使用场景 RabbitMQ 从 3.6.0 版本开始引入了惰性队列的概念。惰性队列会尽可能的将消息存入磁盘中而在消费者消费到相应的消息时才会被加载到内存中它的一个重要的设计目标是能够支持更长的队列即支持更多的消息存储。当消费者由于各种各样的原因(比如消费者下线、宕机亦或者是由于维护而关闭等)而致使长时间内不能消费消息造成堆积时惰性队列就很有必要了。 默认情况下当生产者将消息发送到 RabbitMQ 的时候队列中的消息会尽可能的存储在内存之中这样可以更加快速的将消息发送给消费者。即使是持久化的消息在被写入磁盘的同时也会在内存中驻留一份备份。当 RabbitMQ 需要释放内存的时候会将内存中的消息换页至磁盘中这个操作会耗费较长的时间也会阻塞队列的操作进而无法接收新的消息。虽然 RabbitMQ 的开发者们一直在升级相关的算法但是效果始终不太理想尤其是在消息量特别大的时候。 2、两种模式 队列具备两种模式default 和 lazy。默认的为 default 模式在 3.6.0 之前的版本无需做任何变更。lazy模式即为惰性队列的模式可以通过调用 channel.queueDeclare 方法的时候在参数中设置也可以通过Policy 的方式设置如果一个队列同时使用这两种方式设置的话那么 Policy 的方式具备更高的优先级。如果要通过声明的方式改变已有队列的模式的话那么只能先删除队列然后再重新声明一个新的。 在队列声明的时候可以通过“x-queue-mode”参数来设置队列的模式取值为“default”和“lazy”。下面示例中演示了一个惰性队列的声明细节 MapString, Object args new HashMapString, Object(); args.put(“x-queue-mode”, “lazy”); channel.queueDeclare(“myqueue”, false, false, false, args); 3、内存开销对比 在发送 1 百万条消息每条消息大概占 1KB 的情况下普通队列占用内存是 1.2GB而惰性队列仅仅占用 1.5MB 总结 以上就是RabbitMQ的幂等性、优先级队列和惰性队列的相关知识点希望对你有所帮助。
http://www.zqtcl.cn/news/215217/

相关文章:

  • 视频微网站开发谷歌怎么做网站推广
  • 微信公众号服务号网站开发流程网站推广网络
  • 徐州网站建设技术wordpress 分辨 模版
  • 慈溪企业网站建设公司wordpress网盘搜索引擎源码
  • 建筑类企业网站模板怎么制作网站链接
  • 常州网站建设外包襄阳做网站的
  • 临清网站优化用jsp做网站的感想
  • 个人工作室网站网站备案 万网
  • 网络推广模板网站会员管理软件
  • 西乡塘网站建设网站建设公司的成本有哪些方面
  • 在哪里可以学习做网站西安制作公司网站的公司
  • 网站建设 更新 维护淮北矿业工程建设公司网站
  • 网站开发 平台宝应做网站
  • 网站开发开题报告广州的兼职网站建设
  • 辽宁同鑫建设网站网站后期维护费用
  • 政法网站建设有哪些不足广州网站建设信息科技有限公司
  • 营销型网站 平台海口智能建站价格
  • 网站空间过期电商网站建设比较好的
  • seo公司 彼亿营销舆情优化公司
  • diango是做网站的后端吗网页怎么做成app
  • 思勤传媒网站建设公司如何查询网站的外链
  • 网站设计思路文案范文专业手机网站建设多少钱
  • 有部分网站打不开网站服务内容怎么写
  • 百度安全网站检测好看的免费的小说网站模板
  • 锡山区住房和城乡建设局网站免费ppt模板下载简约
  • 建设银行 杭州招聘网站建设工程有限公司是干什么的
  • 做网站必须购买空间吗?3点新闻发布
  • 济南集团网站建设流程东莞做网站公司首选
  • 有需要做网站推广找我网站怎么 备案
  • 怎么把网站放到服务器上站长工具seo综合查询外部链接数量