沂南网站建设南京网站优化多少钱

web/2025/10/4 16:20:41/文章来源:
沂南网站建设,南京网站优化多少钱,wordpress 搜索框位置,湖北建设科技中心网站导入 一个技术的衍生必然是为了解决现实出现的问题#xff0c;在讲这个问题之前我们先了解一下传统开发中关于服务调用出现的问题#xff08;痛点#xff09;有哪些#xff1f; 我们为什么要使用MQ#xff1f; ①、同步——超时 在多服务体系架构中#xff0c;必然存在…导入 一个技术的衍生必然是为了解决现实出现的问题在讲这个问题之前我们先了解一下传统开发中关于服务调用出现的问题痛点有哪些 我们为什么要使用MQ ①、同步——超时 在多服务体系架构中必然存在着多个服务之间的调用关系当用户提交了订单订单服务会调用支付服务执行用户的金钱操作执行完毕之后紧接着调用商品服务对商家的商品信息库存、成交量、收入等进行更新执行完毕之后又调用物流服务对接发货公司、收发地带你对用户买的商品进行物流实时同步。每一次的服务调用都要等待另一个服务的执行完毕整个流程下来很耗时。对于系统来说要求实时性要强可立即得到结果而同步调用还存在着其他问题 资源浪费调用链中每个服务在等待响应过程中不能释放请求占用的资源高并发场景下会极度浪费系统资源 级联失败如果服务提供者出现问题所有调用方都会跟着出问题如同多米诺骨牌一样迅速导致真个微服务群鼓掌 ②、服务耦合高 订单服务需要分别调用支付服务、商品服务、物流服务调用者需要等待服务提供者响应但是如果作为上游服务的物流服务突然宕机这样会导致订单服务也会出现问题用户下单失败并且如果每次加入新需求此时如果还需要调用通信服务实时给用户同步下单情况这样一个需求我们就要修改原来的代码耦合度很高 ③、流量高峰 一般在秒杀或团抢活动中使用广泛。比方说订单系统经过测试组接口测试发现最多只能承受100万次请求而在面对618、双一这种购物狂潮的高峰期如果一下来了500万的请求系统时是无法处理的可能会导致数据库无法承受这么大的压力响应变慢或者直接挂掉 有没有什么办法能够帮助解决上面出现的问题呢面对上述的种种问题伟大的人类就提出了一个奇思妙想——把数据暂存。可不可把所有要传输的消息放在一个容器中当大量请求来的时候先把一部分的消息逻辑暂存在容器中然后慢慢去处理 于是出现了消息队列的概念 MQ简介 MQ是什么 Message Queue消息队列是基础数据结构中“先进先出”的一种数据结构。把要传输的消息数据放在队列中用队列机制来实现消息传递——生产者生产消息把消息放入队列然后消费者去处理。消费者可以到指定队列拉取消息或者订阅响应的队列由MQ服务端给其推送消息。 为什么要使用队列这种数据结构呢 我们知道队列具有先进先出的特点。而消息队列就是将消息放到队列里用队列做存储消息的介质看作是一个容器。那这里的消息我们可以指代文本字符串也可以是更复杂的嵌入对象。消息的发送放称为生产者消息的接收方称为消费者 MQ要解决什么问题 结合前面讲到应用场景出现的问题我们来针对性讨论一下方案 ①、同步请求—异步请求 通过引入MQ之后我为了提升系统响应性能我们可以它改造为异步那异步请求有什么好处它是如何解决同步出现的问题 异步调用的本质是一种事件驱动模式 耦合度低不需要调用对方只需要发布事件事件去响应即可吞吐量提升不需要等待对方执行时间更短吞吐量更大故障隔离如果出现故障更容易排查流量削峰broker做缓存 ②、高耦合—低耦合 如果使用消息队列当订单服务执行完成之后发送一条消息到队列中其余三个服务读取到这条消息那么它立刻开始进行业务的执行。使用了消息队列后消息的发送方和接收方并不需要知道彼此这样相互之间也就是没有直接关系即解耦。 ③、削峰 这种峰值流量场景一般是集中于一小段时间内为了防止系统在这个峰值时间内被流量冲垮可以采用消息队列来削弱峰值流量此时的消息队列就可以理解为是一个缓冲区比方说系统只能处理100万请求但此时同时有500万请求来临我们就可以把把多余的400万请求先放到队列中等系统根据自己处理请求的能力去消息队列去消费。 一般用来解决应用解耦异步消息流量削峰等问题目的是为了实现高性能、高可用、可伸缩和最终一致性架构 MQ的产品有哪些 RabbitMQ、ActiveMQ、RocketMQ、ZeroMQ、Kafka、IBM WebSphere 等 通过我提出来的应用场景想必大家对于为什么要使用MQ有了初步的了解接下来我们重点讨论一下RabbitMQ RabbitMQ RabbitMQ是什么 RabbitMQ是一个由Erlang语言开发的AMQP的开源中间件 补充AMQP是什么 AMQP我们可以看作是一种协议活规范而RabbitMQ是基于这个协议下的实现框架。类似于JDBC和mysql RabbitMQ的工作原理是什么 架构图 组件 描述 生产者Producer 发送消息的应用程序将消息发送到Broker 消费者Consumer 接收消息的应用程序从RabbitMQ Broker获取消息进行处理 Broker RabbitMQ消息代理服务器负责接收和分发消息。 交换机Exchange 接收生产者发送的消息并根据路由键routingKey规则将消息路由到跟交换机绑定的一个或多个队列。 交换机主要用来将生产者生产出来的消息传送到对应的队列中即交换机是一个消息传送的媒介具有存储-转发功能如果路由不到或许会返回给 Producer(生产者) 或许会被直接丢弃掉 绑定Binding 定义交换机和队列之间的关系指定消息的路由规则。 路由键Routing Key 生产者在发送消息时将消息附带的路由键发送给交换机交换机根据路由键将消息路由到相应的队列。 生产者将消息发给交换器的时候一般会指定一个 RoutingKey(路由键)用来指定这个消息的路由规则而这个 RoutingKey 需要与交换器类型和绑定键(BindingKey)联合使用才能最终生效 队列Queue 存储消息的容器消费者从队列中获取消息进行处理。 它是消息的容器也是消息的终点 整个消息传输流程为 1. 生产者将消息发送到交换机 2. 交换机根据路由键将消息路由到相应的队列 3. 消费者从队列中获取消息进行处理。 RabbitMQ有哪些工作模式 官方网站RabbitMQ Tutorials — RabbitMQ ①、Simple简单工作模式 特点一个队列只有一个消费者 消息分发的方式。不同工作模式指的是消息路由的策略和方式不同 内部使用的默认交换机 生产者将消息发送到队列消费者从队列取出消息 ②、Work Queues工作模式 特点多个消费者监听同一个队列 在一个队列中如果有多个消费者消费者之间对于同一个消息的关系是竞争关系同一条消息只能由一个消费者消费。但是分担压力比方说有10条消息C1处理13579消息C2处理246810消息。顺序取消息C1取一条C2取一条消费规则是轮询 应用场景 ③、Pub/Sub订阅模式 特点多个消息队列每个消息队列有一个消费者监听 X交换机 生产者生产了消息发给交换机交换机路由分发给不同的消费者消费者监听获取消息。一个消息可以被多个消费者同时接收消费 每个消费者都监听自己的队列 使用场景 A服务可以通过异常处理如果A服务发送后出现问题可以回滚什么都有可能出现问题而我们的目的是保持一致性 ④、Routing路由模式 特点一个交换机绑定多个消息队列每个消息队列都有自己唯一的key每个消息队列有一个消费者监听 Topics通配符/主题模式 *一个单词 #零个或多个单词 实战演练 依赖 dependenciesdependencygroupIdcom.rabbitmq/groupIdartifactIdamqp-client/artifactIdversion5.6.0/version/dependency /dependencies 生产者 package com.itheima.producer;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; import java.util.concurrent.TimeoutException;public class Producer_HelloWorld {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost(114.115.170.214);factory.setPort(5672);factory.setVirtualHost(/itcast);factory.setUsername(admin);factory.setPassword(admin);//3.创建连接 ConnectionConnection connection factory.newConnection();//4.创建ChannelChannel channel connection.createChannel();//5.创建队列Queuechannel.queueDeclare(denglimei,true,false,false,null);//要发送的消息String body hello rabbitmq~~~;//6.发送消息channel.basicPublish(,denglimei,null,body.getBytes());//7.释放资源channel.close();connection.close();} } 消费者 package com.itheima.consumer;import com.rabbitmq.client.*; import java.io.IOException; import java.util.concurrent.TimeoutException;public class Consumer_HelloWorld {public static void main(String[] args) throws IOException, TimeoutException {//1.创建连接工厂ConnectionFactory factory new ConnectionFactory();//2.设置参数factory.setHost(114.115.170.214);factory.setPort(5672);factory.setVirtualHost(/itcast);factory.setUsername(admin);factory.setPassword(admin);//3.创建连接 ConnectionConnection connection factory.newConnection();//4.创建ChannelChannel channel connection.createChannel();//5.创建队列Queuechannel.queueDeclare(hello_world,true,false,false,null);//匿名内部类Consumer consumer new DefaultConsumer(channel){/** 回调方法当收到消息后会自动执行该方法* 1.consumerTag标识* 2.envelope获取一些信息交换机路由key* 3.properties配置信息* 4.body数据* */Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,byte[] body) throws IOException {long start System.currentTimeMillis();for (int i 0; i 10000; i) {System.out.println(第i条);}long end System.currentTimeMillis();System.out.println(start-end);}};//接收消息channel.basicConsume(hello_world,true,consumer);//注意消费者作为监听者不要去关闭资源否则如何监听资源} } 总结 本次先对MQ和衍生出来的RabbitMQ先做了基本介绍后续会针对RabbitMQ如何在项目中如何进行削峰、如何解决死信队列等内容做具体介绍敬请期待~ 如果有想要交流的内容欢迎在评论区进行留言如果这篇文档受到了您的喜欢那就留下你点赞收藏评论脚印支持一下博主~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

