求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

Kafka 系列 控制器

深入理解Kafka

在 Kafka 集群中会有一个或多个 broker ,其中有一个 broker 会被选举为控制器(Kafka Controller),它负责管理整个集群中所有分区和副本的状态。 当某个分区的 leader 副本出现故障时,由控制器负责为该分区选举新的 leader 副本。 当检测到某个分区的 ISR 集合发生变化时,由控制器负责通知所有 broker 更新其元数据信息。 当使...

Kafka 系列 幂等与事务

深入理解Kafka

Kafka 从0.11.0.0版本开始引入了幂等和事务这两个特性,以此来实现EOS(exactly once semantics ,精确一次处理语义)。 幂等 所谓的幂等,简单地说就是对接口的多次调用所产生的结果和调用一次是一致的。生产者在进行重试的时候有可能会重复写入消息,而使用 Kafka 的幂等性功能之后就可以避免这种情 况。 开启幂等性功能的方式很简单,只需要显式地将生产者客户...

Kafka 系列 存储架构

深入理解Kafka

不考虑多副本的情况,一个分区对应一个日志(Log)。为了防止Log过大,Kafka 又引入了日志分段(LogSegment)的概念,将Log切分为多个LogSegment,相当于一个巨型文件被平均分配为多个相对较小的文件,这样也便于消息的维护和清理。 事实上,Log和LogSegnient也不是纯粹物理意义上的概念, Log在物理上只以文件夹的形式存储,而每个LogSegment对应于...

网络 系列 CNAME

开启 网络 探索新篇章

真实名称记录(Canonical Name Record),即 CNAME 记录,是域名系统(DNS)的一种记录。CNAME 记录用于将一个域名(同名)映射到另一个域名(真实名称),域名解析服务器遇到 CNAME 记录会以映射到的目标重新开始查询。 这对于需要在同一个 IP 地址上运行多个服务的情况来说非常方便。若要同时运行文件传输服务和 Web 服务,则可以把 ftp.example.c...

网络 系列 CDN

开启 网络 探索新篇章

CDN 全称: Content Delivery Network 或 Content Ddistribute Network,即内容分发网络 CDN 回源 回源是指浏览器在发送请求报文时,响应该请求报文的是源站点的服务器,而不是各节点上的缓存服务器(比如nginx开启缓存),那么这个过程相对于通过各节点上的缓存服务器来响应的话就称作为回源。回源的请求或流量太多的话,有可能会让源站点...

Go 系列 面向对象编程

Go 语言有着自己对面向对象的理解,它也有着自己的封装、继承、多态。 go 语言面向对象编程的特点为: 类与对象:Go 没有类,但是有类型 type struct {} 封装(数据隐藏):和别的 OO 语言有 4 个或更多的访问层次相比,Go 把它简化为了 2 层: 包范围内的:通过标识符首字母小写,对象 只在它所在的包内可见 可导出的...

Go 系列 入门

特点 Go 是一门编译型语言,Go 语言的工具链将源代码及其依赖转换成计算机的机器指令(静态编译) Go 语言原生支持 Unicode,它可以处理全世界任何语言的文本。 Go 语言的代码通过包(package)组织,包类似于其它语言里的库 (libraries)或者模块(modules)。 main 包比较特殊。它定义了一个独立可执行的程序,而不是一个库。在 main 里...

Go 系列 基本使用

命令行参数 os 包以跨平台的方式,提供了一些与操作系统交互的函数和变量。程序的命令行参数可从os 包的Args变量获取;os包外部使用os.Args访问该变量。 os.Args变量是一个字符串(string)的切片(slice)。 os.Args的第一个元素,os.Args[0], 是命令本身的名字;其它的元素则是程序启动时传给它的 参数。s[m:n]形式的切片表达式,产生从第m个元...

Go 系列 零碎要点

语言特性 类型系统 接口 并发 特点 Go 是一门编译型语言,Go 语言的工具链将源代码及其依赖转换成计算机的机器指令(静态编译) Go 语言原生支持 Unicode,它可以处理全世界任何语言的文本。 Go 语言的代码通过包(package)组织,包类似于其它语言里的库 (libraries)或者模块(modules)。 main 包比较特殊。它定义了...

RocketMQ 系列 消息有序

消息中间件基本问题

RocketMQ 的顺序消息需要满足 2 点: Producer 端保证发送消息有序,且发送到同一个队列。 Consumer 端保证消费同一个队列。 生产端 RocketMQ 可以严格的保证消息有序。但这个顺序,不是全局顺序,只是分区(queue)顺序。要全局顺序只能一个分区。 但是同一条 queue 里面,RocketMQ 的确是能保证 FIFO 的。 确保消息放到同...