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

建个企业网站需要什么wordpress菜单是什么

建个企业网站需要什么,wordpress菜单是什么,网页设计需要考什么证,建站工具搭建网站RabbitMQ是如何组成的#xff1f;它有哪些重要的组件#xff1f; RabbitMQ主要由以下几个重要组件组成#xff1a; Broker#xff1a;这是消息代理#xff0c;主要负责接收、存储和转发消息Exchanges#xff1a;交换器#xff0c;它的主要作用是根据一定的规则匹配消息…RabbitMQ是如何组成的它有哪些重要的组件 RabbitMQ主要由以下几个重要组件组成 Broker这是消息代理主要负责接收、存储和转发消息Exchanges交换器它的主要作用是根据一定的规则匹配消息和队列Queues队列这是存储消息的地方Bindings绑定它是连接交换器和队列的规则Producers生产者它的主要作用是发送消息到交换器 这些组件共同工作使得RabbitMQ能够提供强大的消息队列功能 RabbitMQ如何保证消息的可靠性的 RabbitMQ通过以下几种方式来保证消息的可靠性 开启事务或者开启confirm模式这两种方式都可以保证消息不丢失。事务模式会在消息发送过程中加锁确保消息的可靠性但是性能较低。而confirm模式则是在消息发送后Broker会给生产者一个确认应答告知消息已经正确到达这种方式性能较高 开启RabbitMQ持久化RabbitMQ提供了持久化功能包括交换机、队列、消息的持久化。这样即使RabbitMQ服务重启消息也不会丢失 关闭RabbitMQ自动ack改成手动确认这样可以防止消费者在处理消息过程中出现异常导致消息丢失的情况。当消费者收到消息并处理完成后会给Broker发送一个ack应答Broker收到应答后才会删除这条消息。如果Broker没有收到应答那么这条消息会被重新投递给其他消费者 RabbitMQ能保证消息的顺序性吗怎么保证消息的顺序性 RabbitMQ可以保证消息的顺序性主要通过以下方式实现 创建多个队列每个消费者固定消费一个队列的消息这样就可以保证每个消费者处理的消息是有序的 生产者发送消息时同一个订单号的消息发送到同一个队列中由于同一个队列的消息是一定会保证有序的那么同一个订单号的消息就只会被一个消费者顺序消费 这样RabbitMQ就可以保证消息的顺序性了。但需要注意的是这种方式需要在生产者端进行一定的控制以确保同一个订单号的消息被发送到同一个队列中。同时消费者端也需要进行相应的处理以确保消息的顺序消费 RabbitMQ如何保证幂等性 RabbitMQ可以通过以下方式来保证幂等性 每个消息用一个唯一标识来区分消费前先判断标识有没有被消费过若已消费则不再消费 利用数据库的乐观锁机制执行更新操作前先去数据库查询version然后执行更新语句以version作为条件 使用Redis的命令Redis中的set命令天然支持幂等消息消费时只需要用set命令来判断消息是否被消费过即可 全局唯一ID Redis生产者在发送消息时为每条消息设置一个全局唯一的messageId消费者拿到消息后使用setnx命令将messageId作为key放到redis中setnx (messageId,1)若返回1说明之前没有消费过正常消费若返回0说明这条消息之前已消费过抛弃 以上就是RabbitMQ保证幂等性的主要方式。但需要注意的是这种方式需要在生产者端进行一定的控制以确保同一个订单号的消息被发送到同一个队列中。同时消费者端也需要进行相应的处理以确保消息的顺序消费 说一下RabbitMQ中的死信队列如何实现死信队列 死信顾名思义就是无法被消费的消息字面意思可以这样理解一般来说producer将消息投递到broker或者直接到queue里了consumer从queue取出消息进行消费但某些时候由于特定的原因导致queue中的某些消息无法被消费这样的消息如果没有后续的处理就变成了死信有死信自然就有了死信队列 消息变成死信有以下几种情况 消息被拒绝(basic.reject / basic.nack)并且requeue false消息TTL过期队列达到最大长度 死信的处理方式 死信的产生既然不可避免那么就需要从实际的业务角度和场景出发对这些死信进行后续的处理常见的处理方式大致有下面几种 丢弃如果不是很重要可以选择丢弃记录死信入库然后做后续的业务分析或处理通过死信队列由负责监听死信的应用程序进行处理 综合来看更常用的做法是第三种即通过死信队列将产生的死信通过程序的配置路由到指定的死信队列然后应用监听死信队列对接收到的死信做后续的处理。 什么是延迟队列它的使用场景有哪些 延迟队列是一种特殊的消息队列进入该队列的消息会被延迟消费。也就是说消息一旦入队了之后并不会立即被消费者消费而是需要等待一段时间后才能被消费。延迟队列的使用场景非常广泛以下是一些常见的例子 延迟消费例如用户生成订单之后需要过一段时间校验订单的支付状态如果订单仍未支付则需要及时地关闭订单用户活跃度检查例如用户注册成功之后需要过一段时间比如一周后校验用户的使用情况如果发现用户活跃度较低则发送邮件或者短信来提醒用户使用延迟重试例如消费者从队列里消费消息时失败了但是想要延迟一段时间后自动重试 以上就是延迟队列的基本概念以及一些常见的使用场景。在实际开发过程中根据具体的业务需求延迟队列可以有更多的应用场景 RabbitMQ如何实现延迟队列 RabbitMQ实现延迟队列主要有两种方式 利用RabbitMQ的TTLTime To Live特性和死信队列消息在TTL设置的时间内没有被消费则会成为“死信”并进入死信队列。具体步骤如下 声明一个普通队列比如叫queue_normal声明一个死信队列比如叫queue_dead为queue_normal设置参数x-dead-letter-exchange和x-dead-letter-routing-key值分别为queue_dead的交换器和路由键当queue_normal中的消息变为“死信”时这些消息会被自动路由到queue_dead 使用RabbitMQ的插件 rabbitmq_delayed_message_exchange这是一个官方提供的插件可以直接用来实现延迟队列。具体步骤如下 下载并安装rabbitmq_delayed_message_exchange插件在消息发送时设置消息的x-delay属性该属性表示消息延迟的时间消息会在x-delay设置的时间后被投递到消费者 以上就是RabbitMQ实现延迟队列的主要方式。需要注意的是这两种方式都需要在生产者端进行一定的控制以确保消息的延迟投递。同时消费者端也需要进行相应的处理以确保消息的顺序消费 RabbitMQ怎么保证高可用的 RabbitMQ保证高可用主要通过以下几种方式 集群部署RabbitMQ可以通过搭建集群来提高其高可用性。集群中的每个节点都可以处理消息如果某个节点出现故障其他节点仍然可以继续处理消息 镜像队列RabbitMQ提供了镜像队列的功能可以将队列的数据同步到多个节点这样即使某个节点出现故障其他节点上的镜像队列仍然可以提供服务 持久化RabbitMQ提供了持久化机制可以将交换器、队列、消息进行持久化这样即使RabbitMQ服务重启消息也不会丢失 消息确认机制RabbitMQ提供了消息确认机制包括生产者的confirm机制和消费者的ack机制可以确保消息在网络环境不稳定的情况下也能正确地被发送和接收 同城双活部署架构RabbitMQ集群采用同城双活部署架构依靠MQ-SDK和MQ-NameServer提供的集群寻址、故障快速切换等能力保障集群的可用性 以上就是RabbitMQ保证高可用的主要方式。需要注意的是这些方式需要在RabbitMQ的配置和使用中进行适当的设置和操作 Kafka为什么运行这么快 Kafka的高速运行主要归功于以下几种优化方式 顺序写入Kafka中每个分区是一个有序的不可变的消息序列新的消息不断追加到partition的末尾这就是顺序写。顺序写入可以提高磁盘I/O的性能因为磁盘最喜欢顺序I/O 零拷贝技术Kafka在读取的时候使用了零拷贝技术降低对文件的拷贝次数一定程度上提升了速度 大量使用页缓存Kafka充分利用了操作系统的页缓存来提高I/O效率。页缓存是操作系统对数据文件的读写提供的一种缓冲技术目的是为了减少I/O操作的次数 利用Partition实现并行处理每个Topic都包含一个或多个Partition不同Partition可位于不同节点因此可以充分利用集群优势实现机器间的并行处理 以上就是Kafka能够快速运行的主要原因。需要注意的是这些优化方式需要在Kafka的配置和使用中进行适当的设置和操作 说一下Kafka的选举流程 Kafka的选举流程主要是以下几步 创建Leader父节点在Zookeeper中创建一个名为/kafka的持久节点 各客户端竞争Leader各客户端在/kafka下创建Leader节点如/kafka/leader这个节点被设置为ephemeral_sequential类型表示这是一个临时的顺序节点 获取所有子节点并比较客户端通过getChildren方法获取/kakfa/下所有子节点然后比较其注册的节点的id和所有子节点中的id如果其id在所有子节点中最小则当前客户端竞选Leader成功 处理Leader故障如果Leader由于某些原因如网络故障或者异常退出与Zookeeper断开连接那么其他broker通过watch收到控制器变更的通知就会去尝试创建临时节点/controller如果有一个Broker创建成功那么其他broker就会收到创建异常通知也就意味着集群中已经有了控制器其他Broker只需创建watch对象即可 防止控制器脑裂为了解决Controller脑裂问题ZooKeeper中还有一个与Controller有关的持久节点/controller_epoch存放的是一个整形值的epoch number纪元编号也称为隔离令牌集群中每选举一次控制器就会通过Zookeeper创建一个数值更大的epoch number如果有broker收到比这个epoch数值小的数据就会忽略消息
http://www.hyszgw.com/news/125211/

