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

网站价格套餐网站如何绑定虚拟主机

网站价格套餐,网站如何绑定虚拟主机,爱南宁app下载,广州公司做网站简介#xff1a;本文讲讲述平安保险为何选择 RocketMQ#xff0c;以及在确定使用消息中间件后#xff0c;又是如何去选择哪款消息中间件的。 作者#xff1a;孙园园#xff5c;平安人寿资深开发 为什么选用 RocketMQ 首先跟大家聊聊我们为什么会选用 RocketMQ#xff…简介本文讲讲述平安保险为何选择 RocketMQ以及在确定使用消息中间件后又是如何去选择哪款消息中间件的。 作者孙园园平安人寿资深开发 为什么选用 RocketMQ 首先跟大家聊聊我们为什么会选用 RocketMQ在做技术选型的过程中应用场景应该是最先考虑清楚的只有确定好了应用场景在做技术选型的过程中才有明确的目标和衡量的标准。像异步、解耦、削峰填谷这些消息中间件共有的特性就不一一介绍了这些特性是决定你的场景需不需要使用消息中间件这里主要讲述下在确定使用消息中间件后又是如何去选择哪款消息中间件的。 同步双写确保业务数据安全可靠不丢失 我们在搭建消息中间件平台时的定位是给业务系统做业务数据的传输使用对业务数据的很重要的一个要求就是不允许丢数据所以选用 RocketMQ 的第一点就是他有同步双写机制数据在主从服务器上都刷盘成功才算发送成功。同步双写条件下MQ 的写入性能与异步刷盘异步赋值相比肯定会有所下降与异步条件下大约会有 20% 左右的下降单主从架构下1K 的消息写入性能还是能达到 8W 的 TPS对大部分业务场景而言性能是能完全满足要求的另外对下降的这部分性能可以通过 broker 的横向扩招来弥补所以在同步双写条件下性能是能满足业务需求的。 多 topic 应用场景下性能依旧强悍 第二点业务系统的使用场景会特别多使用场景广泛带来的问题就是会创建大量的 topic所以这时候就得去衡量消息中间件在多 topic 场景下性能是否能满足需求。我自己在测试的时候呢用 1K 的消息随机往 1 万个 topic 写数据单 broker 状态下能达到2W左右的 TPS这一点比 Kafka 要强很多。所以多 topic 应用场景下性能依旧强悍是我们选用 topic 的第二个原因。这点也是由底层文件存储结构决定的像 Kafka、RocketMQ 这类消息中间件能做到接近内存的读写能力主要取决于文件的顺序读写和内存映射。RocketMQ 中的所有 topic 的消息都是写在同一个 commitLog 文件中的但是 Kafka 中的消息是以 topic 为基本单位组织的不同的 topic 之间是相互独立的。在多 topic 场景下就造成了大量的小文件大量的小文件在读写时存在一个寻址的过程就有点类似随机读写了影响整体的性能。 支持事务消息、顺序消息、延迟消息、消息消费失败重试等 RocketMQ 支持事务消息、顺序消息、消息消费失败重试、延迟消息等功能比较丰富比较适合复杂多变的业务场景使用。 社区建设活跃阿里开源系统 另外在选用消息中间件时也要考虑下社区的活跃度和源码所使用的开发语言RocketMQ 使用 Java 开发对 Java 开发人员就比较友好不管是阅读源码排查问题还是在 MQ 的基础上做二次开发都比较容易一点。社区里同学大都是国内的小伙伴对大家参与 RocketMQ 开源贡献也是比较亲近的这里呢也是希望更多的小伙伴能参与进来为国内开源项目多做贡献。 SPI 机制简介及应用 介绍完为什么选用 RocketMQ 后接下来给大家介绍下我们是如何基于 SPI 机制应用 RocketMQ 的。SPI 全称为 (Service Provider Interface) 是 JDK 内置的一种服务提供发现机制我个人简单理解就是面向接口编程留给使用者一个扩展的点像 springBoot 中的 spring.factories 也是 SPI 机制的一个应用。如图给大家展示的是 RocketMQ 中 SPI 的一个应用。我们基于 SPI 机制的 RocketMQ 客户端的应用的灵感也是来自于 MQ 中 SPI 机制的应用。RocketMQ 在实现 ACL 权限校验的时候是通过实现 AccessValidator 接口PlainAccessValidator 是 MQ 中的默认实现。权限校验这一块可能因为组织架构的不一样会有不同的实现方式通过 SPI 机制提供一个接口为开发者定制化开发提供扩展点。在有定制化需求时只需要重新实现 AccessValidator 接口不需要对源码大动干戈。 接下来先给大家介绍下我们配置文件的一个简单模型在这个配置文件中除了 sendMsgService、consumeMsgConcurrently、consumeMsgOrderly 这三个配置项外其余的都是 RocketMQ 原生的配置文件发送消息和消费消息这三个配置项呢就是 SPI 机制的应用是为具体实现提供的接口。可能有的同学会有疑问SPI 的配置文件不是应该放在 META-INF.service 路径下么这里呢我们是为了方便配置文件的管理索性就跟 MQ 配置文件放在了一起。前面也提到了META-INF.service 只是一个默认的路径而已为了方便管理做相应的修改也没有违背SPI机制的思想。 我们再看下这个配置文件模型这里的配置项呢囊括了使用 MQ 时所要配置的所有选项proConfigs 支持所有的 MQ 原生配置这样呢也就实现了配置与应用实现的解耦应用端只需呀关注的具体的业务逻辑即可生产者消费者的实现和消费者消费的 topic 都可以通过配置文件来指定。另外该配置文件也支持多 nameserver 的多环境使用在较复杂的应用中支持往多套 RocketMQ 环境发送消息和消费多套不同环境下的消息。消费者提供了两个接口主要是为了支持 RocketMQ 的并发消费和顺序消费。接下来呢给大家分享下如何根据这个配置文件来初始化生产者消费者。首先给大家先介绍下我们抽象出来的客户端加载的一个核心流程。 客户端核心流程详情 图中大家可以看到客户端的核心流程我们抽象成了三部分分别是启动期、运行期和终止期。首先加载配置文件呢就是加载刚刚介绍的那个配置文件模型在配置与应用完全解耦的状态下必须先加载完配置文件才能初始化后续的流程。在初始化生产者和消费者之前应当先创建好应用实现的生产者和消费者的业务逻辑对象 供生产者和消费者使用。在运行期监听配置文件的变化根据变化动态的调整生产者和消费者实例。这里还是要再强调下配置与应用的解耦为动态调整提供了可能。终止期就比较简单了就是关闭生产者和消费者并从容器中移除。这里的终止期指的生产者和消费者的终止并不是整个应用的终止生产者和消费者的终止可能出现在动态调整的过程中所以终止了的实例一定要从容器中移除方便初始化后续的生产者和消费者。介绍完基本流程后接下来给大家介绍下配置文件的加载过程。 如何加载配置文件 配置文件加载这一块的话流程是比较简单的。这里主要讲的是如何去兼容比较老的项目。RocketMQ 客户端支持的 JDK 最低版本是 1.6所以在封装客户端时应该要考虑到新老项目兼容的问题。在这里呢我们客户端的核心包是支持 JDK1.6 的spring 早期的项目配置文件一般都是放在在 resources 路径下我们是自己实现了一套读取配置文件的和监听配置文件的方法具体的大家可以参考 acl 中配置文件的读取和监听。在核心包的基础上用 springBoot 又封装了一套自动加载配置文件的包供微服务项目使用配置文件的读取和监听都用的 spring 的那一套。配置文件加载完之后 配置文件中应用实现的生产者和消费者是如何与 RocketMQ 的生产者和消费者相关联的呢接下来给大家分享下这方面的内容。 如何将生产消费者与业务实现关联 首先先看下消费者是如何实现关联的上图是 MQ 消费者的消息监听器需要我们去实现具体的业务逻辑处理。通过将配置文件中实现的消费逻辑关联到这里就能实现配置文件中的消费者与 RocketMQ 消费者的关联。消费者的接口定义也是很简单就是去消费消息。消费消息的类型可以通过泛型指定在初始化消费者的时候获取具体实现的参数类型并将MQ 接受到的消息转换为具体的业务类型数据。由客户端统一封装好消息类型的转换。对消费消息的返回值大家可以根据需要与 MQ 提供的 status 做一个映射这里的 demo 只是简单显示了下。在获取具体的应用消费者实例的时候如果你的消费逻辑里使用了 spring 管理的对象那么你实现的消费逻辑对象也要交给 spring 管理通过 spring 上下文获取初始化好的对象如果你的消费逻辑里没有使用 spring 进行管理可以通过反射的方式自己创建具体的应用实例。 与消费者不一样的是生产者需要将初始化好的 producer 对象传递到应用代码中去而消费者是去获取应用中实现的逻辑对象那如何将 producer 传递到业务应用中去呢 业务代码中实现的生产者需要继承 SendMessage这样业务代码就获得了 RmqProducer 对象这是一个被封装后的生产者对象该对象对发送消息的方法进行的规范化定义使之符合公司的相应规范制度该对象中的方法也会对 topic 的命名规范进行检查规范 topic 有一个统一的命名规范。 如何动态调整生产消费者 首先谈到动态调整就需要谈一下动态调整发生的场景如果没有合适的使用场景的话实现动态调整就有点华而不实了。这里我列举了四个配置文件发生变化的场景: nameserver发生变化的时候需要重新初始化所有的生产者和消费者这个一般是在 MQ 做迁移或者当前 MQ 集群不可用是需要紧急切换 MQ 增减实例的场景只要启动或关闭相应的实例即可增加应用实例的场景一般是在需要增加一个消费者来消费新的 topic 的减少消费者一般是在某个消费者发生异常时需要紧急关闭这个消费者及时止损。 调整消费者线程的场景中我们对源码进行了一点修改让应用端能获取到消费者的线程池对象以便对线程池的核心线程数进行动态调整。这个的应用场景一般是在当某个消费者消费的数据比较多占用过多的 CPU 资源时导致优先级更高的消息得不到及时处理可以先将该消费者的线程调小一些。 应用的优点 原文链接 本文为阿里云原创内容未经允许不得转载。
http://www.yutouwan.com/news/500682/

