Kafka 消息存储及检索 原创 2016-02-29 杜亦舒 性能与架构 Kafka是一个分布式的消息队列系统,消息存储在集群服务器的硬盘Kafka中可以创建多个消息队列,称为topic,消息的生产者向topic中发布消息,消息的消费者从topic中获取消息消息是海量的,为了消息的读写性能,topic被分为多个部分,称为partition,kafka把每个topic的每个partition均匀的分布在集群中的不同服务器上所以从整体来看,Kafka的逻辑关系就是:生产者向topic中的某个par…
Kafka 快速起步 原创 2017-01-05 杜亦舒 性能与架构 主要内容:1. kafka 安装.启动2. 消息的 生产.消费3. 配置启动集群4. 集群下的容错测试5. 从文件中导入数据,并导出到文件 单机示例 安装 tar -xzf kafka_2.10-0.10.1.1.tgz cd kafka_2.10-0.10.1.1 启动 > bin/zookeeper-server-start.sh \ config/zookeeper.properties > bin/kafka-ser…
kafka消息存储机制 (一)关键术语 复习一下几个基本概念,详见上面的基础知识文章. Broker:消息中间件处理结点,一个Kafka节点就是一个broker,多个broker能够组成一个Kafka集群. Topic:一类消息,比如page view日志.click日志等都能够以topic的形式存在.Kafka集群能够同一时候负责多个topic的分发. Partition:topic物理上的分组.一个topic能够分为多个partition,每一个partition是一个有序的队列. Segm…
消息的存储原理: 消息的文件存储机制: 前面我们知道了一个 topic 的多个 partition 在物理磁盘上的保存路径,那么我们再来分析日志的存储方式.通过 ll /tmp/kafka-logs/testTopic-0/ 命令找到对应 partition 下的日志内容: kafka 是通过分段的方式将 Log 分为多个 LogSegment,LogSegment 是一个逻辑上的概念,一个 LogSegment 对应磁盘上的一个日志文件和一个索引文件,其中日志文件是用来记录消息的.索引文件是用…
[软件简介] OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器.它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 通过众多 进行良好设计的 Nginx 模块,OpenResty 有效地把 Nginx 服务器转变为一个强大的 Web 应用服务器,基于它开发人员可以使用 Lua 编程语言对 Nginx 核心以及现有的各种 Nginx C 模块进行脚本编程,构建出可以处理一万以上并发请求的极端高性能的 Web 应用. Ope…
kafka 可以支持海量数据发送,轻轻松松QPS过十万,如果JVM内存存储这一块如果不够优秀,根本无法支持这么庞大的QPS. 存储架构(这里这是落地数据,并木有涉及到序列化发送数据到broker) RecordAccumulator : 此类充当将记录累积到MemoryRecords RecordBatch:按TOPIC-PARTITION维度记录要发送的数据 MemoryRecords:需要发送的数据暂存储的地方 通过MemoryRecords属性,我们可以还原存储过程,利用compresso…
Kafka 消息以 Partition 作为存储单元,那么在 Partition 内消息是以什么样的格式存储的呢,如何处理 Partition 中的消息,又有哪些安全策略来保证消息不会丢失呢,这一篇我们一起看看这些问题. Partition 文件存储方式 每个 Topic 的消息被一个或者多个 Partition 进行管理,Partition 是一个有序的,不变的消息队列,消息总是被追加到尾部.一个 Partition 不能被切分成多个散落在多个 broker 上或者多个磁盘上. 它作为消息管理…
Kafka 快速起步 原创 2017-01-05 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 主要内容:1. kafka 安装.启动2. 消息的 生产.消费3. 配置启动集群4. 集群下的容错测试5. 从文件中导入数据,并导出到文件 单机示例 安装 tar -xzf kafka_2.10-0.10.1.1.tgz cd kafka_2.10-0.10.1.1 启动 > bin/zookeeper-server-start.sh \confi…
Kafka 高可用设计 2016-02-28 杜亦舒 Kafka在早期版本中,并不提供高可用机制,一旦某个Broker宕机,其上所有Partition都无法继续提供服务,甚至发生数据丢失对于分布式系统,当集群规模上升到一定程度后,宕机的可能性大大提高,对高可用性就有了非常高要求Kafka在0.8版本提供了高可用机制,主要是增加了Partition的复制设计引入Partition的Replication之后,同一个Partition的就有了多个副本,把这些副本均匀的分布到多个Broker上,就保证…
转载至文章作者:杜亦舒 链接:https://www.sdk.cn/news/4512 来源:SDK.cn 摘要:mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况 mysqlslap 是 Mysql 自带的压力测试工具,可以模拟出大量客户端同时操作数据库的情况,通过结果信息来了解数据库的性能状况 mysql slap 的一个主要工作场景就是对数据库服务器做基准测试 例如我们拿到了一台服务器,准备做为数据库服务器,…
分布式消息队列 Kafka 2016-02-25 杜亦舒 Kafka是一个高吞吐量的.分布式的消息系统,由Linkedin开发,开发语言为scala具有高吞吐.可扩展.分布式等特点 适用场景 活动数据统计活动数据包括页面访问量(Page View).被查看内容方面的信息.搜索情况等内容先以日志的形式存储,然后周期性地对这些文件进行统计分析运营数据统计收集服务器的性能数据(CPU.内存.IO使用率 --),之后进行统计Linkedin就是基于这类需求开发出了Kafka,所以kafka最适合的场景为…
Kafka是如何实现高吞吐率的 原创 2016-02-27 杜亦舒 性能与架构 Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘,以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失kafka主要使用了以下几个方式实现了超高的吞吐率 顺序读写 kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写Kafka官方给出…
1. MaxScale 是干什么的? 配置好了 MySQL 的主从复制结构后,我们希望实现读写分离,把读操作分散到从服务器中,并且对多个从服务器能实现负载均衡. 读写分离和负载均衡 是MySQL集群的基础需求,MaxScale 就可以帮着我们方便的实现这些功能. 2.MaxScale 的基础构成 MaxScale 是MySQL的兄弟公司 MariaDB 开发的,现在已经发展得非常成熟.MaxScale 是插件式结构,允许用户开发适合自己的插件. MaxScale 目前提供的插件功能分为5类: 认…
快速认识ELK中的L - Logstash 原创 2016-12-07 杜亦舒 简介 Logstash 是一个开源的数据采集引擎. Logstash 就像是一个管子,左面接数据源接收数据,右面接存储目的地,管子中间有过滤器,对接收到的数据进行过滤,只存储符合要求的数据. 例如 左面可以对接 日志文件.Reids.Kafka -- 右面可以对接 Elasticsearch.Kafka.MongoDB-- 所以 Logstash 的核心构成就是 input.filter.output. Logsta…
Hadoop 集群搭建 原创 2016-09-24 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 目标 在3台服务器上搭建 Hadoop2.7.3 集群,然后测试验证,要能够向 HDFS 上传文件,并成功运行 mapreduce 示例程序 搭建思路 (1)准备基础设施 准备3台服务器,分别命名为 master.slave1.slave2 互相配置为 SSH 免密码登录,并都安装好 JAVA 环境 (2)安装配置 hadoop 在 master…
服务发现与负载均衡 拓展阅读 : dubbo 原理概念图 2016-03-03 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 内容整理自文章“实施微服务,我们需要哪些基础框架” 作者杨波 微服务架构是由一系列职责单一的细粒度服务构成的分布式网状结构,服务之间通过轻量机制进行通信 这时候必然引入一个服务注册发现问题,服务提供方要注册通告服务地址,服务的调用方要能发现目标服务,同时服务提供方一般以集群方式提供服务,也就引入了负载均衡和健康检查问题…
分布式协调服务ZooKeeper工作原理 原创 2016-02-19 杜亦舒 性能与架构 性能与架构 性能与架构 微信号 yogoup 功能介绍 网站性能提升与架构设计 大数据处理框架Hadoop.Redis分布式服务Codis.淘宝的分布式消息中间件MetaMQ …… 他们都使用ZooKeeper做为基础部件,可以看出ZooKeeper的强大 ZooKeeper是什么 ZooKeeper(ZK)是一个分布式开源协调服务框架,是Google的Chubby一个开源的实现,是hadoop的一个子项目…
Redis 应用案例 - 在问题中不断成长 原创 2017-02-05 杜亦舒  本文翻译整理自 Andy Grunwald 发布的一篇文章,写的是作者所在公司使用 Redis 时遇到的问题,以及处理过程,在不断解决调整中积累了很多 Redis 的使用经验 背景 产品类型:酒店搜索 技术选型:前端 PHP + 后端 Java,都会用到 Redis Redis 使用场景:缓存.数据持久化前的临时存储 2010年开始应用 Redis,PHP 对其操作时使用的是 Predis 这个客户端库 2013年…
HDFS 核心原理 2016-01-11 杜亦舒 HDFS(Hadoop Distribute File System)是一个分布式文件系统文件系统是操作系统提供的磁盘空间管理服务,只需要我们指定把文件放到哪儿,从哪个路径读取文件句可以了,不用关心文件在磁盘上是如何存放的当文件所需空间大于本机磁盘空间时,如何处理呢?一是加磁盘,但加到一定程度就有限制了二是加机器,用远程共享目录的方式提供网络化的存储,这种方式可以理解为分布式文件系统的雏形,可以把不同文件放入不同的机器中,空间不足了可以继续加机器…
Docker容器是否可以改变世界? 2016-01-15 杜亦舒 2016年了,很多大牛开始预测技术趋势,其中一个普遍的观点我也很认同: Docker会更加流行,会改变程序世界 2015年的上半年我接触了Docker,熟悉之后,真有一点震惊的感觉,太方便了,可以解决很多问题 Container 通常翻译为容器,但还有另一个意思,就是"集装箱" 集装箱是21世纪最伟大的发明之一,它改变了世界货物运输体系,造就了一个高度自动化.标准化.低成本的物流体系,促进了经济的全球化发展 程序界也出现…
大数据运算模型 MapReduce 原理 2016-01-24 杜亦舒 MapReduce 是一个大数据集合的并行运算模型,由google提出,现在流行的hadoop中也使用了MapReduce作为计算模型 MapReduce 通俗解释 图书馆要清点图书数量,有10个书架,管理员为了加快统计速度,找来了10个同学,每个同学负责统计一个书架的图书数量张同学 统计 书架1王同学 统计 书架2刘同学 统计 书架3......过了一会儿,10个同学陆续到管理员这汇报自己的统计数字,管理员把各个数字加起来…
Hadoop 集群搭建 2016-09-24 杜亦舒 目标 在3台服务器上搭建 Hadoop2.7.3 集群,然后测试验证,要能够向 HDFS 上传文件,并成功运行 mapreduce 示例程序 搭建思路 (1)准备基础设施准备3台服务器,分别命名为 master.slave1.slave2互相配置为 SSH 免密码登录,并都安装好 JAVA 环境(2)安装配置 hadoop在 master 上下载解压 hadoop,修改相应配置文件,包括:core-site.xml.hdfs-site.xml…
Docker部署Hadoop集群 2016-09-27 杜亦舒 前几天写了文章"Hadoop 集群搭建"之后,一个朋友留言说希望介绍下如何使用Docker部署,这个建议很好,Docker不仅在生产环境威力巨大,对于我们在自己电脑中搭建学习实验环境更是非常便利 搭建一个集群环境时需要多台服务器,对于我们个人,这通常是个门槛,需要使用虚拟机,安装操作系统,然后运行起来多个虚机 安装操作系统是个不太轻松的任务,并且运行多个虚机对个人电脑性能也有一定要求,这些门槛影响了很多小伙伴的实践积极性…
HBase 的表结构 2016-10-13 杜亦舒 HBase 是一个NoSQL数据库,用于处理海量数据,可以支持10亿行百万列的大表,下面就了解一下数据是如何存放在HBase表中的 关系型数据库的表结构 为了更好的理解HBase表的思路,先回顾一下关系数据库中表的处理方式 例如有一个用户表user_info,有字段:id.name.tel,表名和字段需要在建表时指定 create table user_info ( id 类型, name 类型, tel 类型 ) 然后插入两条数据 inser…
HBase 数据读写流程 2016-10-18 杜亦舒 读数据 HBase的表是按行拆分为一个个 region 块儿,这些块儿被放置在各个 regionserver 中 假设现在想在用户表中获取 row key 为 row0001 的用户信息 要想取得这条数据,就需要先找到含有此条记录的 region HBase 是如何定位到具体 regionserver 中的具体 region 的呢? HBase 中有一个内置的 hbase:meta 表,其中记录了所有表的所有 region 的详细信息 例如…
HBase 的存储结构 2016-10-17 杜亦舒 HBase 中的表常常是超级大表,这么大的表,在 HBase 中是如何存储的呢?HBase 会对表按行进行切分,划分为多个区域块儿,每个块儿名为 HRegionHBase 是集群结构,会把这些块儿分散存储到多个服务器中,每个服务器名为HRegionServer服务器多了,就需要一个管理者 HMaster,负责 HRegion 的分配.HRegionServer 负载均衡的处理 等事务当某个 HRegion 的大小达到阈值后,便会被分割开来,新…
Phoenix - Hbase与SQL 2016-10-23 杜亦舒 Phoenix是什么 简单来说,Phoenix 是一个可以让我们通过SQL的方式操作HBase数据库的框架. HBase是一个NoSQL数据库,shell客户端只支持一些简单的操作,而且看起来容易晕. 例如下面这个图,返回的是一张表的所有数据: 是不是很难看,而且如果对HBase进行复杂查询的话,只能通过HBase的原生API编写查询程序,这样就比较麻烦. 使用Phoenix的话,就可以使用SQL来查询,便捷高效,同时还可以为…
理解 Linux shell 中的一个方言:2>&1  2016-11-14 杜亦舒 前言 在使用 linux 命令或者 shell 编程时,这个用法常会遇到 2>&1 如果是刚开始接触Linux,这个东西的确不好理解,因为他没有直观的含义,不像一个命令,例如 cp是 copy 的简写,很好记. 我以前刚用Linux时就对这个东西迷糊了一段时间,今天刚好看到一篇文章介绍他,感觉很有必要总结出来,分享给还不是很理解这个方言的朋友. 下面看一个命令示例,然后分析下他是如何工作的:…
原创 2016-07-12 杜亦舒 性能与架构 以前登录Mysql的控制台后,使用SQL语言来操作数据库,如 mysql> select * from tablename; Mysql 5.7.12 之后有了比较大的变化,支持了JSON文档的操作,同时也提供了全新的数据库操作方式,现在可以不需要SQL的知识,以非常自然的代码方式操作数据库,例如 db.news.insert("create_date", "title") .values("2016-…
原创 杜亦舒   前阶段体验 Mysql 的新版本 5.7.13,由于机器里已经有 Mysql了,再安装另一个版本会有一些麻烦,为了简单,便使用 Docker 容器来安装 可能有人会认为没必要,在一台机器安装多个 Mysql 也没那么复杂,的确,单纯实现这个需求的话没问题,但其实这是一个普遍性的需求 例如 JDK 出新版本了.Redis 出新版本了.听说一个新的东西不错…… 都需要体验一下,机器数量有限,如果都安装到一台机器中的话,有很大概率会出现莫名其妙的问题,非常难维护 使用虚拟机可以解决这…