下载中国建设银行官网站新媒体营销有哪些岗位

故障知识图谱是当前面向装备制造领域的落地重要探索领域,如何通过对设备的运行状态、运行日志进行信息抽取、关系建模,建成可供分析应用的知识库,并支撑故障诊断、维修辅助等应用场景,具有重要意义。鉴于当前还未有系统性的开源相…

新网站的建设工作个人网站用移动硬盘做服务器

通常我们是通过修改扩展three.js内置的材质来实现一些复杂的效果的,而不是使用shaderMaterial材质从零开始实现。比如说很满意MeshStandardMaterial(一种常规材质)的效果,但是我们希望在这个材质上添加一些顶点动画。如果我们打算…

pta程序设计平台丹东seo优化

NAT(Network AddressTranslators),网络地址转换: 网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。 最开始NAT是运行在路由器…

中国建设银行的网站用户名是什么意思wordpress移动版插件

字典 1.字典的定义2.字典数据的获取3.字典的嵌套4.嵌套字典的内容获取5.字典的常用操作6.常用操作总结7.遍历字典8.练习 1.字典的定义 同样使用{},不过存储的元素是一个一个的:键值对,语法如下 # 定义字典字面量 {key:value,key:value,...,…

wdcp搭建网站教程柳州市城乡建设局网站

