短网址系统设计总结 需求评估 输入数据:一个长网址、过期时间和一个自定义的别名 输出数据:自定义别名或者随机生成的短网址,过期时间之前访问都会被重定向到原始地址。 读多写少 实现原理:将短网址redirect到长网址(301/302跳转) 约束: 过期即失效 短网址唯一 支持自定义短网址 QPS要求、低延迟、可靠性、安全性 系统设计 可行解 写 输入长域名,判断是否存 2022-07-10 系统设计 #系统设计
Kafka学习笔记(四)-集群工作机制 Controller机制 Controller主要作用是在Zookeeper的帮助下管理和协调整个Kafka集群(在zk中存储集群元数据)。Kafka集群中会有一个或多个Broker,其中一个Broker会被选举为Controller,它负责管理整个集群中所有分区和副本的状态,其工作职责包括以下内容: Topic管理:完成对Kafka的Topic的创建删除、分区增加等操作。 分区重分配: 2022-07-06 中间件 > Kafka
Kafka学习笔记(三)-通信协议 协议设计 需要进行网络传输的中间件都会拥有自己的一套通信协议,这往往会成为该组件的性能瓶颈,需要考虑的优化点较多。Kafka自定义了基于TCP的二进制通信协议,Kafka2.0中,一共有43种协议类型,每个都有对应的请求和响应,与HTTP协议类似,它同样有RequestHeader和RequestBody。其中RequestHeader结构如下: api_key:API标识,例如PRODU 2022-07-03 中间件 > Kafka
分析Linux中的Zero-Copy技术 传统IO的流程 零拷贝技术是对传统IO的性能优化,在介绍零拷贝之前,先简单了解一下传统IO中,数据流向的过程: 用户进程发起read()调用,从用户态切换至内核态,DMA从文件中读取数据,并存储在IO Buffer(内核态) 请求得到的数据从IO Buffer拷贝到用户态Buffer(从内核态切换到用户态),然后返回给用户进程。 用户进程调用write()将数据输出到网卡中,此时将 2022-06-30 Linux
Kafka学习笔记(二)-存储架构 Kafka存储架构 Kafka是为了解决大数据量的实时日志流而产生的,日志流主要特点包括: 数据实时存储 海量数据存储与处理 Kafka需要保证以下几点: 存储的主要是消息流 要保证海量数据的高效存储 要支持海量数据的高效检索 要保证数据的安全性和稳定性 Kafka使用的存储方案是:磁盘顺序写 + 稀疏哈希索引。 日志目录布局 Kafka中消息以Topic为单 2022-06-29 中间件 > Kafka
小记-构建RPM包 准备工作 OS环境与rpm版本号如下: [root@localhost ~]# uname -a Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux [root@localhost ~]# rpm --versi 2022-06-27 Linux
使用Prometheus + Grafana 构建监控可视化系统 监控系统简介 业务监控系统通常包含以下一些组件: 采集:信息源来自log、metrics等。 可以通过定期外围探测、AOP手动织入、字节码自动织入 上报:通过http或者tcp 聚合 存储 可视化、告警 业务监控系统解决了什么问题? 趋势分析:收集长期监控数据,对监控指标进行趋势分析,例如:分析磁盘空间增长率,预测何时进行磁盘扩容。 对照分析:分析不同版本在 2022-06-11 中间件 > Prometheus
Kafka学习笔记(一)-基础入门 简介 Kafka是由LinkedIn使用Scala语言开发的分布式消息引擎系统,目前已被捐献给Apache基金会,它以高吞吐量、可持久化、流数据处理等特性而被广泛使用。它主要有以下三种主要功能: 消息中间件:具备常见的消息队列功能:系统解耦、冗余存储、流量削峰填谷、缓冲、异步通信,同时具备消息顺序性保障、回溯消费等功能。 数据存储系统:使用Kafka存储各种服务的log,然后统一输出,E 2022-05-06 中间件 > Kafka