相关文章:

  • 统计网站访问量怎么做贷款网站
  • 基金网站建设手机上自己做网站吗
  • 网站工信部备案流程wordpress网站被黑了
  • 做网站最快的编程语言flash网站管理系统
  • wex5做视频网站音乐网站开发教程
  • 网站的详情页面杭州 商城网站开发
  • 本地网站建设多少钱网络广告的传播技巧
  • 洛阳住房与城乡建设厅网站做企业网站收费多少
  • 北美购物网站排名源汇区建设局网站
  • 织梦做网站建立数据库小型网站商城建设
  • 工程建设信息网站资质公告织梦网站开发
  • 2网站建设公司网站功能策划
  • 网站推广的作用在哪里广告传媒公司属于什么行业
  • 四川平台网站建设设计wordpress移动端代码
  • 做网站要会哪些软件织梦宠物网站模板
  • 全flash网站设计wordpress搭建完成后
  • 西安建站推广浩森宇特北京网站建设
  • 沧州网站建设申梦拐角型网站
  • 科技企业网站如何建设专业的建设网站哪个好
  • html 如何嵌入网站页面wordpress销售主题
  • 仙桃做网站重庆颐众达网站
  • 石家庄市栾城区建设局网站电影网站要怎样做才有出路
  • 如何在百度做网站网络舆情信息
  • 深圳航空公司官方网站首页网站不用了怎么办
  • 2024免费网站推广网站开发哈尔滨网站开发公司
  • visio画网站开发类图阀门公司网站建设
  • python做网站 要学多久海口今天最新通知
  • 苏州建网站哪个好有源代码怎么制作网站
  • 建设银行网站登录不上网页设计软件哪个最好用
  • 营销型 手机网站企业信用管理系统