[置顶] flume高并发优化——(16)解决offsets变小问题

offsets初始化在上篇博客中《flume高并发优化——(14)解决空行停止收集数据问题,及offsets变小问题 》我们遗留了一个小问题,就是offsets变小的问题,迟迟未解决,经过研究flume代码发现,flume中,是自己管理offsets关系的,每个kafkachannel的代码中保留了一份topic-offsets的关系,源码:@Override public void start...
阅读(242) 评论(6)

[置顶] flume高并发优化——(15)中间件版本升级

在系统平稳运行一年的基础上,为提供更好的服务,现针对java,kafka,flume,zk,统一进行版本升级,请各位小伙伴跟着走起来,不要掉队啊! 名称 老版本号 新版本号 jdk 1.7.0_25 1.8.0 kafka 2.10-0.8.0.1 2.10-0.10.2.1 flume 1.6.0 1.7.0 zookeeper 3.4.6...
阅读(2134) 评论(3)

[置顶] flume高并发优化——(14)解决空行停止收集数据问题,及offsets变小问题

日志平台运行一段时间,发现日志有部分丢失,通过检查日志,发现有两个问题导致数据丢失,一个是遇到空行后,日志停止收集,还有就是kafka监控offsets时变小,通过分析代码,找到如下方法:空行问题:  在系统稳定运行一段时间之后,发现了一个致命性的bug就是在遇到空行时,无法自动跳过,导致识别为文件结束,再次读取还是空行,跳入了死循环解决办法:  解决的办法也非常简单,就是增加对文件大小与当前行数的...
阅读(363) 评论(2)

[置顶] flume高并发优化——(13)扩展三级文件配置&利用Headers扩展属性

