Kafka 系列(三):Producer 源码篇

Kafka 系列文章列表Kafka 版本:2021-11 trunk 分支(当前最新版本3.0.0) 在 Kafka 中,客户端由 Java 语言实现,服务端由 Scala 语言来实现的,在使用 Kafka 时,客户端是用户最先接触到部分,因此,kafka系列文章的源码分析也会从客户端端开始,今天讲的是 Producer 端发送模型的实现。 在看这篇源码分析之前,不了解发送端原理的同学,...

💧 Posted on kafkaproducer

Kafka 系列(二):Producer 原理篇

Kafka 系列文章列表Kafka 版本:2021-11 trunk 分支(当前最新版本3.0.0) 一个正常的生产者逻辑需要具备以下几个步骤: 配置生产者客户端参数以及创建相应的生产者实例 构建待发送的消息 发送消息 关闭生产者实例

💧 Posted on kafkaproducer

Kafka 系列(一):基本概念

本文主要介绍一下kafka中的基本概念,主要包括:Producer、Consumer、topic、partition、offset、broker、ISR、AR、HW、LEO等。

💧 Posted on kafka

分布式ID

概述唯一id是我们在设计阶段常常遇到的问题。 在复杂的分布式系统中,几乎都需要对大量的数据和消息进行唯一标识。在设计初期,我们需要考虑日后数据量的级别,如果可能会对数据进行分库分表,那么就需要有一个全局唯一id来标识一条数据或记录。 生成唯一id的策略有多种,但是每种策略都有它的适用场景、优点以及局限性。

💧 Posted on 分布式ID全局唯一ID

RTO & RPO

RTO & RPO在故障恢复方面,目前业界公认有三个目标值得努力。 恢复时间:企业能忍受多长时间没有 IT,处于停业状态。 网络多长时间能够恢复 业务层面的恢复 整个恢复过程中,最关键的衡量指标有两个:一个是 RTO,另一个是 RPO。 所谓 RTO,Recovery Time Objective,是指故障发生后,从 IT 系统宕机导致业务停顿之时开始,到 IT 系统恢复至可以支持各部门运作、恢复运营之时,此两点之间的时间段称为 RTO。

💧 Posted on RTORPO

幂等性

什么是幂等性幂等性最早是数学里面的一个概念,后来被用于计算机领域,用于表示任意多次请求均与一次请求执行的结果相同,也就是说对于一个接口而言,无论调用了多少次,最终得到的结果都是一样的。比如以下代码:

💧 Posted on 幂等性系统设计

RPC vs REST

RPCRPC 是指远程服务调用(Remote Procedure Call) 也就是说两台服务器 A 和B。一个应用部署在 A 服务器上,想要调用 B 服务器上应用提供的函数 / 方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。 最终解决的问题:让分布式或者微服务系统中不同服务之间的调用像本地调用一样简单。 RPC 要解决的三个基本问题: ...

💧 Posted on RPCREST

常见限流算法

限流工程上的限流是什么呢? 限制的是 「流」,在不同场景下「流」的定义不同,可以是每秒请求数、每秒事务处理数、网络流量等等。 通常我们说的限流指代的是 限制到达系统的并发请求数,使得系统能够正常的处理 部分 用户的请求,来保证系统的稳定性。 限流不可避免的会造成用户的请求变慢或者被拒的情况,从而会影响用户体验。因此限流是需要在用户体验和系统稳定性之间做平衡的,即我们常说的 trade off。 限流也称流控(流量控制)。

💧 Posted on 限流算法系统设计

【转】如何设计一个可扩展的限流算法

限流(Rate Limiting,即速率限制)通过限制每个用户调用API的频率来防止API被过度使用,这可以防止他们因疏忽或恶意导致的API滥用。在没有速率限制的情况下,每个用户可以随心所欲地请求,这可能会导致“峰值”请求,从而导致其他用户得不到响应。在启用速率限制之后,它们的请求将被限制为每秒固定的数量。

💧 Posted on 限流算法

线程池详解

什么是线程池线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。

💧 Posted on 线程池ThreadPool