Recently, my work requires me to familiarize myself with concepts such as AWS Availability Zones, subnets, network connectivity, NAT Gateways, and Internet Gateways. I would like to summarize my understanding of these topics briefly.

text
Read more »

在分布式系统中,多个服务之间的交互涉及到复杂的网络通信和数据传输,其中每个服务可能由不同的团队或组织负责维护和开发。因此,在这样的环境下,当一个请求被发出并经过多个服务的处理后,如果出现了问题或错误,很难快速定位到问题的根源。全链路追踪技术可以帮助我们解决这个问题,它能够跟踪和记录请求在系统中的传输过程,并提供详细的性能和日志信息,使得开发人员能够快速诊断和定位问题。这种技术对于分布式系统的可靠性、性能和可维护性都非常重要。

RocketMQ 5.0 与分布式全链路追踪

Apache RocketMQ 5.0 版本作为近几年来最大的一次迭代,在整个可观测性上也进行了诸多改进。其中,支持标准化的分布式全链路追踪就是一个重要的特性。

RocketMQ 5.0 可观测
 

分布式链路追踪系统的起源可以追溯到 2007 年 Google 发布的《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》论文。这篇论文详细介绍了 Google 内部使用的链路追踪系统 Dapper,其中使用的 span 概念被广泛采用,并成为后来开源链路追踪系统中的基础概念之一。

Read more »

gRPC 提供了非常复杂的自动重试策略。其中按照重试时机可以分为简单 retry 和 hedging 两种。按照业务上划分可以分为透明重试和非透明重试。

text
Read more »

长久以来,RocketMQ 易于部署、高性能、高可用的架构,支撑了数十年来集团内外海量的业务场景。时至今日,为了迎接如今云原生时代的新挑战,我们重磅推出了 RocketMQ 5.0 新架构。

在 5.0 新架构中,我们更新了整个 RocketMQ 的网络拓扑模型,着眼于将更上层的业务逻辑从 broker 中剥离到无状态的 proxy ,这样独立的计算节点可以无损地承担日后的升级发布任务,与此同时将 broker 解放出来承担纯粹的存储任务,为未来打造更强的消息存储引擎做好铺垫。通信层方面,出于标准化,多语言的考虑我们摒弃了 RocketMQ 使用多年的 RemotingCommand 协议,采用了 gRPC 来实现客户端与服务端之间的通信逻辑。

针对于用户侧,我们希望尽可能少的叨扰客户进行升级,维持逻辑轻量,易于维护,可观测性良好,能够可以达到“一次性把事情做对”。

Read more »

计算机系统中,常常会有各种业务场景需要限制调用方的调用频次,当下游调用频次过高时,往往会造成服务端过多资源占用从而请求报错,超时甚至服务崩溃等超出预期的情况。在此时限流算法就显得非常有必要。

Rate Limiting

在介绍之前,有一点需要弄清楚:当我们分别说限流 1 次/s 和 60 次/min 时,我们是在谈论一件事吗?

Read more »

示例工程参照 aliyun-mq/rocketmq-logging

在开发 RocketMQ 5.0 SDK 的过程中,遭遇到一个问题,由于历史上的原因,RocketMQ 的日志默认情况下是会输出到用户的账户主目录下的,但是在之前的版本中,RocketMQ 自己维护了一个日志模块,也是我们所熟知的 logging 模块(下图所示)。之所以没有使用开源的 slf4j 和 logback/log4j2 的方案主要还是想要避免配置文件和环境参数的冲突。

RocketMQ 作为经常被业务代码所依赖的中间件产品,如果自己也直接使用开源的 logback/log4j2 解决方案,那么和用户自己的配置发生冲突几乎是板上钉钉的事情。但是 RocketMQ 本身这个日志模块带来一定的维护成本不说,功能也是无法做到和开源的 logback/log4j2 的解决方案对齐的。

Read more »

现代 CPU 一般都是有多级缓存的,越靠近 CPU 的缓存越快也越小。CPU 缓存层数并不固定,通常是三层,因此这里以三层缓存的典型 hierarchy 来进行叙述。

CPU 的三层缓存我们称之为 L1,L2 和 L3 cache,也被称为一/二/三级缓存。其中:

  • L1 和 L2 cache 为每个核特有,L1 缓存是最小最快的缓存。
  • L3 为单个插槽上的所有 CPU 核心共享。
  • 主存保存这程序运行的所有数据,相比较 L1/L2/L3 而言,更大更慢,由所有插槽上的所有 CPU 核心共享。
Read more »

Vercel 之前叫 ZEIT ,是著名的 Guillermo Rauch 发起的静态网站 hosting 服务。Verel 自己有智能 DNS 服务和 边缘节点加速。免费的方案提供一个月 100GB 的流量 和 100h 的构建时间,对个人博客非常合适了。

Vercel

现在通过站长工具可以看到,GitHub Pages 的博客在大陆地区访问速度很差,这我还是挂在 Cloudflare 经过 CDN 加速的,实际 Cloudflare 的 CDN 加速效果很多时候还不如没有。

Read more »

When you first start exploring the .NET technology, you may feel just as overwhelmed as I did with terms like .NET Framework, .NET Core, .NET 5, and a plethora of other concepts such as Mono, Xamarin, and ASP.NET showing up when you open Visual Studio. This article aims to help you gain a basic understanding of these technologies and make sense of the jargon.

Read more »

动机

博客使用 Hexo 搭建,体验一直还是不错的,不过最近碰到个问题,Hexo 生成的文章 url 的格式是 /year/month/day/title ,网上一些说法是说对太长的 url 对 SEO 不利。

Hexo
Read more »
0%