wipeRefreshLayout字面意思就是下拉刷新的布局,继承自ViewGroup,在support v4兼容包下,但必须把你的support library的版本升级到19.1。 提到下拉刷新大家一定对ActionBarPullToRefresh比较熟悉,而如今google推出了更官方的下拉刷新组件,这无疑是对开发者来说比较好的消…

网站建设方面的文章WordPress手机缩略图设置

这是称为“ Functional Java by Example”的系列文章的第3部分。 我在本系列的每个部分中发展的示例是某种“提要处理程序”,用于处理文档。 在前面的部分中,我从一些原始代码开始,并应用了一些重构来描述“什么”而不是“如何”。 为了帮助…

网站的建设及维护的费用医院网站建设与维护题库

fluorinefx C# 版的开源rtmp服务器 - [其它资源] 版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://25swf.blogbus.com/logs/28529745.html fluorinefx支持的 .net 框架集有 1.1 2.0 3.5 以及 mono 1.2.4支持的东东Flex, Flash Remoting (RP…

简洁大气摄影网站在哪做网站不要钱

:构建便捷出行新体验 一、引言:探索打车系统小程序源码的重要性 在数字化快速发展的今天,打车系统小程序已成为我们日常生活中不可或缺的一部分。它以其便捷、高效的特点,极大地改变了我们的出行方式。而背后的关键,…

