- 博客(37)
- 资源 (57)
- 收藏
- 关注
转载 activemq中持久订阅者和非持久订阅者区别
1、消息的传输类型:上文已经讲过,activemq支持两只传输的模式:持久化和非持久化。可以通过MessageProducer 类的 setDeliveryMode方法设置传输模式:MessageProducer producer = ...;producer.setDeliveryMode(DeliveryMode.PERSISTENT);持久传输和非持久传输最大的区别是:采用持久
2017-12-29 19:53:18 5595 1
转载 mysql之 double write 浅析
介绍double write之前我们有必要了解partial page write 问题 : InnoDB 的Page Size一般是16KB,其数据校验也是针对这16KB来计算的,将数据写入到磁盘是以Page为单位进行操作的。而计算机硬件和操作系统,在极端情况下(比如断电)往往并不能保证这一操作的原子性,16K的数据,写入4K 时,发生了系统断电/os crash ,只有一部分写是成
2017-12-29 19:13:33 894
原创 ActiveMQ Message Persistence
1、JMS规范支持两种类型的消息传递:persistent and non-persistent。ActiveMQ支持这两种类型的传递方式;persistent 好处: 1)消息对消费者总是可用; 2)系统宕机后,消息不被丢失。2、ActiveMQ可将消息存储在三种类型介质中:file-based(存储在文件中)、in-memory(存储在内存中)、relational databas
2017-12-29 19:09:08 1384
原创 JMS基本概念
1、面向消息的中间件:Message-oriented middleware (MOM)——面向消息的中间件主要就是为了降低各个应用程序之间的耦合,引入MOM好处有:1)可以做到 不必要求发送者和接收者同时“在线”(actived)才能进行消息通信。发送者只管把消息发给MOM,然后可以“离开”,接收者可以在随后任何时间去取(取决于何种通信模式)即,发送者不需要知道接收者的存在,且可进行
2017-12-29 16:47:59 473
转载 JMS学习(八)-ActiveMQ Consumer 使用 push 还是 pull 获取消息
ActiveMQ是一个消息中间件,对于消费者而言有两种方式从消息中间件获取消息:①Push方式:由消息中间件主动地将消息推送给消费者;②Pull方式:由消费者主动向消息中间件拉取消息。看一段官网对Push方式的解释:采用Push方式,可以尽可能快地将消息发送给消费者(stream messages to consumers as fast as possible)而
2017-12-29 14:30:58 1220
转载 Maven生成可以直接运行的jar包的多种方式
Maven可以使用mvn package指令对项目进行打包生成jar文件,如果直接使用java -jar xxx.jar指令运行jar文件,会出现”no main manifest attribute, in xxx.jar”(没有设置Main-Class)、ClassNotFoundException(找不到依赖包)等错误。要想jar包能直接通过java -jar xxx.jar运行,需要满足:
2017-12-27 09:43:37 668
转载 Hive读取Flume正在写入的HDFS
Hive的表创建为外部分区表,例如: USE mydb;CREATE EXTERNAL TABLE mytable( c1 String, c2 INT, c3 INT, create_time String)PARTITIONED BY (dt STRING)ROW FORMAT DELIMITED FIELDS TERMINATED
2017-12-25 17:30:24 1898
原创 java对象池commons-pool-1.6详解(三)
前面讲述了不带key的对象池,本文重点介绍另一种对象池——带key的,这种对象池在实际应用中更加广泛。例如:我们在rpc的系统中,需要对rpc对象进行池化提升其效率,但在实际环境中我们通常考虑ha,会对一个rpc服务在不同服务器上部署多个,这种情况下如果使用普通的对象池就会把所有服务器上部署的rcp服务对象放到一个池子中,不利于负载均衡,使用带有key的对象池可以很好做到负载均衡和池化对象。一
2017-12-24 13:08:29 1669
原创 java对象池commons-pool-1.6详解(二)
上篇文章 我们详细介绍了commons-pool-1.6 java对象池的原理和基本概念,本文详细介绍不带key的对象池(ObjectPool)具体使用。1、重点接口介绍:在Apache-commons-pool-1.6中,定义了三个顶级接口:ObjectPool、ObjectPoolFactory、PoolableObjectFactory;其中ObjectPool和ObjectPo
2017-12-23 19:29:58 1311
原创 java对象池commons-pool-1.6详解(一)
对象的创建和销毁在一定程度上会消耗系统的资源,虽然jvm的性能在近几年已经得到了很大的提高,对于多数对象来说,没有必要利用对象池技术来进行对象的创建和管理。但是对于有些对象来说,其创建的代价还是比较昂贵的,比如线程、tcp连接、rpc连接、数据库连接等对象,因此对象池技术还是有其存在的意义。Apache-commons-pool-1.6提供的对象池主要有两种:一种是带Key的对象池,这种带
2017-12-23 17:14:39 21688 2
原创 命令模式
1、基本概念: 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的松耦合。这就是命令模式(Command Pattern)。 将来自客户端的请求传入一个对象
2017-12-23 16:45:11 334
转载 Retry重试机制
1、业务场景 应用中需要实现一个功能: 需要将数据上传到远程存储服务,同时在返回处理成功情况下做其他操作。这个功能不复杂,分为两个步骤:第一步调用远程的Rest服务逻辑包装给处理方法返回处理结果;第二步拿到第一步结果或者捕捉异常,如果出现错误或异常实现重试上传逻辑,否则继续逻辑操作。2、常规解决方案演化1)try-catch-redo简单重试模式:包装正常上传逻辑基
2017-12-21 19:19:04 3232
转载 几种简单的负载均衡算法及其Java代码实现
什么是负载均衡负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题
2017-12-21 19:13:30 374
转载 Spring-retry 1.1.4重试功能
在实际项目中,经常需要在某种情况下对调用的方法进行重试,例如超时重试。通过Spring-retry能简化重试功能的实现,并实现更多样的重试操作。Spring-retry提供的RetryOperations接口,定义如下:public interface RetryOperations { T execute(RetryCallback retryCallback) throw
2017-12-21 16:00:39 1196
原创 thrift服务化改造原理分析
上面文章(http://blog.csdn.net/liuxiao723846/article/details/78846007)介绍了一个thrift的服务框架,本文介绍如何使用,以及背后的一些原理。将上文中的项目打包成jar,引入到一个工程中,然后通过spring的配置方式模拟一个服务端和客户端。一、thrift model:用来定义thrift的消息和服务,然后通过maven命令
2017-12-19 19:57:42 563
转载 thrift服务化改造——注册、发现
系统服务化过程中会面临很多问题:服务注册、服务发现、服务降级、故障转移、负载均衡、流量控制等。本文介绍一种以thrift、zookeeper等技术实现的一套服务化框架,主要包含一下几点:1)利用zookeeper,实现服务端注册、客户端自动发现;(由于原生zookeeper的api比较负责,这里用了一个zk的框架curator)2)客户端对远程server的连接进行池化技术(使用java的
2017-12-19 18:58:01 5459
原创 分布式系统架构演进
技术为业务而生,随着业务不断的壮大,系统会遇到各种各样的瓶颈,为了解决这些瓶颈问题,催生了不同的架构。下面,我讲解一下一般大型分布式系统的架构演进。上图是阿里技术演进图,绝大多数系统基本上会按照这个流程发展。1、单体应用(all in one):以Java来说,可能只是一两个war包就解决了;这时的用户量、数据量规模都比较小,这样的架构既简单实用、便于维护,成本又低,成为了这个
2017-12-19 18:32:21 481
转载 使用FactoryBean自定义实例化逻辑
Spring中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean,即FactoryBean,这两种Bean都被容器管理,但工厂Bean跟普通Bean不同,其返回的对象不是指定类的一个实例,其返回的是该FactoryBean的getObject方法所返回的对象。在Spring框架内部,有很多地方有FactoryBean的实现类,它们在很多应用如(Spring的AOP、ORM、事务管理)及
2017-12-18 17:43:58 1079
原创 spring依赖注入引发的一点思考
java中bean 分为普通的java bean和spring的bean两种。1)通过spring的配置文件或者注解,在进程启动时由spring对其初始化、并最终最终放到spring容器中,这就是spring的bean,否则就是java bean。2)如果是spring的bean,那么在代码中直接getbean("beanname")使用即可;如果是普通的java bean 使用时直接
2017-12-18 15:11:17 383
转载 HDFS NameNode内存全景
一、概述从整个HDFS系统架构上看,NameNode是其中最重要、最复杂也是最容易出现问题的地方,而且一旦NameNode出现故障,整个Hadoop集群就将处于不可服务的状态,同时随着数据规模和集群规模地持续增长,很多小量级时被隐藏的问题逐渐暴露出来。所以,从更高层次掌握NameNode的内部结构和运行机制尤其重要。除特别说明外,本文基于社区版本Hadoop-2.4.1[1][2],虽然2
2017-12-13 17:15:59 321
转载 HDFS NameNode内存详解
前言《HDFS NameNode内存全景》中,我们从NameNode内部数据结构的视角,对它的内存全景及几个关键数据结构进行了简单解读,并结合实际场景介绍了NameNode可能遇到的问题,还有业界进行横向扩展方面的多种可借鉴解决方案。事实上,对NameNode实施横向扩展前,会面临常驻内存随数据规模持续增长的情况,为此需要经历不断调整NameNode内存的堆空间大小的过程,期间会遇
2017-12-13 17:06:21 851
转载 HDFS NameNode重启优化
一、背景在Hadoop集群整个生命周期里,由于调整参数、Patch、升级等多种场景需要频繁操作NameNode重启,不论采用何种架构,重启期间集群整体存在可用性和可靠性的风险,所以优化NameNode重启非常关键。本文基于Hadoop-2.x和HA with QJM社区架构和系统设计(如图1所示),通过梳理NameNode重启流程,并在此基础上,阐述对NameNode重启优化实
2017-12-13 09:54:48 655
转载 Hadoop 2.0 NameNode HA和Federation实践
一、为什么需要HA和Federation:1. 单点故障在Hadoop 2.0之前,也有若干技术试图解决单点故障的问题,我们在这里做个简短的总结:Secondary NameNode。它不是HA,它只是阶段性的合并edits和fsimage,以缩短集群启动的时间。当NameNode(以下简称NN)失效的时候,Secondary NN并无法立刻提供服务,Secondary
2017-12-12 18:57:32 463
转载 HDFS Federation设计动机与基本原理
HDFS Federation是Hadoop最新发布版本Hadoop-0.23.0中为解决HDFS单点故障而提出的namenode水平扩展方案。该方案允许HDFS创建多个namespace以提高集群的扩展性和隔离性。本篇文章主要介绍了HDFS Federation的设计动机和基本原理。(个人认为federation不是解决ha的,只是用来解决nn水平扩展的)1. 当前HDFS概况1.1 当前...
2017-12-12 18:25:20 614
转载 Hadoop NameNode 高可用 (High Availability) 实现解析
在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode 的单点问题尤为严重。因为 NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问,同时 Hadoop 生态系统中依赖于 HDFS 的各个组件,包括 MapReduce、Hive、Pi
2017-12-11 18:33:01 365
原创 yean体系架构介绍
YARN是Hadoop 2.0的资源管理器。它是一个通用的资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。1、从Hadoop0.23版本开始对于mapduce计算框架进行升级,引入了YARN。老的版本MRv1存在诸多问题,和YARN对比如下:1) MRv1中Jobtracker中存在单点问题,功能比较多的问题,负责资源
2017-12-11 15:26:21 824
转载 Hive分区修复命令MSCK介绍与使用
我们在使用Hive的时候肯定遇到过建立了一张分区表,然后手动(比如使用 cp 或者 mv )将分区数据拷贝到刚刚新建的表作为数据初始化的手段;但是对于分区表我们需要在hive里面手动将刚刚初始化的数据分区加入到hive里面,这样才能供我们查询使用,我们一般会想到使用 alter table add partition 命令手动添加分区,但是如果初始化的分区太多,这样一条一条地手动添加分区不免过于麻
2017-12-07 11:38:52 2778
转载 hive报错:Execution failed with exit status: 3
在hive上执行了一个join的sql,运行时报如下错误:2016-07-06 05:35:32 Processing rows: 1400000 Hashtable size: 1399999 Memory usage: 203699304 percentage: 0.3962016-07-06 05:35:32 Processing
2017-12-07 11:33:07 1417
转载 hive mapjoin 使用 和个人理解
1、遇到一个hive的问题,如下hive sql:select t1.a,t1.b from table t1 join table2 t2 on ( t1.a=t2.a and t1.datecol=20110802)该语句中B表有30亿行记录,t1表只有100行记录,而且t2表中数据倾斜特别严重,有一个key上有15亿行记录,在运行过程中特别的慢,而且在reduece的过程中遇有内存
2017-12-07 11:12:43 7741
原创 elasticsearch-java api之搜索(三)
前两篇文章介绍了es的简单查询、聚合查询;本文再重点介绍一下es的复杂查询,包括:排序、limit、复合查询等。1、排序:1)代码public static void sortQuery(String indexName, String indexType) { QueryBuilder qb = QueryBuilders.termQuery("team", "war");
2017-12-06 10:35:26 3319
原创 elasticsearch-java api之搜索(二)——聚合
前面一篇文章描述了es一些基本搜索的用法(match、term、fruzzy、matchPhraseQuery等),这篇文章我们着重讲解一下聚合查询的用法。假设es中有如下数据1、group by /count:select team,count(*) from table group by team;1)代码:public static void aggre1Quer
2017-12-06 09:50:29 1862
原创 elasticsearch-java api之过滤
一、过滤相关点:1、查询与过滤:Elasticsearch 使用的查询语言(DSL) 拥有一套查询组件,这些组件可以以无限组合的方式进行搭配。这套组件可以在以下两种情况下使用:过滤情况(filtering context)和查询情况(query context)。当使用于 过滤情况 时,查询被设置成一个“不评分”或者“过滤”查询。即,这个查询只是简单的问一个问题:“这篇文档是否匹配
2017-12-05 11:03:05 11144
原创 elasticsearch-java api之搜索(一)
1、全文搜索两个最重要的方面是:1)相关性(Relevance)它是评价查询与其结果间的相关程度,并根据这种相关程度对结果排名的一种能力,这种计算方式可以是 TF/IDF 方法(参见 相关性的介绍)、地理位置邻近、模糊相似,或其他的某些算法。2)分析(Analysis)它是将文本块转换为有区别的、规范化的 token 的一个过程,(参见 分析的介绍) 目的是为了(a)创建倒排索引以
2017-12-04 17:07:51 4274
原创 elasticsearch-java api之文档(document)各种操作
使用java api和es交互时,可以是json字符串、map对象;es中内置Jackson json序列化机制,可以将自定义对象转成string或者byte,然后传给es-java api使用。1、添加document:public static boolean add(String indexName,String indexType,Map data){ IndexRespo
2017-12-04 14:36:06 7541 1
原创 elasticsearch-java api之索引(index)的各种操作
1、创建索引:1)简单索引——没有指定mappingpublic static boolean createIndex(String indexName) { IndicesAdminClient indicesAdminClient = transportClient.admin() .indices(); CreateIndexResponse response = i
2017-12-04 10:23:10 16489 5
原创 flume之Channel
Channels 是一个 Agent上存储 events 的仓库,Source 向其中添加 events,而 Sink从中取走移除 events。本文重点介绍memory channel和file channel。1、memory channel:Source 添加的 events 都暂存在内存队列中,它非常适合那些需要更高吞吐量的数据流,但代价是一旦一个 agent 失败后,其中存储的e
2017-12-01 14:46:24 2681
原创 flume1.6自定义elasticsearch2.3的sink插件
目前官方Flume最新的版本仍然不支持Elasticsearch2.x版本,flume的老版本(1.6)只支持Elasticsearch1.7.x的版本,因为Elasticsearch2.x版本做了比较大的改动,很多API都已经废弃不用了。在github上找了一个项目:https://github.com/lucidfrontier45/ElasticsearchSink2 也是按照flum
2017-12-01 10:20:40 1799
macOS eclipse Launcher
2023-12-18
parquet-tools-1.6.0rc3.zip
2020-07-24
jQuery-Plugin-For-Easily-Readable-JSON-Data-Viewer.zip
2019-12-31
yesmeck-jquery-jsonview-v1.2.3-14-g01b1eb8.zip
2019-12-30
linux解析json工具——jq
2017-09-16
jquery 全屏显示插件
2015-03-20
apache-maven-3.2.3-bin
2014-10-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人