上海网站建设明细表青岛网上注册公司官网

张小明 2025/12/31 6:18:47
上海网站建设明细表,青岛网上注册公司官网,网站设计与网站建设,style wordpress 主题一、MQ简介 MQ#xff1a;MessageQueue#xff0c;消息队列。是在互联网中使用非常广泛的一系列服务中间件。 这个词可以分两个部分来看#xff0c;一是 Message#xff1a;消息。消息是在不同进程之间传递的数据。这些进程可以部署在同一台机器上#xff0c;也可以分布在…一、MQ简介MQMessageQueue消息队列。是在互联网中使用非常广泛的一系列服务中间件。 这个词可以分两个部分来看一是 Message消息。消息是在不同进程之间传递的数据。这些进程可以部署在同一台机器上也可以分布在不同机器上。二是 Queue队列。队列原意是指一种具有 FIFO先进先出 特性的数据结构是用来缓存数据的。对于消息中间件产品来说能不能保证 FIFO 特性尚值得考量。但是所有消息队列都是需要具备存储消息让消息排队的能力。广义上来说只要能够实现消息跨进程传输以及队列数据缓存就可以称之为消息队列。例如我们常用的 QQ、微信、阿里旺旺等就都具备了这样的功能。只不过他们对接的使用对象是人而我们这里讨论的 MQ 产品需要对接的使用对象是应用程序。MQ 的作用主要有以下三个方面① 异步例子快递员发快递直接到客户家效率会很低。引入菜鸟驿站后快递员只需要把快递放到菜鸟驿站就可以继续发其他快递去了。客户再按自己的时间安排去菜鸟驿站取快递。作用异步能提高系统的响应速度、吞吐量。② 解耦例子《Thinking in JAVA》很经典但是都是英文我们看不懂所以需要编辑社将文章翻译成其他语言这样就可以完成英语与其他语言的交流。作用服务之间进行解耦才可以减少服务之间的影响。提高系统整体的稳定性以及可扩展性。另外解耦后可以实现数据分发。生产者发送一个消息后可以由一个或者多个消费者进行消费并且消费者的增加或者减少对生产者没有影响。③ 削峰例子长江每年都会涨水但是下游出水口的速度是基本稳定的所以会涨水。引入三峡大坝后可以把水储存起来下游慢慢排水。作用以稳定的系统资源应对突发的流量冲击。二、RocketMQ产品特点2.1 RocketMQ介绍RocketMQ 是阿里巴巴开源的一个消息中间件在阿里内部历经了双十一等很多高并发场景的考验能够处理亿万级别的消息。2016 年开源后捐赠给 Apache现在是 Apache 的一个顶级项目。早期阿里使用 ActiveMQ但是当消息开始逐渐增多后ActiveMQ 的 IO 性能很快达到了瓶颈。于是阿里开始关注 Kafka。但是 Kafka 是针对日志收集场景设计的他的高级功能并不是很贴合阿里的业务场景。尤其当他的 Topic 过多时由于 Partition 文件也会过多这就会加大文件索引的耗时会严重影响 IO 性能。于是阿里才决定自研中间件最早叫做 MetaQ后来改名成为 RocketMQ。最早他所希望解决的最大问题就是多 Topic 下的 IO 性能压力。但是产品在阿里内部的不断改进RocketMQ 开始体现出一些不一样的优势。2.2 RocketMQ特点当今互联网 MQ 产品众多其中影响力和使用范围最大的当数 Apache Kafka、RabbitMQ、Apache RocketMQ 以及 Apache Pulsar。这几大产品虽然都是典型的 MQ 产品但是由于设计和实现上的一些差异造成他们适合于不同的细分场景。产品名称优点缺点适合场景Apache Kafka吞吐量非常大性能非常好集群高可用。会有丢数据的可能功能比较单一。日志分析、大数据采集RabbitMQ消息可靠性高功能全面。erlang语言不好定制吞吐量比较低。企业内部小规模服务调用Apache Pulsar基于Bookeeper构建消息可靠性非常高。周边生态还有差距目前使用的公司比较少。企业内部大规模服务调用Apache RocketMQ高吞吐、高性能、高可用功能全面。客户端协议丰富使用java语言开发方便定制。服务加载比较慢。几乎全场景特别适合金融场景其中 RocketMQ孵化自阿里巴巴。历经阿里多年双十一的严格考验RocketMQ 可以说是从全世界最严苛的高并发场景中摸爬滚打出来的过硬产品也是少数几个在金融场景比较适用的 MQ 产品。从横向对比来看RocketMQ 与 Kafka 和 RabbitMQ 相比。RocketMQ 的消息吞吐量虽然和 Kafka 相比还是稍有差距但是却比 RabbitMQ 高很多。在阿里内部RocketMQ 集群每天处理的请求数超过 5 万亿次支持的核心应用超过 3000 个。而 RocketMQ 最大的优势就是他天生就为金融互联网而生。他的消息可靠性相比 Kafka 也有了很大的提升而消息吞吐量相比 RabbitMQ 也有很大的提升。另外RocketMQ 的高级功能也越来越全面广播消费、延迟队列、死信队列等等高级功能一应俱全甚至某些业务功能比如事务消息已经呈现出领先潮流的趋势。三、RocketMQ快速实战3.1 快速搭建RocketMQ服务RocketMQ 的官网地址 https://rocketmq.apache.org/在下载页面可以获取 RocketMQ 的源码包以及运行包。下载页面地址 https://rocketmq.apache.org/download关于RocketMQ的版本我们这里采用的是 5.3.0 版本。版本提示在 2022 年下半年RocketMQ 新推出了 5.0 的大版本这对于 RocketMQ 来说是一个里程碑式的大版本。在这个大版本中RocketMQ 对整体功能做了一次大的升级。增加了很多非常有用的新特性也对已有功能重新做了升级。据传RocketMQ 从 4.x 版本升级到 5.x 版本重构的代码量超过了 60%变化是非常大的。另外你可能要注意一下4.x 的系列版本已经于 2024 年 3 月停止了维护。这意味着目前已经不推荐使用 4.x 的版本了。运行只需要下载 Binary 运行版本就可以了。 当然源码包也建议下载下来后续会进行解读。运行包下载下来后就可以直接解压上传到服务器上。我们这里会上传到/app/rocketmq目录。解压后几个重要的目录如下bin/存放可执行脚本用于启动、停止服务和管理工具。conf/存放配置文件包括 Broker、Namesrv 等的配置示例。lib/存放运行所需的 Java 依赖库JAR 文件。logs/默认的日志输出目录。默认情况下RocketMQ 建议的运行环境需要至少 12G 的内存这是生产环境比较理想的资源配置。但是学习阶段如果你的服务器没有这么大的内存空间那么就需要做一下调整。进入 bin 目录对其中的runserver.sh和runbroker.sh两个脚本进行一下修改。①使用vi runserver.sh指令编辑这个脚本找到下面的一行配置调整 Java 进程的内存大小通常修改-Xms,-Xmx参数。runserver.sh源文件解读# 示例将JVM堆内存初始值和最大值都设置为2GB适合学习和测试 JAVA_OPT${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g本操作系统安装的jdk为1.8版本修改如下②同样调整runbroker.sh中的内存大小runbroker.sh源文件解读参数配置作用说明设计考量-server启用JVM Server模式优化长时间运行的服务端应用性能服务端应用标准配置-Xms8g -Xmx8g初始堆内存最大堆内存8GB避免运行时动态扩容保证内存稳定性减少GC抖动choose_gc_options调用函数选择GC策略通常为G1GC或CMS根据JDK版本自动适配最优GC-XX:-OmitStackTraceInFastThrow禁用快速抛出优化确保异常始终打印完整堆栈生产环境问题排查必备-XX:AlwaysPreTouchJVM启动时预分配所有内存页访问时无延迟避免运行时因内存分配导致的毛刺延迟-XX:MaxDirectMemorySize15g允许Netty等NIO组件使用15GB堆外直接内存RocketMQ重度依赖Netty处理网络IO-XX:-UseLargePages禁用大内存页透明巨页避免内存碎片化Kafka/RocketMQ社区反馈透明巨页会导致延迟毛刺-XX:-UseBiasedLocking禁用偏向锁减少锁撤销开销高并发场景下偏向锁反而成为性能瓶颈JAVA_0PT${JAVA_0PT} -server -Xms8g -Xmx8g 修改为 JAVA_0PT${JAVA_0PT} -server -Xms1g -Xmx1g配置注意事项修改配置时注意要根据你的 JDK 版本调整对应的配置行。RocketMQ 是一个典型的 Java 应用所以需要提前安装 JDK。我们这里采用的是 1.8 版本。JDK 的安装过程略。生产环境警告生产环境不建议调整。这一系列参数实际上就是 RocketMQ 的 JVM 调优结果。RocketMQ 的后端服务分为nameserver和broker两个服务关于他们的作用后面会给你分享。接下来我们先将这两个服务启动起来。3.1.1 第一步启动nameserver服务。启动命令非常简单在bin目录下执行# 启动 Namesrv 服务日志会输出到当前窗口 nohup sh mqnamesrv # 查看启动日志确认是否成功 tail -f ~/logs/rocketmqlogs/namesrv.log # 当看到 “The Name Server boot success...” 字样时表示启动成功。指令执行后会生成一个nohup.out的日志文件。在这个日志文件里如果看到下面这一条关键日志就表示nameserver服务启动成功了The Name Server boot success. serializeTypeJSON, address 0.0.0.0:98763.1.2 第二步启动broker服务。启动 Broker 前需要确保其配置文件conf/broker.conf中指定了 Namesrv 的地址。可以在配置文件中添加然后执行启动命令# 指定配置文件启动 Broker nohup sh mqbroker -c ../conf/broker.conf # 查看 Broker 启动日志 tail -f ~/logs/rocketmqlogs/broker.log # 当看到 “The broker[..., 这里是你Broker的名字] boot success...” 字样时表示启动成功。启动完成后同样检查nohup.out日志文件有如下一条关键日志就表示broker服务启动正常了The broker[xxxxx] boot success. serializeTypeJSON and name server is localhost:98763.2 核心组件与概念解析成功启动服务后我们来理解一下 RocketMQ 的核心架构组件这有助于你更好地使用它。组件角色作用特点Namesrv (Name Server)路由注册中心负责管理所有 Broker 的路由信息地址、主题、队列等实现服务的发现。无状态集群部署节点间互不通信稳定性高。Broker消息存储与转发服务器消息的核心存储、投递和查询节点负责接收生产者的消息、持久化存储并处理消费者的拉取请求。主从架构支持高可用和数据冗余。Producer消息生产者将业务消息发送到指定 Topic 的 Broker。支持多种发送模式同步、异步、单向。Consumer消息消费者从 Broker 订阅并消费消息。支持集群消费和广播消费两种模式。Topic主题消息的逻辑分类生产者向指定 Topic 发送消息消费者订阅该 Topic 进行消费。一个 Topic 的消息可以分布在多个 Broker 上。Message Queue消息队列Topic 的分区单位用于并行生产和消费。一个 Topic 下包含一个或多个 Queue。消息在 Queue 内保证顺序FIFO是负载均衡的最小单位。3.3搭建Java客户端项目之前的步骤实际上是在服务器上快速验证RocketMQ的服务状态接下来我们动手搭建一个RocketMQ的客户端应用在实际应用中集成使用RocketMQ。第一步创建一个标准的Maven项目在pom.xml中引入以下核心依赖dependency groupIdorg.apache.rocketmq/groupId artifactIdrocketmq-client/artifactId version5.3.0/version /dependency第二步创建一个简单的消息生产者public class Producer { public static void main(String[] args) throws MQClientException, InterruptedException { // 初始化一个消息生产者 DefaultMQProducer producer new DefaultMQProducer(DemoProducer); // 指定nameserver地址 producer.setNamesrvAddr(192.168.65.112:9876); // 启动消息生产者服务 producer.start(); for (int i 0; i 2; i) { try { // 创建消息。消息由Topic,Tag和body三个属性组成其中Body就是消息内容 Message msg new Message(TopicTest, TagA, (Hello RocketMQ i).getBytes(RemotingHelper.DEFAULT_CHARSET)); // 发送消息获取发送结果 SendResult sendResult producer.send(msg); System.out.printf(%s\n, sendResult); } catch (Exception e) { e.printStackTrace(); Thread.sleep(1000); } } // 消息发送完后停止消息生产者服务。 producer.shutdown(); } }第三步创建一个消息消费者接收RocketMQ中的消息public class Consumer { public static void main(String[] args) throws InterruptedException, MQClientException { // 构建一个消息消费者 DefaultMQPushConsumer consumer new DefaultMQPushConsumer(DemoConsumer); // 指定nameserver地址 consumer.setNamesrvAddr(192.168.65.112:9876); consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET); // 订阅一个感兴趣的话题这个话题需要与消息的topic一致 consumer.subscribe(TopicTest, *); // 注册一个消息回调函数消费到消息后就会触发回调。 consumer.registerMessageListener(new MessageListenerConcurrently() { Override public ConsumeConcurrentlyStatus consumeMessage(ListMessageExt msgs, ConsumeConcurrentlyContext context) { msgs.forEach(messageExt - { try { System.out.println(收到消息: new String(messageExt.getBody(), RemotingHelper.DEFAULT_CHARSET)); } catch (UnsupportedEncodingException e) {} }); return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; } }); // 启动消费者服务 consumer.start(); System.out.print(Consumer Started); } }运行其中的main方法后就可以启动一个RocketMQ消费者接收之前发送到RocketMQ上的消息并将消息内容打印出来。示例代码不用强行记忆在RocketMQ的源码包中有个example模块其中就有这些示例代码。这样通过几个简单的步骤我们就完成了RocketMQ的应用集成。但是这并不意味着这几个简单的步骤就足够搭建一个生产级别的RocketMQ服务。接下来我们会一步步把我们这个简单的RocketMQ服务在一个生产级别的服务集群推进。3.4搭建RocketMQ可视化管理服务在之前的简单实验中RocketMQ都是以后台服务的方式在运行我们并不很清楚RocketMQ是如何运行的。RocketMQ的社区提供了一个图形化的管理控制台Dashboard可以用可视化的方式直接观察并管理RocketMQ的运行过程。下载地址在官网的最下侧https://rocketmq.apache.org/download/Dashboard服务并不在RocketMQ的运行包中需要到RocketMQ的官网下载页面单独下载。下载后需要解压并进入对应的目录使用Maven进行编译需要提前安装Maven客户端mvn clean package -Dmaven.test.skiptrue编译完成后在源码的target目录下会生成可运行的jar包rocketmq-dashboard-1.0.1-SNAPSHOT.jar。接下来可以将这个jar包上传到服务器上。我们上传到/app/rocketmq/rocketmq-dashboard目录下。接下来我们需要在jar包所在的目录下创建一个application.yml配置文件在配置文件中做如下配置rocketmq: config: namesrvAddrs: - 192.168.65.112:9876主要是要指定nameserver的地址。注关于这个配置文件中更多的配置选项可以参考一下dashboard源码当中的application.yml配置文件。接下来就可以通过java指令执行这个jar包启动管理控制台服务java -jar rocketmq-dashboard-1.0.1-SNAPSHOT.jar 1dashboard.log 21 应用启动完成后会在服务器上搭建起一个web服务我们就可以通过访问http://192.168.232.128:8080查看到管理页面。这个管理控制台的功能非常全面。驾驶舱页面展示RocketMQ近期的运行情况。运维页面主要是管理nameserver服务。集群页面主要管理RocketMQ的broker服务。很多信息都一目了然。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