品牌展示型网站源码网店设计与装修的作用与意义

在这个数字化的时代,外卖小程序已经成为餐饮业的一项重要工具。在本文中,我们将通过一些简单而实用的技术代码,向您展示如何构建一个基本的外卖小程序。我们将使用微信小程序平台作为例子,但这些原理同样适用于其他小程序平台。 …

东莞想做网站找什么公司做网站实现图片自动压缩

实现这个游戏需要Easy_X 这个在我前面一篇C之番外篇爱心代码有程序教你怎么下载,大家可自行查看 然后就是需要植物大战僵尸的素材和音乐,需要的可以在评论区 首先是main.cpp //开发日志 //1导入素材 //2实现最开始的游戏场景 //3实现游戏顶部的工具栏…

dede替换网站模板电商网站的特点

在物联网(IoT)时代,随着智能设备的普及和万物互联的加速,隐私保护与数据安全成为了亟待解决的关键问题。以下是一些重要的隐私保护与数据安全策略,以确保在万物互联背景下信息的安全: 1. 加强设备安全&…

cco网站素材网站制作公司 云南

STM32 OTA-IAP设计方案 OTA是Over-the-Air的简写,即空中下载技术,通过网络远程给用户进行系统更新和升级。IAP是In Application Programming的简写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在…

主题网站设计欣赏dw做的网站怎么上传图片

随着网络技术的不断发展,网络安全威胁也在不断增加,勒索病毒攻击企业计算机服务器的事件时有发生,并且勒索病毒的加密形式也越来越复杂。近期,云天数据恢复中心陆续接到很多企业的求助,企业的计算机服务器遭到了mallox…

自己建设网站难不难哪个网站做不锈钢好

一、获得命令帮助 1.1、内部命令与外部命令 简单来说,在linux系统中有存储位置的命令为外部命令; 没有存储位置的为内部命令,可以理解为内部命令嵌入在linux的shell中,所以看不到。 type来判断到底为内部命令还是内部命令 [ro…

北京住房与城乡建设网站怎么查看网页源代码

在sbin文件夹下是start-all.sh可以运行的,但是到了别的文件夹下就不行了,于是想到了是文件路径问题,因为hadoop环境是和java环境一起配置的导致sbin写成了bin 解决办法: 打开.bashrc配置hadoop的环境变量 sudo vim ~/.bashrc …

古镇免费网站建设最好看免费观看高清大全猪蜜蜜剧本

适用于什么场景? 检索比较多的场景,例如学生成绩管理系统,老师对学生的成绩进行排名或查询操作 ArrayList有哪些特点? 1、ArrayList集合底层采用了数组数据结构,是Object类型 2、动态数组。ArrayList的默认初始容量…

传奇高端网站设计制作大庆网站建设优化

查看WEB服务器的连接数 https://technet.microsoft.com/en-us/sysinternals/bb897437 tcpView转载于:https://www.cnblogs.com/daishuguang/p/4973342.html

h5网站建设模板html5 网站源码

文章目录后端有关说明前端有关说明接口设计小程序注册/登录接口APP 注册/登录接口PC Web 端的注册/登录接口小程序注册/登录序列图校验 token后端有关说明 登录和注册的逻辑要独立抽取写成2个接口:注册接口、登录接口 小程序、APP、PC端的登录接口和注册接口要分开…

移动网站建设服务商重庆必去的十大景点

Android开发要点说明 商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。 应用包名:是在APP项目配置文件And…

做拆分盘网站南充做网站略奥网络

第一道题:求有删除情况的最长回文子串 题目: 解题思路: 这个题严格意义上来说,删除了字符就谈不上回文串了,既然有删除,那估计考察的不是回文串,而是其他的,但是这个东西又有回文串的…