- 博客(337)
- 资源 (1)
- 收藏
- 关注
原创 flume高并发优化——(11)排除json转换及中文乱码
在使用flume收集数据,转换为json格式时,常常遇到特殊符号的问题,而json对于”引号,是非常敏感的,大家处理json数据的时候,要特别注意,在前不久,向es插入数据时,报错就是json转换失败原因: json通用格式: {"key":"value"} {"key":{}} {"key":[]} ["one","two"]
2016-08-19 18:31:04 5447 3
原创 flume高并发优化——(10)消灭elasticsearch sink多次插入
在flume作为通道接收json数据时,最近遇到一个问题,当flume-es-sink遭遇一个错误的时候,会不断尝试插入数据,而以前的数据又没有进行回滚,导致数据重复插入,脏数据累积,为了解决这个问题,现解决如下:原因如下: 1,事务控制在channel端 2,事务回滚,未处理已插入es中数据解决方案: 1,es批量操作不做回滚 2,es插入
2016-08-19 18:14:42 5480 9
原创 flume高并发优化——(9)配置文件交由zookeeper管理
我们都希望,配置文件是从一个服务引出,然后客户端监听服务端变化,实时重启自身加载最新配置,这样,我们就不用维护每个独立的客户端配置,更新也变得非常简单,而flume,显然意识到了这一个巨大的实惠,他是支持配置文件交由zookeeper维护的,这样我们在修改配置时,flume会自动重新加载。1,zookeeper 添加节点 我们利用博客《使用zkweb维护zookeeper数据》中介绍
2016-07-22 14:49:09 9167 3
原创 netty学习(三)——开始传送对象喽!!
上篇博客中,我们学习了如何简单建立链接,在本篇中,我们开始利用netty传输简单的对象,做一个简单的范例:1,服务端 1.1 服务端package com.xvshu.test.two;import org.jboss.netty.bootstrap.ServerBootstrap;import org.jboss.netty.channel.*;import org.jbo
2016-07-13 21:16:46 4235 5
原创 netty学习(二)——Hello world!
在认识完基本概念后,我们开始进行我们自己的hello world 简单范例,以此来揭开netty的第一层面纱:1,maven 首先我们需要引入netty的jar包,依赖如下: io.netty netty 3.10.5.Final2,服务端 服务端的简单逻辑就是监听8000端口,注册消息处理方法,在获取到客户端链接的方法中打印 hello worldpackag
2016-07-13 21:07:28 2161 4
原创 netty学习(一)——概念简介
一,netty是啥? 首先要有一句话总结netty是什么的问题,这样我们就有中心思想,知道如何去使用它,“高性能NIO通信框架”,我觉得这是对netty的总结,他的实现很巧妙,但是还是为这个目的服务,有了他,我们就能做到心中有数!二,同类型产品 我们最熟悉的NIO产品,应该就是java自身的NIO框架,这个没有实践过,不过多阐述,netty是我接触到的第一个nio通信框
2016-07-13 20:55:56 2877 4
原创 linux 安装supervise服务
今天给大家介绍一款linux上非常实用的小工具,supervise,这款工具可以监控某服务运行状态,检测到某服务死掉后会自动执行某命令重启服务,现在我们一起学习一下1,扩展yum源 在某路径下执行以下命令 1.1,安装atomic源 # wget http://www.atomicorp.com/installers/atomic #下载
2016-06-30 19:07:46 12082 4
原创 flume高并发优化——(8)多文件source扩展断点续传
在很多情况下,我们为了不丢失数据,一般都会为数据收集端扩展断点续传,而随着公司日志系统的完善,我们在原有的基础上开发了断点续传的功能,以下是思路,大家共同讨论:核心流程图: 源码:/* * 作者:许恕 * 时间:2016年5月3日 * 功能:实现tail 某目录下的所有符合正则条件的文件 * Email:xvshu1@163.com * T
2016-06-22 18:21:43 9567 4
原创 使用ZKManager维护zookeeper数据
在项目上经常使用zookeeper作为注册端与管理端,而我们需要一款软件帮助我们维护zookeeper上的数据,在使用flume配置端zk化,之后,这种需求日益强烈,为此,我从网上找到一款不错的开源软件,推荐给大家 这是源码地址:http://code.taobao.org/p/zkweb/wiki/index/ 这是我修复部分bug版地址:http://pan.bai
2016-06-22 18:02:54 8853 3
原创 Linux 安装与使用H2数据库
很多人在windows平台上使用过H2数据库,但是安装到linux,还不知道怎么做,现在,跟着我一起在linux安装:1,下载jar包 下载h2-1.3.176.jar 这个包(部分服务版本不一致,请自行更换版本)2,启动服务 复制到linux服务器 /opt/h2/bin/ 下 在目录下启动 3,使用web工具
2016-06-22 17:35:34 13208 2
原创 flume高并发优化——(7)RandomAccessFile升级多文件source
本篇文章旨在解决tail文件io断裂问题,我们使用linux原生的tail ,启动多个线程,做到对多个文件的数据收集,但是,随着业务日志增多,日志以日期分割,是个常用的做法,但是这样,就使得我们的flume插件在日期交换的凌晨,出现io断裂,造成不能继续收集数据
2016-05-11 11:54:02 5474 2
转载 基于zookeeper的配置中心
转载自:https://github.com/knightliao/disconfDistributed Configuration Management Platform(分布式配置管理平台)专注于各种 分布式系统配置管理 的通用组件/通用平台, 提供统一的配置管理服务。包括 百度、滴滴出行、银联、网易、拉勾网、苏宁易购、顺丰科技 等知名互联网公司正在使用!「disconf」在「2015 年度新
2016-05-04 17:48:55 22168 3
原创 flume高并发优化——(6)开发多文件检索source插件
To detect all files in a folderstep: 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/
2016-05-03 18:20:01 8803 3
原创 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
2016-04-25 18:05:14 3430 3
原创 flume高并发优化——(4)kafka channel
在上篇博客中,我们还留了一个小疑问,就是我们对最后一个flume的优化是如何做的,关于这一点,我们的思路是这样的,file的瓶颈是io,而我们使用的硬盘是5400转1t硬盘,如果想要优化,我们必须找到性能和memory相当,但是又能较好的保存数据,保证事务性的channel,符合这样要求的一款channel进入了我们的视线,就是kafkachannel,具体怎么做的,请大家看详细介绍:优化之前的架
2016-04-25 17:40:04 13582 6
原创 flume高并发优化——(3)haproxy
在上篇博客中,我们虽然进行了较大的改动,但是,没有料到的是,flume的file性能瓶颈会如此快的到来,由于我们使用了一个filechannel作为负载均衡的通道,导致性能瓶颈很快到来,为了应对这样的瓶颈,我们对结构进行了第三次升级,替换了负载均衡的前端,换为性能更好的haproxy作为分发端,大家一起来看看是如何优化的。 还是老样子,大家看看上次优化过之后的结构: 我
2016-04-25 17:09:14 6896 6
原创 flume高并发优化——(2)精简结构
大家在上篇博客中,可以看到,对flume本身的优化,我们可以说是一个较大的进步,但是,后期梳理时,发现,数据的处理经过了很多没有必要的步骤,我们的处理有些多余,但是精简哪里,又成为了一个问题,本篇博客带领大家一起看看,精简的关键位置及效果。还是老样子,大家会议上篇博客的架构: 不难看出,有一个性能点就是从主端口下发的时候,三个端口到es的过程中,为了让数据有较好的缓冲,我们使用了ka
2016-04-25 16:51:27 8221 9
原创 flume高并发优化——(1)load_balance
通过一年多时间的使用,统一日志系统,已经接入公司前台,在20个节点,几十万用户,数百亿交易额的大压力下,仅仅使用了一个普通的服务器,承受住了严峻的考验,在公司今年更宏大的目标,也是为了给大数据组提供更加全面信息的需求下,公司所有项目,要接入ULOG系统,主要包含管理后台,wap,app等,流量一下达到一个峰值,flume的瓶颈凸显出来,在解决的过程中,对flume的了解以及性能调优,有了更深入的认
2016-04-25 16:33:22 13875 9
转载 通过 spring 容器内建的 profile 功能实现开发环境、测试环境、生产环境配置自动切换
软件开发的一般流程为工程师开发 -> 测试 -> 上线,因此就涉及到三个不同的环境,开发环境、测试环境以及生产环境,通常这三个环境会有很多配置参数不同,例如数据源、文件路径、url等,如果每次上线一个新版本时都手动修改配置会十分繁琐,容易出错。spring 为我们提供了 profile 机制来解决这个问题。spring允许我们通过定义 profile 来将若干不同的 bean 定义组织起来,从而实
2016-04-12 15:22:21 18773 5
原创 权限管理框架实现(3)--jquery自定义标签
上篇文章,介绍了,使用ValueStack对权限进行控制,但是还是需要前台工作者去写,其实,我们利用jquery,就可以做到对html标签的控制,基本思路如下:1,获取所有特殊标签集合2,ajax后台申请权限3,判断返回值,没有权限则消除标签具体js代码如下1,获取集合 var authObjs = $("auth[TestAuth='true']");2,ajax申请后台 $.ajax({
2016-04-12 15:07:33 5778 2
原创 权限管理框架实现(2)--Struts中ValueStack使用
众所周知,struts中,数据交互是走的ValueStack,在权限交互中,我们有些数据,存储到ValueStack中,更容易被用户利用,用户可以在jsp或者其他框架下,利用已有的数据,让前台不需要关心权限数据是如何存储的,只需要关心我们某一个权限标示是否被通过了,这是如何实现的呢?大家看源码。1,生命周期 在struts-default.xml文件中决定了在web容器启动时将会创建
2016-04-12 14:48:00 3222 1
原创 权限管理框架实现(1)--Struts切面处理
要做一款权限架构,就要适用几个流行的相关框加,struts2是我们公司首先需要考虑的,考虑到侵入性,决定通过切面的方式,在每个Action前进行权限验证,基本思路是: 1,自定义通用权限注解 2,开发抽象切面,预留传入uid的接口 3,配置struts切面,做权限拦截以下源码是对上边功能的实现:1,权限注解/** * 自定义权限注解 */@Targe
2016-04-12 14:16:29 3544 2
原创 这个bug很简单-log4j:ERROR Attempted to append to closed appender named
最近调试log4j的时候,一直遇到这个错误:log4j:ERROR Attempted to append to closed appender named一直未找到原因,看了几篇博客后知道,是有配置重合了,大家看:这是以前的配置文件:这样就会导致,log4j会清楚所有的appender,删除后,问题就排出了,这个bug督促我们,要努力看源码啊!
2016-03-31 17:54:45 10873 2
原创 RabbitMQ监控(5)——OpenCharts展示
有了前几篇博客的基础,我们可以从容应对监控的实现,但是还有一个问题,我们没有解决,就是图形化展示监控结果,在网页上画图,我们的确有很多种方案,以前我们使用过highcharts,但是学习还好,在公司使用不是很合适,我们需要一款,简单,易上手,的绘图插件,这里带领大家一起熟悉一款这样的软件,opencharts。
2016-03-23 14:17:23 2510 4
原创 RabbitMQ监控(4)——URL监控
在监控的过程中,我们除了监控一些服务性能情况,还有一些服务的存活也需要监控,这时候,我们就可以用到java自带的url操作类,完成,整体思路是通过一个请求的状态码判断某请求,是否存在,达到监控的目的,为了更可靠,我们重复请求五次,都失败再警告,现在我们一起来实现它。
2016-03-23 14:00:43 3498 3
原创 RabbitMQ监控(3)——核心监控类实现
在监控时,我们的思路大概是这样的,使用rabbitmq的java客户端开发检测端口,发现不符合要求的性能参数,予以警告,给负责人发送短信或邮件,并提供前台可视化的监控界面,大家先看整体设计:
2016-03-23 13:45:19 3988 2
原创 RabbitMQ监控(2)——RabbitMQ-javaclient使用
本文旨在为大家打开java关于rabbitmq操作的窗户,简单应用,帮助理解官方文档,详细内容,还是要参考官方文档,这里是官方文档的中文过渡区
2016-03-23 13:20:00 6455 3
原创 RabbitMQ监控(1)——RabbitMQ简介
最近公司想要开发一套针对RabbitMQ的监控系统,和短信及邮件接口整合,对性能做到实时的监控,表示这个真的很及时,这样我们就能“24小时不离岗”只要手机开着,就对网站性能有较好的把控,下面将分几部介绍如何实现。
2016-03-23 12:54:57 4676 2
原创 提升用户体验之A/B测试(5)——linux安装python(pip)插件
此片博客作为工具片存在,帮助大家在安装sixpack时,升级python到2.7后安装pip工具,方便安装sixpack
2016-03-02 13:42:06 1723 3
原创 提升用户体验之A/B测试(3)——sixpack-js客户端
在上篇博客中,我们介绍了sixpack的安装,在安装好后,我们再接再厉,试试一个官网提供的小例子,结合例子,大家再体会下第一篇博客中介绍的A/B测试流程:
2016-03-02 13:24:16 1649 1
原创 提升用户体验之A/B测试(2)——Sixpack安装
上篇博客给大家介绍了A/B测试的相关流程,是不是已经摩拳擦掌了,别着急,跟着我,咱们马上进入,sixpck的世界,而且不要担心,更文太慢,这次一次发表5篇博客,力求最大可能帮助大家认识和熟悉sixpack,帮助大家提升自己的眼界与掌握一个流行的中间件。
2016-03-02 13:23:52 2094 1
原创 提升用户体验之A/B测试(4)——linux升级python到2.7
此片博客作为工具片存在,帮助大家在安装sixpack时,升级python到2.7一般linux系统都会预装python,但是一般版本较低,我的测试服务器版本为2.4.4,要升级到2.7.3,大家仅作参考,服务器为redhat版本。
2016-03-02 13:23:09 1260 2
原创 提升用户体验之A/B测试(1)——简介sixpack
在项目过程中,我们有很多时候,觉得用户改怎么样?或者用户能怎么样,但是在《粘住》这本书中,提出一个概念,”我们以为用户和我们一样“,就是,专业人员,比如it从业者,在设计自己的程序时,或多或少都以为,用户应该懂这个啊,用户应该知道单击哪个按钮,用户应该知道这是多选的,等等这些问题,实际上,大部分的用户是不知道的,这时候,我们不防先用A/B测试工具实验一把,将用户真实的反应统计下来,这样我们就能一步步离用户近了!
2016-03-02 12:36:48 3677 4
转载 如何处理PB级别数据(2)——Apache Solr 之 使用SolrJ操作索引库
Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互。最基本的功能就是管理Solr索引,包括添加、更新、删除和查询等。对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能。如果你的应用比较复杂,可以扩展Solrj来满足需要。 使用
2016-02-26 14:59:56 1605 3
转载 如何处理PB级别数据(1)——Elasticsearch与Solr 选型
搜索引擎选择: Elasticsearch与Solr搜索引擎选型调研文档Elasticsearch简介*Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行组合。Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™
2016-02-26 14:58:16 5203 2
原创 项目修炼之路(7)iftop查看耗费流量的进程
我们知道在linux中,top命令可以查看服务器中资源的一些情况,cpu,内存等,还可以看到是谁在消耗内存或cpu,但是,有些时候,我们发现,cpu和内存并不吃紧,但是服务器依然很慢,这时候,我们需要多一个维度来帮助我们分析问题,就是流量的统计,今天给大家介绍一个工具iftop,希望帮助大家解决这个问题。
2016-02-22 17:05:27 14299 4
原创 项目修炼之路(6)Redis批量删除某数据库下的key
我们做测试时,一直想模拟线上第一次运行的环境,所以会涉及对某个索引下的某类key值进行删除的操作,下面给大家介绍下具体操作步骤:
2016-02-19 11:09:34 5620 3
原创 项目修炼之路(5)高并发下优化Redis缓存效率
最近,公司给了个优化任务,某个耗时的操作,在百亿的交易额下,处理异常缓慢,需要优化,以为每日发息做准备,在这里给大家介绍下我的优化思路,共同探讨下:
2016-02-17 17:31:11 13355 3
原创 项目修炼之路(4)aop+注解的自动缓存
在项目中,使用缓存的方式有很多种,一般我们会封装出一个工具类以供使用,但是这样对代码的侵入性还是太强,在这里给大家介绍一种,使用自定义注解自动缓存内容,降低缓存与逻辑代码的耦合性,也省去了大家封装的时间,注意:key生成策略为(标识字符+首个参数值)
2016-02-17 16:33:56 3104 3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人