HBase跨地区机房的压测小程序——从开发到打包部署(图文版)

今天做了一个跨地区机房的压测小程序,主要的思路就是基于事先准备好的rowkey文件,利用多线程模拟并发的rowkey查询,可以实现并发数的自由控制。主要是整个流程下来,遇到了点打包的坑,所以特意记录下。

编写代码

rowkey文件的准备就不说了。首先是HbaseClient的查询接口,由于创建连接的代价很重,因此这里采用HBase的ConnectionFactory工厂:

static {
    try {
        Configuration conf = HBaseConfiguration.create();
        conf.set("hbase.zookeeper.property.clientPort", "2181");
        conf.set("hbase.zookeeper.quorum", "此处不可描述");
        connection = ConnectionFactory.createConnection(conf);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

private static Table getTable(String table) throws IOException {
    return connection.getTable(TableName.valueOf(table));
}

查询的时候直接使用get Api即可:

try (Table tab = getTable(table)) {
    Get get = new Get(Bytes.toBytes(key));
    Cell cell = tab.get(get).getColumnLatestCell(COLUMN_FAMILY, Bytes.toBytes(field));
    column = Bytes.toString(CellUtil.cloneValue(cell));
} catch (Exception e) {
    logger.error("查询请求出错:" + e.getMessage());
}

为了模拟并发,我这边直接使用了Fixed线程池,并且基于java8的lambda表达式创建线程池:

ExecutorService fixedThreadPool = Executors.newFixedThreadPool(100);
for(String line : lines){
    fixedThreadPool.execute(() -> {
         Long start = System.currentTimeMillis();
         // ... todo ... 我这里只想统计一下平均的访问时间,所以就简单的做减法就行了
         Long end = System.currentTimeMillis();
         System.out.println(end-start);
     });
}

基于Idea打包

整体的项目结构大致如下:

点击project structure


点击add-->jar-->from models with dependencies...

选择对应的资源文件加入到打包路径中

点击build-->build artifacts-->build进行打包

观察文件MANIFEST.MF可以看到里面包含的内容:

Manifest-Version: 1.0
Class-Path: commons-beanutils-core-1.8.0.jar netty-all-4.0.23.Final.ja
 r hadoop-auth-2.5.1.jar snappy-java-1.0.4.1.jar protobuf-java-2.5.0.j
 ar jcodings-1.0.8.jar hadoop-yarn-common-2.5.1.jar httpclient-4.2.5.j
 ar commons-math3-3.1.1.jar commons-lang-2.6.jar findbugs-annotations-
 1.3.9-1.jar jaxb-api-2.2.2.jar slf4j-api-1.6.1.jar commons-el-1.0.jar
  commons-beanutils-1.7.0.jar commons-collections-3.2.2.jar commons-ht
 tpclient-3.1.jar commons-io-2.4.jar avro-1.7.4.jar hamcrest-core-1.3.
 jar hbase-client-1.3.1.jar slf4j-log4j12-1.6.1.jar commons-logging-1.
 2.jar hadoop-yarn-api-2.5.1.jar hbase-protocol-1.3.1.jar netty-3.6.2.
 Final.jar commons-configuration-1.6.jar hadoop-annotations-2.5.1.jar
 jackson-core-asl-1.9.13.jar paranamer-2.3.jar junit-4.12.jar metrics-
 core-2.2.0.jar jsr305-1.3.9.jar stax-api-1.0-2.jar hadoop-common-2.5.
 1.jar commons-compress-1.4.1.jar apacheds-i18n-2.0.0-M15.jar api-asn1
 -api-1.0.0-M20.jar jackson-mapper-asl-1.9.13.jar commons-codec-1.9.ja
 r xz-1.0.jar htrace-core-3.1.0-incubating.jar activation-1.1.jar hado
 op-mapreduce-client-core-2.5.1.jar commons-net-3.1.jar commons-digest
 er-1.8.jar hbase-annotations-1.3.1.jar jsch-0.1.42.jar commons-cli-1.
 2.jar xmlenc-0.52.jar httpcore-4.2.4.jar joni-2.1.2.jar api-util-1.0.
 0-M20.jar apacheds-kerberos-codec-2.0.0-M15.jar log4j-1.2.17.jar jett
 y-util-6.1.26.jar guava-12.0.1.jar zookeeper-3.4.6.jar hbase-common-1
 .3.1.jar
Main-Class: Test

我们需要的文件就都保存在/project_home/out目录下了,

传输到远程服务器

首先进入对应的out目录,执行下面的命令:

tar -cvf hbase_test.tar hbase_test_jar

使用scp命令拷贝到远程服务器:

scp hbase_test.tar [email protected]:/home/xingoo/

登录到远程服务器,解压:

tar -xvf hbase_test.tar

进入对应的目录直接执行jar包:

java -jar hbase-test.jar

结果200ms还可以接受吧...

时间: 2024-10-08 17:24:23

HBase跨地区机房的压测小程序——从开发到打包部署(图文版)的相关文章

微信小程序云开发-从0打造云音乐全栈小程序

第1章 首门小程序“云开发”课程,你值得学习本章主要介绍什么是小程序云开发以及学习云开发的重要性,并介绍项目的整体架构,真机演示项目功能,详细介绍整体课程安排.课程适用人群以及需要掌握的前置知识.通过本章的学习,能够使大家对本门课程有一个整体的了解.... 第2章 云开发介绍以及从0构建项目本章会详细介绍小程序云开发与Serverless,并介绍如何开通小程序云开发及控制台的功能,并且初始化项目代码,讲解airbnb/javascript代码规范. 第3章 播放列表功能实现本章完成歌单列表与歌曲

小程序定制开发一般需要多少钱 (专业技术人员解读)

随着时代的发展越来越多的企业和个人都把小程序的开发作为首要目标,这也足以证 明小程序的优势是非常大的.一般常见的电商小程序.餐饮小程序.旅游小程序企业 展示小程序等,每种小程序都有它特定的功能.比如电商小程序需要点单.优惠活动 .预约.支付等等功能,那么你选择的小程序里是否有这些功能?所以在开发小程序 之前你必须想好需要哪些功能. 1.电商类小程序 不用多说,就是将商品图片价格上传到小程序上面,通过展示销售形成订单,获取收益.其中有卖母婴类产品的.零食类的.服装类的等等. 2.预定类小程序 比如

金华网络公司微信应用号小程序制作开发

微信应用号小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想(让手机不需要更多的内存用于安装一堆无用的app客户端),用户扫一扫或者搜一下即可打开应用.也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题. 应用将无处不在,随时可用,但又无需安装卸载. 基本介绍 微信将应用号“小程序”定义为“一种新的应用形态”(这是让我们可以连接所有我们工作.生活.娱乐所有需要的一种简单的形态).微信方面强调,小程序(应用号).订阅号.服务号.企业号目前是并行的体系. 微信应用号

无需内测账号,带你体验微信小程序完整开发

文章来源:www.zretc.com/technologyDetail/200.html 前一阵子的微信小程序火爆了网络与朋友圈,迅速成为讨论焦点,大家可能觉得只有收到内测邀请才能体验小程序的开发流程,其实不然,每个人都可以体验,下面就请跟着小卓一起去了解下吧. 一.下载微信Web开发工具 首先,微信给我们提供了它自己的小程序集成开发工具,只需要到这个页面下载即可:https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t

微信应用号(小程序)开发教程一

开发者网址导航:http://www.dev666.com/ 序言 开始开发应用号之前,先看看官方公布的「小程序」教程吧!(以下内容来自微信官方公布的「小程序」开发指南) 本文档将带你一步步创建完成一个微信小程序,并可以在手机上体验该小程序的实际效果.这个小程序的首页将会显示欢迎语以及当前用户的微信头像,点击头像,可以在新开的页面中查看当前小程序的启动日志. 1. 获取微信小程序的 AppID 首先,我们需要拥有一个帐号,如果你能看到该文档,我们应当已经邀请并为你创建好一个帐号.注意不可直接使用

微信公众号开发三级分销微商城,微信小程序定制开发

10年的技术开发团队,提供网站建设,APP开发,网站推广等服务,专业微信小程序定制开发,需要这方面的朋友,可以咨询一下. 案例演示: 成功案例: 联系方式:8582-36016 ,微信号:luenmicro ,电话:131-1221-5717

【小程序源码案例】微信小程序项目开发案例分享

作者:web小二本文标签: 微信小程序 小程序源码案例 小程序项目小程序的开发,并不是适合所有公司,我今天跟大家分享小程序方面的教程,主要是供大家学习使用.学习这种东西,有时候则是单纯的喜欢,没有任何目的,很单纯的为了好玩,记得很早之前学flash,没有想法,就是觉得好玩,纯娱乐爱好而已.到后来玩视频剪辑也是出于同样的原因,不图钱财名利,只是图自己个人爱好娱乐. 但是,学习,有时候则是需要有明确目的,特别是关系到自己吃饭问题的时候,你就需要非常有目的去学习,并且还需要制定好学习的计划与目标,希望

Mac上微信小程序官方开发工具卡死的问题

Mac上微信小程序官方开发工具打开后卡死,无法操作,也关不掉,解决方案: 三步: 1.在应用中删除"微信web开发者工具" 2.删除一下几个配置和缓存文件: 1.-/Library/Application Support/微信web开发者工具 2.~/Library/Preferences/com.tencent.wechat.devtools.plist 3.~/Library/Caches/微信web开发者工具 3.重新安装"微信web开发者工具"

小程序商城开发小程序系统代码编程分析

小程序商城开发小程序系统代码编程分析:151.1222.4001(微/电)微信小程序开发,小程序商城开发,小程序模式开发,小程序源码开发,小程序软件开发,小程序应用开发,小程序微商城搭建,小程序分销返利系统开发,小程序购物商城开发. 微信小程序1月9日发布以来,其实就是一个基于微信运行一个程序,腾讯未来就会把微信作为一个移动端OS,在微信基础上运营一个企业的小程序,这样方便用户使用程序,不需要下载和安装,这样方便了用户使用,从而我个人认为会对一些功能比较小的APP造成很大的冲击,但是对功能相对比