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

自助游网站开发分析报告总结网站设计知识准备

自助游网站开发分析报告总结,网站设计知识准备,wordpress cdn缓存,网站关键词的使用文章目录 前言一、RocketMQ简介1.1 整体架构 二、RocketMQ安装部署2.1 RocketMQ 下载2.2 修改 JVM 参数2.3 启动 NameServer 和 Broker2.4 验证发送和接受消息2.5 停止 NameServer 和 Broker2.6 配置全局环境 三、RocketMQ应用场景3.1 异步处理3.2 应用解耦3.3 流量削峰 前言 … 文章目录 前言一、RocketMQ简介1.1 整体架构 二、RocketMQ安装部署2.1 RocketMQ 下载2.2 修改 JVM 参数2.3 启动 NameServer 和 Broker2.4 验证发送和接受消息2.5 停止 NameServer 和 Broker2.6 配置全局环境 三、RocketMQ应用场景3.1 异步处理3.2 应用解耦3.3 流量削峰 前言 工作中很多种场景用到消息队列消息队列简单来说就是消息的传输过程中保存消息的一种容器。项目中引入消息队列中间件主要解决了异步处理、应用耦合、流量削峰等问题。今天我们来学习一下阿里开源的一款产品 RocketMQ。 一、RocketMQ简介 RocketMQ 是一款低延迟、高并发、高可用、高可靠的分布式消息中间件。具备异步通信的优势系统拓扑简单、上下游耦合较弱主要应用于异步解耦流量削峰填谷等场景。 1.1 整体架构 RocketMQ 架构主要分为四个部分如上图所示 ● Producer 消息发布的角色支持分布式集群方式部署。Producer 通过 MQ 负载均衡模块选择相应的 Broker 集群队列进行消息投递投递的过程支持快速失败并且低延迟。 ● Consumer 消息消费的角色支持分布式集群方式部署。支持 PUSH 推PULL 拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费它提供实时消息订阅机制可以满足大多数用户的需求。 ● NameServer NameServer 是整个 RocketMQ 的大脑相当于路由/注册和发现中心。可使用集群方式部署集群中各个NameServer 都是无状态的即无法感知其它 NameServer 的存在。NameServer 的主要作用是为消息生产者和消息消费者提供有关 Topic 的路由信息所以 NameServer 就需要存储路由信息并且能够管理 Broker 节点包括路由注册、路由删除等功能。 ● Broker RocketMQ 核心组件之一大部分重量级工作都是通过 Broker 来完成的。Borker 处理各种请求和存储消息决定整个 RocketMQ 体系的吞吐性能、可靠性和可用性。Broker 可以存储多个 Topic 的消息每个 Topic 的消息也可以分片存储于不同的 Broker。MessageQueue 用于存储消息的物理地址每个 Topic 中的消息地址存储于多个 MessageQueue 中。 主题Topic 表示一类消息的集合每个主题包含若干条消息每条消息只能属于一个主题是 RocketMQ 进行消息订阅的基本单位。 在RocketMQ中每个Topic默认都会有4个队列并且每个队列都有一个id默认从0开始依次递增二、RocketMQ安装部署 2.1 RocketMQ 下载 安装部署RocketMQ前, 需要先安装JDK这里不做记录!RocketMQ 下载链接https://archive.apache.org/dist/rocketmq/4.9.1/ 下载到本地后 win r 打开 cmd 输入如下命令将文件上传到 Liunx 服务器的 /mydata/rocketmq/目录。 scp rocketmq-all-4.9.1-bin-release.zip的位置 root192.168.57.129:/mydata/rocketmq/输入 Linux 开机密码后上传成功如下图 或者直接使用如下命令下载安装包 wget https://archive.apache.org/dist/rocketmq/4.9.1/rocketmq-all-4.9.1-bin-release.zip解压安装包 unzip rocketmq-all-4.9.1-bin-release.zip重命名 mv rocketmq-all-4.9.1-bin-release rocketmq-4.9.1进入rocketmq-4.9.1 文件夹 cd rocketmq-4.9.1查看 rocketmq-4.9.1 目录 2.2 修改 JVM 参数 在启动 RocketMQ 之前建议修改启动时的 JVM 参数因为默认的参数都比较大为了避免内存不够建议修改小。 修改 runserver.sh 的 JVM 参数 vi /mydata/rocketmq/rocketmq-4.9.1/bin/runserver.sh将原来的初始堆内存和最大最内存调整为 512mesc : wq 保存后退出 修改 runbroker.sh 的 JVM 参数 vi /mydata/rocketmq/rocketmq-4.9.1/bin/runbroker.sh2.3 启动 NameServer 和 Broker 启动 nameServer nohup /mydata/rocketmq/rocketmq-4.9.1/bin/mqnamesrv -n 192.168.57.129:9876 查看 nohup.out 日志 [rootlocalhost bin]# cat nohup.out Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release. The Name Server boot success. serializeTypeJSON编写 broker.conf 配置文件 vim /mydata/rocketmq/rocketmq-4.9.1/conf/broker.conf加上这行开启自动创建 Topic autoCreateTopicEnable true启动 broker nohup /mydata/rocketmq/rocketmq-4.9.1/bin/mqbroker -n 192.168.57.129:9876 查看 nohup.out 日志 [rootlocalhost bin]# cat nohup.out Java HotSpot(TM) 64-Bit Server VM warning: Using the DefNew young collector with the CMS collector is deprecated and will likely be removed in a future release Java HotSpot(TM) 64-Bit Server VM warning: UseCMSCompactAtFullCollection is deprecated and will likely be removed in a future release. The Name Server boot success. serializeTypeJSON The broker[localhost.localdomain, 192.168.57.129:10911] boot success. serializeTypeJSON and name server is 192.168.57.129:98762.4 验证发送和接受消息 ● 配置 nameserver 的环境变量在发送和接受消息之前需要告诉客户端 nameserver 的位置。配置 NAMESRV_ADDR 如下。 vim /etc/profile配置信息 export NAMESRV_ADDR192.168.57.129:9876重新加载配置让它生效 source /etc/profile● 使用 bin/tools.sh 工具验证消息的发送和接收默认会发 1000 条数据。 启动生产者发送消息 tools.sh org.apache.rocketmq.example.quickstart.Producer启动消费者接收消息 tools.sh org.apache.rocketmq.example.quickstart.Consumer2.5 停止 NameServer 和 Broker 停止 nameserver [rootlocalhost bin]# mqshutdown namesrv The mqnamesrv(11783) is running... Send shutdown request to mqnamesrv(11783) OK停止 broker [rootlocalhost bin]# mqshutdown broker The mqbroker(12178) is running... Send shutdown request to mqbroker(12178) OK2.6 配置全局环境 vim /etc/profileexport ROCKETMQ_HOME/mydata/rocketmq/rocketmq-4.9.1 export PATH$PATH:$ROCKETMQ_HOME/binsource /etc/profile这样就不必每次进入 RocketMQ 的安装目录了直接可以使用 mqnamesrv 和mqbroker 指令。 三、RocketMQ应用场景 3.1 异步处理 如下图简单模拟用户下单流程若使用同步通信方式用户下订单后后台需要执行创建订单扣减库存加积分生成优惠卷四个业务模块。通常来说它们都是以微服务的形式部署在不同机器上网络不可靠因素无疑增加了用户下单失败的风险调用链长增加了用户下单后返回下单成功的时长。 使用消息队列后当用户点击下订单操作后台往消息队列发送消息(userIdproductId…)后续创建订单扣减库存加积分优惠卷四个业务只需要去消息队列的某个 Topic 订阅消息当 Broker 的某个 Topic 有它们所订阅的消息后就能接受消息进而去执行它们的业务逻辑。所以用户下订单后便能很快返下单成功。 相比第一种同步调用方案使用 MQ 异步处理能明显提高了系统的吞吐量而且上下游的依赖关系明显减弱了达到了解耦的目的。 3.2 应用解耦 如下图所示当用户发送请求经过 API 网关路由到服务 A服务 A 再发送消息给 MQ 的某个 Topic 服务 B服务 C服务 D 订阅这个 Topic 后就能接受服务 A 的消息再去处理各自的业务达到应用解耦的目的。 绝大多数电商业务场景都使用消息队列来解决类似的系统耦合过于紧密的问题。引入消息队列后订单服务在订单变化时发送一条消息到消息队列的一个主题 Order 中所有下游系统都订阅主题 Order这样每个下游系统都可以获得一份实时完整的订单数据无论增加、减少下游系统或是下游系统需求如何变化订单服务都无需做任何更改实现了订单服务与下游服务的解耦。 3.3 流量削峰 如何避免过多的请求压垮我们的秒杀系统? 设计思路: 使用消息队列隔离网关和后端服务以达到流量控制和保护后端服务的目的。 加入消息队列之后整个秒杀的流程如下 网关在收到请求后将请求放入到 MQ 中后端服务从请求 MQ 获取请求完成后续秒杀处理过程返回响应 代价: 增加系统调用链的环节导致总体的响应时延变长同步调用变成了异步调用增加系统的复杂度成本问题MQ高可能、高可用 常见限流算法: 固定窗口算法滑动窗口算法漏桶算法令牌桶算法 令牌桶控制流量的原理是: 单位时间内只发放固定数量的令牌到令牌桶中规定服务在处理请求之前必须先从令牌桶中拿出一个令牌如果令牌桶中没有令牌则拒绝请求。这样就保证单位时间内能处理的请求不超过发放令牌的数量起到了流量控制的作用。 更多的使用场景: 通过MQ实现分布式事务最终一致性作为发布/订阅系统实现一个微服务级系统间的观察者模式连接流计算任务和数据用于将消息广播给大量接收者数据同步 备注 应用解耦和流量控制部分来自B站作者(架构驿站)的消息队列进阶课。在此表示感谢
http://www.w-s-a.com/news/287532/