购物网站seo关键词定位如何做企业产品推广

想要永久收藏番茄小说平台上的精彩内容吗?这款功能强大的番茄小说下载器正是您需要的工具!通过简单的操作就能将喜爱的小说下载到本地,支持TXT、EPUB、HTML等多种格式,让您随时随地享受阅读乐趣。作为一款专业的下载工具&#xff…

张小明 2025/12/31 4:06:21 网站建设

做网站哪家最便宜大连网红打卡地

三十分钟为传统安防系统注入AI智能:wvp-GB28181-pro扩展实战 【免费下载链接】wvp-GB28181-pro 项目地址: https://gitcode.com/GitHub_Trending/wv/wvp-GB28181-pro 在数字化安防时代,传统视频监控系统面临诸多挑战:海量视频数据人工…

张小明 2025/12/31 5:19:24 网站建设

网站做好怎么推广互联网保险市场

在金融风控领域,你是否曾为复杂的评分卡开发流程而头疼?传统方法需要手动计算IV值、WOE分箱、逻辑回归建模,每一步都充满挑战。今天,我将分享如何使用scorecardpy库,在Python中轻松构建专业级信用评分卡模型。 【免费下…

张小明 2025/12/31 5:21:09 网站建设

免费建站网站教程计算机专业培训机构有哪些

还在为OCR识别后的文字排版混乱而头疼吗?🤯 每次图片转文字后都要手动调整段落、修正换行错误?别担心,Umi-OCR这款免费开源的离线OCR软件,通过智能文本后处理技术,让你的排版优化变得轻松简单!本…

张小明 2025/12/31 2:27:34 网站建设

装潢公司网站建设百度广告联盟怎么加入

KiTTY完整使用指南:Windows系统终极远程连接解决方案 【免费下载链接】KiTTY :computer: KiTTY, a free telnet/ssh client for Windows 项目地址: https://gitcode.com/gh_mirrors/kit/KiTTY KiTTY SSH客户端作为Windows平台上备受推崇的远程连接工具&#…

张小明 2025/12/30 22:47:43 网站建设

无锡公司网站建设大学网站建设论文

毕业季的经管系宿舍里,小李的日程本被划成了两半:左边是 “答辩西装选购”“毕业旅行民宿预订”,右边是 “论文选题卡壳第 7 天”“文献综述写了 3 段全是废话”。凌晨两点,他对着空白的 Word 文档叹气:“要是写论文像…

张小明 2025/12/30 19:48:51 网站建设