随笔分类 -  中间件

摘要:[TOC] 之前聊过了很多Kafka启动过程中的一些加载内容,也知道了broker可以分为很多的partition,每个partition内部也可以分为leader和follower,主从之间有数据的复制。那么这么多partition是谁在管理?broker内部有没有主从之分?这就是本文的主角,Ka 阅读全文
posted @ 2017-11-08 17:30 飞轩 阅读(1578) 评论(0) 推荐(1) 编辑
摘要:在KafkaServer启动过程的入口中,会启动Replica Manager,众所周知,这是一个副本管理器。replica在Kafka中扮演的角色很重要,是保证消息不丢失的一个重要概念。 replica的个人理解概念如下:producer发送的消息给broker,broker是分为多个partit 阅读全文
posted @ 2017-11-08 11:25 飞轩 阅读(919) 评论(0) 推荐(0) 编辑
摘要:SocketServer主要用于接收外部的网络请求,并把请求添加到请求队列中。 一、入口 在KafkaServer.scala中的start方法中,有这样的入口: 这块就是启动了一个SocketServer,我们具体看一下。 二、构造方法 我们看下SocketServer里面包含的参数: 这里面涉及 阅读全文
posted @ 2017-11-07 14:14 飞轩 阅读(1100) 评论(2) 推荐(0) 编辑
摘要:目前来说,kafka的日志中记录的内容比较多,具体的存储内容见 "这篇博客" ,写的比较好。可以看到,存储的内容还是比较多的,当存储文件比较大的时候,我们应该如何处理这些日志?下面我们通过kafka启动过程的源码,分析下kafka的日志处理过程。 一、入口方法 在kafkaServer.scala中 阅读全文
posted @ 2017-11-06 21:11 飞轩 阅读(565) 评论(0) 推荐(0) 编辑
摘要:一般来说,我们是通过命令来启动kafka,但是命令的本质还是调用代码中的main方法,所以,我们重点看下启动类Kafka。源码下下来之后,我们也可以通过直接运行Kafka.scala中的main方法(需要指定启动参数,也就是server.properties的位置)来启动Kafka。因为kafka依 阅读全文
posted @ 2017-10-23 17:22 飞轩 阅读(2494) 评论(0) 推荐(0) 编辑
摘要:Kafka源码依赖于Scala环境,首先需要安装scala,这块请自行百度进行安装。 "传送门" 当然,我们要分析源码,需要下载源码,请自行从github上面下载。 说明:本文使用的kafka版本为0.10.0.1,这是目前公司使用的版本。 下面说明下kafka源码的工程结构: 下面主要对core目 阅读全文
posted @ 2017-10-23 11:17 飞轩 阅读(655) 评论(0) 推荐(0) 编辑
摘要:一般来说,我们对于数据库最主要的要求就是:数据不丢。不管是主从复制,还是使用类似otter+canal这样的数据库同步方案,我们最基本的需求是,在数据不丢失的前提下,尽可能的保证系统的高可用,也就是在某个节点挂掉,或者数据库发生主从切换等情况下,我们的数据同步系统依然能够发挥它的作用 数据同步。本文 阅读全文
posted @ 2017-10-17 15:34 飞轩 阅读(7420) 评论(4) 推荐(0) 编辑
摘要:转帖:http://www.infoq.com/cn/articles/depth interpretation of kafka data reliability Kafka起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞 阅读全文
posted @ 2017-09-14 11:01 飞轩 阅读(434) 评论(0) 推荐(0) 编辑
摘要:TCP是个“流”协议,所谓流,就是没有界限的一串数据。大家可以想象河里的流水,他们是连成一片的,其间并没有分界线。TCP底层并不了解上层业务数据的具体含义,他会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的 阅读全文
posted @ 2017-09-10 20:13 飞轩 阅读(3645) 评论(0) 推荐(0) 编辑
摘要:从0.9.0.0开始,下面是消费者的配置。 名称|描述|类型|默认值 | | | bootstrap.servers|消费者初始连接kafka集群时的地址列表。不管这边配置的什么地址,消费者会使用所有的kafka集群服务器。消费者会通过这些地址列表,找到所有的kafka集群机器。|list| key 阅读全文
posted @ 2017-08-31 09:59 飞轩 阅读(6284) 评论(0) 推荐(1) 编辑
摘要:名称 | 描述 | 类型 | 默认值 | | | bootstrap.servers | kafka集群地址,ip+端口,以逗号隔开。不管这边配置的是什么服务器,客户端会使用所有的服务器。配置的列表只会影响初始发现所有主机。配置的格式应该是:ip:port,ip:port,因为配置的内容只是用于服务 阅读全文
posted @ 2017-08-29 10:49 飞轩 阅读(5479) 评论(0) 推荐(2) 编辑
摘要:名称|描述|类型|默认值|有效值区间|重要程度 | | | | | zookeeper.connect|zk地址|string|||高 advertised.host.name|过时的:只有当advertised.listeners或listeners没有配置的时候才会生效。使用advertised 阅读全文
posted @ 2017-08-28 10:47 飞轩 阅读(3190) 评论(0) 推荐(0) 编辑
摘要:前置条件:让方法调用的前置条件判断更简单。 在我们的日常开发中,经常要对入参进行一定的参数校验,比如是否为空,参数的取值范围是否符合要求等等。这种参数校验如果我们单独进行校验的话,代码的重复率比较高,也不是很优雅。Guava提供了一个类PreConditions来统一校验我们的参数,同时可以抛出对应 阅读全文
posted @ 2017-08-22 09:12 飞轩 阅读(1008) 评论(0) 推荐(0) 编辑
摘要:一、使用场景 在日常开发中,我们经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。重试策略在服务治理方面也有很广泛的使用,通过定时检测,来查看 阅读全文
posted @ 2017-08-03 09:34 飞轩 阅读(1200) 评论(0) 推荐(0) 编辑
摘要:一、常见的限流算法 目前常用的限流算法有两个:漏桶算法和令牌桶算法。 1.漏桶算法 漏桶算法的原理比较简单,请求进入到漏桶中,漏桶以一定的速率漏水。当请求过多时,水直接溢出。可以看出,漏桶算法可以强制限制数据的传输速度。 2.令牌桶算法 令牌桶算法的原理是系统以一定速率向桶中放入令牌,如果有请求时, 阅读全文
posted @ 2017-07-20 11:12 飞轩 阅读(8138) 评论(0) 推荐(0) 编辑
摘要:一、准备工作 服务器:最好是多台,大于等于2 已经搭建好的zookeeper集群 下载软件kafka_2.11 0.10.0.1.tgz 二、创建目录 三、修改配置文件 进入到config目录 主要关注: server.properties 这个文件即可,我们可以发现在目录下: 有很多文件,这里可以 阅读全文
posted @ 2017-07-17 19:03 飞轩 阅读(263) 评论(0) 推荐(0) 编辑
摘要:1.配置 .zookeeper下载地址:http://apache.mirrors.lucidnetworks.net/zookeeper/ 可以选择需要的版本,我下载的是zookeeper 3.4.6.tar.gz,解压得到文件夹zookeeper 3.4.3 由于手头机器不足,所以在一台机器上部 阅读全文
posted @ 2017-07-17 15:14 飞轩 阅读(1259) 评论(0) 推荐(0) 编辑