相关文章:

  • 甘肃网站建设制作商网站空间哪家公司的好
  • 思途旅游网站建设系统用vscode做网站
  • 广州站改造最新消息半年工作总结ppt模板
  • logo模板下载网站推荐哪家网站开发培训好
  • 做外贸网站效果图页面关键词优化
  • 广平网站建设成都活动轨迹
  • 小型网站网站建设需要网络公司是什么行业
  • 滑动 手机网站 代码网页制作与设计讨论
  • 自己做网站处理图片用什么软件wordpress html5支持
  • 校园网站怎么建软文文案范文
  • 中国建设官方网站如何创建自己的软件
  • 来宾住房与城乡建设网站天津西青区怎么样
  • 西安网站建设培训班鄂州网页定制
  • 西部数码网站备份自己怎么做网站啊
  • h5网站开发用什么软件制作公司网站建设代理怎么做
  • 网站建设资料准备网上购物app有哪些
  • 沧州做网站优化哪家公司便宜国内百度云网站建设
  • 网站的最近浏览 怎么做龙岩市人才网最新招聘信息
  • 网站建设需要找工信部吗网站开发账务处理
  • 做那种的视频网站个体工商网站备案
  • 推广网官方推广网站中国建设招聘信息网站
  • 医院网站建设需要多少钱网络营销渠道可分为哪几种
  • 怎么取网页视频网站元素计算机专业论文网站开发
  • 上海网站建设备案号怎么恢复wordpress打开页面空白
  • 30个做设计的网站企业设计网站
  • 招生网站开发的背景创意 wordpress
  • 网站备案资料查询小型企业管理系统软件
  • 温州网站建设维护怎么做好网站开发、设计
  • 佛山 做网站公司有哪些网站排名忽然不见了
  • 广告网站建设最专业东莞大朗网站设计