小记一次海量数据实时查询域名库设计(下)
二. WHOIS库设计
根据WHOIS数据查询业务场景、响应性能等需求,该库采用Hbase + ES 技术组合设计,其中HBASE存储全量WHOIS数据,ES库作为查询索引库,只存储查询WHOIS数据时的索引项数据。当提交一条查询请求时,首先从ES库中利用索引检索出记录的唯一键【_id】,再使用该唯一键从Hbase中查询出全量数据。
HBASE库配置:同PDNS库设计中HBASE配置。
ES库配置:7服务器集群【与HBASE共用硬件服务器】,JDK版本1.8,单节点JVM堆内存固定为12G。
2.1 WHOIS数据业务字典及样例数据
2.1.1 业务字典
WHOIS业务字典见《whois数据说明.pdf》文档。
WHOIS原始数据为.CSV格式,第三方数据样例文件见whoisdemo.csv文件
2.1.2 数据规模
WHOIS第三方数据以CSV文本文件格式存储,经粗略统计,全量数据大小约180G,索引数据大小约80G,包含WHOIS记录约3亿4千万。
2.2 WHOIS查询需求说明
WHOIS数据查询需求简单描述为,根据约定的可查询业务字段项进行查询,查询时可根据多条件项进行逻辑匹配,需要支持等值匹配、模糊查询。无聚合查询、分组查询等复杂查询需求。
2.2.1 根据约定业务字段查询
查询输入:
查询输出:全量WHOIS记录,具体字段见《whois数据说明.pdf》
若查询项不能满足需求,后续可从全量数据中增加。
2.3 WHOIS表设计
2.3.1 whois_data_index索引表设计
ES中的索引数据表名为: whois_data_index。
id的格式为 : {domain}{reg_data}_{expir_data}
{domain}表示域名;
{reg_data}表示注册时间,格式为13位时间戳;
{expir_data}表示过期时间,格式为13位时间戳,且该字段不存在与ES查询字段中,该字段为WHOIS全量数据中的记录,需要在导入ES库时,写入_id。
number_of_shards:21
Replicas:0
建表脚本为:
PUT whois_data_index
{"settings":{"number_of_shards":21,"number_of_replicas":0},"mappings": {"doc": {"dynamic": "strict","properties": {"domain": {"type": "text"},"domain_status": {"type": "text"},"registrar": {"type": "text"},"reg_email": {"index": true,"type": "keyword"},"registrar_whois_server": {"type": "text"},"name_server": {"type": "text"},"reg_data": {"index": true,"type": "keyword"},"registrar_abuse_contact_email": {"index": true,"type": "keyword"},"reg_name": {"index": true,"type": "keyword"},"registrant_organization": {"index": true,"type": "keyword"},"registrant_city": {"index": true,"type": "keyword"},"registrant_state_province": {"index": true,"type": "keyword"},"reg_country": {"index": true,"type": "keyword"},"registrar_IANA_id": {"index": true,"type": "keyword"} }}}}
2.3.2 whois表设计
WHOIS原始数据表保存在HBASE中,建表脚本如下:
create ‘whois’,{NAME =>‘meta’,COMPRESSION => ‘SNAPPY’}
其中,列簇为 meta;具体列见《whois数据说明.pdf》
经数据导入后,列名对应的列会自动填充到列簇中。
2.3.3关于数据导入
对于ES索引库,需要开发导入程序将第三方原始WHOIS中索引数据导入。
对于HBASE库,需要开发导入程序将第三方原始WHOIS导入,在导入数据时,需要将对应列的数据填充到列族中。
2.4 REST API使用
2.4.1 ES REST API
利用POSTMAN工具,简单列举几种典型查询场景。
- 分词器查询【对分词列使用match关键字查询】
输出:
- 多条件查询【must、term、match混用】
输出:
2.4.2 HBASE REST API
HBASE表名为WHOIS, REST API同1.5.2
2.5 ES配置流程
修改配置文件
修改ES中配置文件,elasticsearch.yml和jvm.optionsLinux下创建es用户
useradd esLINUX服务器修改内核参数
vi /etc/security/limits.conf
*soft nofile 65535
*hard nofile 65535查看当前用户资源限制
ulimit -a修改LINUX内核MMAP使用限制
vi /etc/sysctl.conf
vm.max_map_count=262144
sysctl -pES节点启动
su es
cd /grid/elasticsearch-6.6.2/bin
cd /opt/elasticsearch/elasticsearch-6.6.2/bin
./elasticsearch -d
http://192.168.10.23:9200/_cat/health?v //验证集群状态启动KIBANA
查看端口被进程占用
netstat -lnp| grep 5601
启动(192.168.10.21)
cd /grid/kibana-6.6.3-166SNAPSHOT-linux-x86_64/bin
./kibana -q &
exit
小记一次海量数据实时查询域名库设计(下)相关推荐
- 小记一次海量数据实时查询域名库设计(上)
一.PDNS库设计 根据前期调研及技术选型,基于第三方外部PDNS数据,开发导入程序,完成构建基于Hadoop HBASE的PDNS实时数据查询系统,系统平台采用8台4U服务器组成Hadoop集群. ...
- PHP检查微信域名屏蔽接口,微信域名检测API接口,实时查询域名是否被微信拦截...
微信域名检测API接口的应用场景: 由于微信对外部链接内容规范比较严格,所以可能一不小心就会被判定为是违反内容规范的,或被同行恶意举报投诉之类的. 那么此时就要用到微信域名检测接口,实时检测域名的状态 ...
- 微信域名检测 实时查询域名是否被微信拦截
微信是我们生活中必不可少的社交工具,用户群体也相当大,所以就不乏大量的个人或团队利用微信进行推广,推广方式就是转发分享链接到个人或群,发朋友圈,或利用微信公众号,一心专注与营销和推广的商家,却忽略了微 ...
- 【巨杉访谈】分布式数据库如何实现海量数据实时查询
巨杉数据库高访问量.海量数据业务背后的基础系统架构是如何设计和优化的?分布式数据库是如何做到数据的透明水平.垂直拆分,实现海量数据实时查询的? 访谈实录 1.巨杉数据库作为国内第一款自主研发的 New ...
- 微信域名拦截检测php,微信域名检测API接口,实时查询域名是否被微信拦截
微信域名检测API接口的应用场景: 由于微信对外部链接内容规范比较严格,所以可能一不小心就会被判定为是违反内容规范的,或被同行恶意举报投诉之类的. 那么此时就要用到微信域名检测接口,实时检测域名的状态 ...
- 价格查询系统 数据库 PHP Mysql,信息实时查询系统的设计与实现(PHP+MySQL)
摘 要 信息查询系统是基于校园网络环境下设计,满足师生员工对校内综合信息实时查询,及对校园网上各类信息资源的检索服务需求. 本系统采用了浏览器/服务器(B/S)模式.以MySQL数据库为存储方式,运 ...
- 基于HBase的海量数据实时查询系统设计与实现
点击打开链接 http://www.doc88.com/p-7445439907872.html
- 网址域名查询-域名注册查询工具
域名查找软件 域名查找软件是一种能够帮助用户快速查询域名相关信息的工具.它通常提供了批量域名查询和实时域名查询服务,能够帮助用户查询域名的注册信息.到期时间.所有者信息.域名服务器等多种相关信息.以下 ...
- 【演讲实录】分布式数据库海量数据存储和实时查询实现与应用
节选自OSC深圳源创会 演讲速记 分享嘉宾:巨杉数据库技术总监 乔国治 巨杉数据库,核心产品是SequoiaDB巨杉数据库.是我们的团队完全从零开始研发的.巨杉数据库是商业数据库,同时我们本身也将 ...
最新文章
- thrift - C#(CSharp)客户端连接池(ConnectionPool)
- oracle sql练习_数据分析之学习SQL
- 以太坊DAPP[2]-×××-react框架与web3实例
- MapReduce Java API实例-排序
- 框架复习笔记-Java-案例:牛客网讨论社区
- Ubuntu 安装 Qt 开发环境(转)
- python \uxxxx转中文,Python列表中的字典 \uxxxx转中文,
- socket多人聊天程序C语言版(二)
- Adobe Flash Player30.0.0.113离线安装包
- mysql 数据库数据恢复 库被删了怎么恢复数据库
- JQuery22( JQ原理 Clone)
- 一卡通管理系统数据库服务器连接失败,智能一卡通管理系统数据库服务器连接失败...
- css实现白光划过效果
- 进化算法——反向学习
- matlab数据接口技术,Matlab与Pspice的数据接口技术
- java dispatcher详解_Java Web开发详解:RequestDispatcher接口
- 通过Python脚本创建ArcGIS地图服务缓存
- 争夺切客【南方周末】
- Arch 安装Nginx
- 清华某博士的退学申请【转】