相关文章:

  • 怎么把做的页面放到网站上wordpress postclass
  • 用什么网站推广展厅设计案例分析
  • 容桂网站制作动态南宁建设网站
  • 在川航网站购票后怎么做wordpress 伪静态
  • 视频做网站微信接口文档
  • 卖汽车怎么做网站网站点击按钮排序
  • wordpress网站运行时间代码蜜桃传奇免费网页版
  • node.js 做网站2024房地产最新消息
  • 网站建设的要点是什么意思我们seo
  • 电商网站开源授权二次开发企业网上年审营业执照
  • 宁波科技网站建设wordpress 菜单 数据库
  • 成都那家网站制作公司好网页设计网站设计哪个好
  • 猎聘网网站谁做的网页都有哪些
  • 关键词排名优化网站建设公司哪家好宁德网站开发公司
  • 做网站一年费用单页面网站多少钱
  • 网站导航图标网站建设要经历哪些步骤?
  • 深圳一元购网站建设江苏做网站的公司有哪些
  • 南昌新建网站建设免费推广选择推广途径与原因
  • 蓝色汽车配件公司网站 模板焊工培训ppt课件
  • 中小型企业建设网站关键词查询神器
  • 免费的源码分享网站深圳注册公司育君财税
  • 武进网站建设机构WordPress发货
  • 中小企业网站建设服务上海医疗器械网站前置审批
  • 一般小型教育网站的建设和开发权威seo技术
  • 做citation的网站广州百度快速优化排名
  • c 做网站加载多个图片js修改wordpress
  • 网站底部备案图标手机 网站 系统
  • 网站 维护方案维护网站建设
  • 有深度网站四川建设厅网站入川备案文件
  • 怎样给公司申请一个网站cms网站怎么建