高并发之接口限流与实现
开发互联网系统及架构在满足测算出的并发请求时,还要预防并发可能突破设计峰值的情况,必要时可以优先处理高优先级数据或特殊特征的数据,也要确保系统可用不崩溃。
开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文介结限流相关概念和实现方式。
开发互联网系统及架构在满足测算出的并发请求时,还要预防并发可能突破设计峰值的情况,必要时可以优先处理高优先级数据或特殊特征的数据,也要确保系统可用不崩溃。
开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。本文介结限流相关概念和实现方式。
JDK 中自带了一些非常实用的 JVM 性能分析和故障监控的小工具。
也有一些第三方分析工具,如 Arthas。基于开发工具的 JVM 分析工具,如 IDEA 的 VisualVM 插件,Eclipse 的 MAT(Memory Analyzer Tool)。
了解 JVM 内存和性能分析工具及使用,对快速判断和定位线上问题是非常有帮助的。
分布式集群部署的应用之间相互调用,需要用到 PRC(远程过程调用)技术。
RPC 是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协义和框架。RPC 可以让开发人员像调用本地方法一样调用远程服务。
目前开源且相对成熟和稳定的主流 RPC 框架有:HSF,Dubbo,Thrity,gRPC,Finagle。
HashMap 是 Java 中非常重要的集合类型,其具有快速存储,快速查找(时间复杂度非常低,非效非常高),自动扩容等特点,在实际开发中经常用到。
关于 HashMap 特性,底层原理也是面试中被问到概率极高的问题,因为 HashMap 涉及到好几个基本数据结构及相关算法知识,如组数,链表,二叉树及变种,Hash算法等。所以有必要对其深入理解。
ActiveMQ 为生产者发送消息提供了根据业务场景需要的相关优化配置,支持同步,异步发送,支持流量控制,Broker存储空间设置等。
也为消息者提供了优化设置,支预取限制,为慢消费者提供了等待消息策略和消息丢弃策略的配置,支持异步消费者和优先级消费设置。
ActiveMQ 支持 JMS 规范中的 2 种消息转发模式,支持消息事务,支持异步发送消息和生产者流量控制,提供了 4 种消息消费应答模式,提供消息发送失败后重试机制,
本文分别对 ActiveMQ 消息转发模式,事务,消息过期,消息积压,应答模式,重试,死信队列等相关配置进行描述。
ActiveMQ 同样支持集群部署,支持客户端集群和服务端集群,实现可靠的高性能负载均衡。
ActiveMQ 提供了独占消费者配置,可保证消息消费的顺序性,消息组是对独占消费者功能的增强。
ActiveMQ 是一款老牌的,开源的,多协议的,非常流行的,基于 JAVA 的消息中间件,由 Apache 出品。ActiveMQ 官网,ActiveMQ Documentation。
ActiveMQ 实现了 JSM 1.1 标准,并提供了很多附加特性,如 JMS 管理,主从管理,消息组通信,消息优先级,延迟接收消息,虚拟接收者,消息持久化,消息队列监控等特性。
目前有两种类型的 ActiveMQ 可用,分别是经典的 5.x
版本 和 下一代 Artemis
版本,后续 5.x 与 Artemis 版本兼容合并将成为 ActiveMQ 6。
Kafka 是一个开源的流处理平台,由 Scala 和 Java 编写;是一种高吞吐量的分布式发布订阅消息系统。
Kafka 用于构建实时的数据管道和流式应用程序。它具有水平可扩展性、容错性、速度极快。并在数千家公司投入生产。
Kafka 目前最新的版本是 2.2.0,本篇以该版本为例。Apache Kafka 官网,Apache 软件基金会(ASF) 官网。
本篇基于本地事件表加 ActiveMQ 实现分布式事务。
本篇是 分布式微服务应用系列(九):分布式事务概念及解决方案 ,分布式微服务应用系列(十):本地事件表加消息队列实现分布式事务思路 的延续。