上篇博客中,我们对flume进行了文件组进行了扩展,但是我们现在的配置还是针对某组文件单独配置,这样的维护成本还是太高,为了持续优化,我们对常见的三级文件进行优化(**logs/**project/**type/*.log)利用公司内部的约定,大家一起为简单配置努力。1,规范目录结构        在本项目约定下,日志结构采取如下:/logs/*project/type-tomcat/*.log2...
阅读(2144) 评论(6)

[置顶] flume高并发优化——(12)filesource 支撑文件组&兼容cat监控

主因        在上篇博客中,我们已经做到了非常不错的多文件检索,但是,还有一个问题,就是针对不同的项目,需要多个配置文件,这样,对运维,是个非常繁琐的问题,针对这个问题,本版对flume扩展了文件组(以|切分父文件)。        cat监控,是个久经考验的监控报警平台,因此决定兼容cat的协议,对source进一步扩展。        针对很多人说方法过大的问题,本次也做了调整,优化了面...
阅读(1282) 评论(6)

[置顶] flume高并发优化——(11)排除json转换及中文乱码

在使用flume收集数据,转换为json格式时,常常遇到特殊符号的问题,而json对于”引号,是非常敏感的,大家处理json数据的时候,要特别注意,在前不久,向es插入数据时,报错就是json转换失败原因:       json通用格式:        {"key":"value"}       {"key":{}}       {"key":[]}       ["one","two"]...
阅读(2221) 评论(3)

[置顶] flume高并发优化——(10)消灭elasticsearch sink多次插入

在flume作为通道接收json数据时,最近遇到一个问题,当flume-es-sink遭遇一个错误的时候,会不断尝试插入数据,而以前的数据又没有进行回滚,导致数据重复插入,脏数据累积,为了解决这个问题,现解决如下:原因如下:        1,事务控制在channel端        2,事务回滚,未处理已插入es中数据解决方案:        1,es批量操作不做回滚        2,es插入...
阅读(2297) 评论(6)

[置顶] flume高并发优化——(9)配置文件交由zookeeper管理

我们都希望,配置文件是从一个服务引出,然后客户端监听服务端变化,实时重启自身加载最新配置,这样,我们就不用维护每个独立的客户端配置,更新也变得非常简单,而flume,显然意识到了这一个巨大的实惠,他是支持配置文件交由zookeeper维护的,这样我们在修改配置时,flume会自动重新加载。1,zookeeper 添加节点        我们利用博客《使用zkweb维护zookeeper数据》中介绍...
阅读(4868) 评论(3)

[置顶] flume高并发优化——(8)多文件source扩展断点续传

在很多情况下,我们为了不丢失数据,一般都会为数据收集端扩展断点续传,而随着公司日志系统的完善,我们在原有的基础上开发了断点续传的功能,以下是思路,大家共同讨论:核心流程图:                         源码:/* * 作者:许恕 * 时间:2016年5月3日 * 功能:实现tail 某目录下的所有符合正则条件的文件 * Email:xvshu1@163.com * T...
阅读(6170) 评论(3)

[置顶] flume高并发优化——(7)RandomAccessFile升级多文件source

本篇文章旨在解决tail文件io断裂问题,我们使用linux原生的tail ,启动多个线程,做到对多个文件的数据收集,但是,随着业务日志增多,日志以日期分割,是个常用的做法,但是这样,就使得我们的flume插件在日期交换的凌晨,出现io断裂,造成不能继续收集数据...
阅读(4434) 评论(2)

[置顶] flume高并发优化——(6)开发多文件检索source插件

To detect all files in a folder step: 1,config one path 2,find all file with RegExp 3,tail one children file 4,batch to channal demo: demo.sources.s1.type = org.apache.flume.source.ExecTailSource demo.sources.s1.filepath=/export/...
阅读(6636) 评论(4)

[置顶] flume高并发优化——(5)KafkaOffsetMonitor

本片博客是介绍一款kafka监控的软件,以配合查看flume的kafka channel性能,其实这是个非常简单的项目,我们只需要下载好jar包,就可以使用了1,下载jar包http://pan.baidu.com/s/1eSPlzpw2,启动java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \ com.quantifind.kafka.offseta...
阅读(2037) 评论(3)

[置顶] flume高并发优化——(4)kafka channel

在上篇博客中,我们还留了一个小疑问,就是我们对最后一个flume的优化是如何做的,关于这一点,我们的思路是这样的,file的瓶颈是io,而我们使用的硬盘是5400转1t硬盘,如果想要优化,我们必须找到性能和memory相当,但是又能较好的保存数据,保证事务性的channel,符合这样要求的一款channel进入了我们的视线,就是kafkachannel,具体怎么做的,请大家看详细介绍:优化之前的架...
阅读(4602) 评论(5)

[置顶] flume高并发优化——(3)haproxy

在上篇博客中,我们虽然进行了较大的改动,但是,没有料到的是,flume的file性能瓶颈会如此快的到来,由于我们使用了一个filechannel作为负载均衡的通道,导致性能瓶颈很快到来,为了应对这样的瓶颈,我们对结构进行了第三次升级,替换了负载均衡的前端,换为性能更好的haproxy作为分发端,大家一起来看看是如何优化的。        还是老样子,大家看看上次优化过之后的结构:        我...
阅读(3342) 评论(5)

[置顶] flume高并发优化——(2)精简结构

大家在上篇博客中,可以看到,对flume本身的优化,我们可以说是一个较大的进步,但是,后期梳理时,发现,数据的处理经过了很多没有必要的步骤,我们的处理有些多余,但是精简哪里,又成为了一个问题,本篇博客带领大家一起看看,精简的关键位置及效果。还是老样子,大家会议上篇博客的架构:        不难看出,有一个性能点就是从主端口下发的时候,三个端口到es的过程中,为了让数据有较好的缓冲,我们使用了ka...
阅读(3446) 评论(7)

[置顶] flume高并发优化——(1)load_balance

通过一年多时间的使用,统一日志系统,已经接入公司前台,在20个节点,几十万用户,数百亿交易额的大压力下,仅仅使用了一个普通的服务器,承受住了严峻的考验,在公司今年更宏大的目标,也是为了给大数据组提供更加全面信息的需求下,公司所有项目,要接入ULOG系统,主要包含管理后台,wap,app等,流量一下达到一个峰值,flume的瓶颈凸显出来,在解决的过程中,对flume的了解以及性能调优,有了更深入的认...
阅读(4260) 评论(5)

Android开发学习(14)Popupwindow右上角弹出菜单

很多安卓app的右上角都有弹出菜单,今天我们继续丰富我们的计算机app,前几篇博客我们为他增加了历史记录的功能,今天我们使用Popupwindow做一个右上角弹出的按钮。 效果: 布局按钮主界面menu_popwindow.xml <LinearLayout xmlns:android="http://schemas.a...
阅读(344) 评论(0)

Android开发学习(13)Retrofit访问REST服务

前段时间,有个博友在讨论区提了一个web封装的框架Retrofit,正好接上篇博客,我们搭建了一个简单的rest服务。简介 准确来说,Retrofit 是一个 RESTful 的 HTTP 网络请求框架的封装,网络请求的工作本质上是 OkHttp 完成,而 Retrofit 仅负责 网络请求接口的封装,App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求...
阅读(329) 评论(0)

Android开发学习(12)Jersey构建RESTful后台服务

先来简单了解下概念,方便我们搭建相关服务:概念RESTful REST(英文:Representational State Transfer,简称REST)描述了一个架构样式的网络系统,比如 web 应用程序。它首次出现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 规范的主要编写者之一。在目前主流的三种Web服务交互方案中,REST相比于SOAP(Simple Obj...
阅读(141) 评论(0)

Android开发学习(11)HttpCient

承接上篇文章,本篇文章,我们使用httpclient访问后台rest接口,返回数据后进行处理,熟悉最简单的这种监护方式。HttpCient:HttpClient是Apache开源组织提供的HTTP网络访问接口(一个开源的项目),从名字上就可以看出,它是一个简单的HTTP客户端(并不是浏览器),可以发送HTTP请求,接受HTTP响应。但是不会缓存服务器的响应,不能执行HTTP页面中签入嵌入的JS代码,...
阅读(143) 评论(3)

Android开发学习(10)WebView访问网页

在不少的应用中,如果要快速搭建自己的应用,H5也是个不错的选择,在App端,保留H5的入口,也就是展示网页的入口就可以,本篇文章就和大家一起做一个展示网页的入口。 先看我们实现的结果: WebView使用H5实现的功能能够在不升级App的情况下动态更新,而且可以在Android或iOS的App上同时运行,节约了成本,提高了开发效率。 原理:其实就是Java代码和JavaScript之间的调用...
阅读(503) 评论(0)

Android开发学习(9)记忆功能计算器

承接上篇博客,每到一个阶段,我们就用一个项目总结我们学习到的内容,今天我们就一起继续完成一个拥有记忆功能的简单计算器,首先我们先看下计算器布局:布局计算主页面:历史记录查询页面:自定义标题:head.xml <RelativeLayout xmlns:android="http://schemas.android.com/a...
阅读(469) 评论(0)

Android开发学习(8)SQLite

每到一个阶段,我们就用一个项目总结我们学习到的内容,今天我们就一起来完成一个拥有记忆功能的简单计算器,首先我们先在这篇博客介绍将使用一种新的存储方式,SQLite。 百度百科: SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用...
阅读(369) 评论(1)

Android开发学习(7)ListView

很多时候,我们需要以列表的方式展示我们的商品,类似通讯录中联系人的列表展示页,今天我们就开始使用ListView做一个类似的功能ListView是一个经常用到的控件,ListView里面的每个子项Item可以使一个字符串,也可以是一个组合控件。先说说ListView的实现:添加步骤: 准备ListView要显示的数据 ; 使用 一维或多维 动态数组 保存数据; 构建适配器 , 简单地来说, 适配器就...
阅读(184) 评论(1)

Android开发学习(6)Maven管理项目

学习安卓开发有了一小段时间,一直想使用maven管理安卓的开发,这样就和以前的开发模式有了很大的重合,本着这个念头, 我们开始一步步使用maven创建一个安卓项目:开发环境:JDK 1.8 Maven 3.1.1 IDEA 2016主要步骤:配置 android 开发环境根据 android 官网提示,配置 android 开发环境,直到能在 eclipse 上运行简单的 helloAndroi...
阅读(216) 评论(1)

Android开发学习(5)记住用户名密码,自动登录

上篇文章我们学习编写了一个简单的登录页面,本篇文章,我们继续丰富这个页面,实现自动登录和记住用户名密码,学习安卓一个简单的数据存储器SharedPreferences使用。SharedPreferencesSharedPreferences是Android中最容易理解的数据存储技术,实际上SharedPreferences处理的就是一个基于XML文件存储key-value(键值对)。SharedPr...
阅读(219) 评论(1)

Android开发学习(4)简单登录界面

在简单的Hello Android 的基础上,我们进一步学习如果制作一个简单的登录界面(不涉及网络交互,用户名密码先固定为admin ),在这里我们学习获取用户名密码,多个Activity之间跳转。layout login.xml先看下成果: 源码: <RelativeLayout xmlns:and...
阅读(187) 评论(1)

Android开发学习(3)Hello Android!

在这里,我们简单介绍如何快速搭建我们的第一个安卓程序,熟悉安卓的常规开发模式。创建项目得力于idea的集成,我们可以快速搭建一套规范的安卓程序: 步骤:File -> New -> Project -> Android New Application 图像说明: 确定App名字 选择安卓版本 创建空活动 最终确定–漫长等待 文件结构: 序号 文件夹、文件和说明 1 src...
阅读(238) 评论(2)

Android开发学习(2)环境搭建及基本组件

继《Android开发学习(1)基本概念 》之后,我们大概了解了安卓的基本架构,及运行方式,本篇文章旨在了解App的环境搭建及基本组成部分,在宏观上有个更清晰的了解。基本组件应用程序组件是一个Android应用程序的基本构建块。这些组件由应用清单文件松耦合的组织。AndroidManifest.xml描述了应用程序的每个组件,以及他们如何交互。以下是可以在Android应用程序中使用的四个主要组件。...
阅读(166) 评论(1)

Android开发学习(1)基本概念

移动设备的火爆,不用过多笔墨,我们已经处于移动办公的时代,未来pc生存的空间,可能越来越小,对于移动应用开发的学习,显得越来越迫在眉睫,凭借着这几年的积累,经验,预计应该容易理解和入门些。入门一个语言,时刻不忘恩师的教诲,任何事情,在做之前,要想到,这不是一个孤立的事件,必然和自身以前的事件有千丝万缕的联系,有了这些联系,我们在接受一个所谓意义上“新事件”的时候,先要“同化”,找到相同点,然后在实行...
阅读(206) 评论(1)

How to choose the number oftopics/partitions in a Kafka cluster?

This is a common question asked by many Kafka users.The goal of this post is to explain a few important determining factors andprovide a few simple formulas. 这是许多kafka使用者经常会问到的一个问题。本文的目的是介绍与本问题相关的一些重要决...
阅读(158) 评论(2)

Error UNKNOWN_MEMBER_ID occurred while committing offsets for group ***

Error UNKNOWN_MEMBER_ID occurred while committing offsets for group ***:增加配置 agent1.channels.c2.kafka.consumer.session.timeout.ms=100000 agent1.channels.c2.kafka.consumer.request.timeout.ms=110000 agent1.channels.c2.kafka.consumer.fetch.max.wait.ms=1000...
阅读(625) 评论(2)

深入jdk——追踪Collections.sort 引发的bug(3)TimSort源码解读

本来准备看Java容器源码的。但是看到一开始发现Arrays这个类我不是很熟,就顺便把Arrays这个类给看了。Arrays类没有什么架构与难点,但Arrays涉及到的两个排序算法似乎很有意思。那顺便把TimSort算法和双指针快速排序也研究一下吧。首先强调一下,这是个稳定的排序算法看过代码之后觉得这个算法没有想象的那么难。逻辑很清晰,整个算法最大的特点就是充分利用数组中已经存在顺序。在归并的过程...
阅读(516) 评论(2)
257条 共13页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:596491次
    • 积分:13127
    • 等级:
    • 排名:第1043名
    • 原创:241篇
    • 转载:16篇
    • 译文:0篇
    • 评论:4555条
    博客专栏
    最新评论