• 架构师之路九分布式系统下异步通信与限流方案


    前面一个章节,我们解决了,在秒杀,抢购的环节下,会产生的大流量或者突发流量而导致的服务雪崩的问题,我们从技术,业务角度,分别采取了 令牌桶算法,漏桶算法,其中以Guava,nginx,计算器的方案来达到限流与消峰的目的,业务上,时间分片,以12306为例子,达到限流目的
    这一章节,我们介绍MQ泳道的一些常用 的中间件,来解决异步通信的问题

    先抛出一个问题,我们在进行用户注册的时候,一般需要向用户系统提交数据,数据持久化到数据库,同时我们也需要用户向我们的邮件系统提交数据,当同一时刻,大批量新用户啊进行注册的时候,用户系统,与邮件系统就承载过大的压力,其中注册邮件可以采取异步通信的方式来实现,下面聊一聊异步通信中常用的中间件,MQ,ActiveMQ,RocketMQ,还有kafaka等


    第一种: ActiveMq,这对于单机处理的业务以及功能简单的业务,大多采取这种方式,其中就只有JMS Poducer, Porducer,Consumer,处理起来也比较简单

    重点介绍一下第二种: RocketMq,也是阿里出品的一个功能,

    其流程: Producer>NameServer>Broker>Conusmer,
    Producer Cluster 向NameServer注册中心进行注册,并获取broker的地址,定时查询Topic消息, NameServer只是配置节点没有什么具体任务
    Broker 用来存储数据信息,一般会进行主从Broker设置,搭建Broker Cluster, 并定时返回心跳与Topic给到NameServer,
    Consumer cluster 向NameServer注册中心注册,并获取broker的地址,定时查询Topic消息

    特点:
    顺序,事务,集群,广播,亿级, 分布式,Push与Pull的消息订阅模式

    开发流程:

    项目代码流程

    下载RocketMq
    解压
    配置环境
    启动NameServer,Borker
    引入pom依赖
    制定生产者
    制定消费者
    消息折可以指定消费的方式

    但就项目而言,我们常见的消峰的案例: app端,app端进行埋点数据上报消峰案例; PC端, 分布式调用跟踪系统埋点数据消峰


    更多内容,请关注博客
  • 相关阅读:
    mysql的增删改查
    Java的SPI机制
    城商行容器云平台应用场景及持久化存储实践
    算法进阶——数组中只出现一次的两个数字
    Qt项目-安防监控系统(欢迎登录注册)
    pnpm v9 正式发布,已停止 Node.js v16 支持
    Vue3中runtime-dom的实现-详细步骤
    Docker Compose安装
    使用MyBatis框架进行关系型数据库操作
    kubernetes Service详解
  • 原文地址:https://blog.csdn.net/qq_37022150/article/details/126520442