- 博客(1123)
- 资源 (64)
- 收藏
- 关注

原创 设计模式二三事
老师点了点头,“世上本没有路,走的人多了,便变成了路。“这我知道,活动营销是指企业通过参与社会关注度高的已有活动,或整合有效的资源自主策划大型活动,从而迅速提高企业及其品牌的知名度、美誉度和影响力,常见的比如有抽奖、红包等。状态模式[1-5]:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。老师表示同意,小明接着说:“第二,任务类不够高内聚,它在通知实现中感知了其他领域或模块的模型,如活动和任务管理器,这样代码的耦合度太高,不利于扩展。
2023-01-16 15:27:10
854

原创 Hbase是什么?为什么要用它?
ApacheHadoopApache HBase 是 Hadoop 数据库,一个分布式、可伸缩的大数据存储。HBase是依赖Hadoop的。为什么HBase能存储海量的数据?因为HBase是在HDFS的基础之上构建的,HDFS是分布式文件系统。HBase是一个NoSQL数据库,一般我们用它来存储海量的数据(因为它基于HDFS分布式文件系统上构建的)HBase的一行记录由一个RowKey和一个或多个的列以及它的值所组成。先有列族后有列,列可以随意添加。
2022-11-26 11:15:41
167
1

原创 Kubernetes实战(三十二)-Kubeadm 安装 Kubernetes v1.24.0
Kubernetes(简称K8S)是开源的容器集群管理系统,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。它既是一款容器编排工具,也是全新的基于容器技术的分布式架构领先方案。在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等功能,提高了大规模容器集群管理的便捷性。K8S集群中有管理节点与工作节点两种类型。管理节点主要负责K8S集群管理,集群中各节点间的信息交互、任务调度,还负责容器、Pod、NameSpaces、PV等生命周期的管理。...
2022-08-17 15:58:43
172

原创 Kubernetes实战(三十一)-Calico网络部署(推荐)
Calico 是一种容器之间互通的网络方案。在虚拟化平台中,比如 OpenStack、Docker 等都需要实现 workloads 之间互连,但同时也需要对容器做隔离控制,就像在 Internet 中的服务仅开放80端口、公有云的多租户一样,提供隔离和管控机制。......
2022-08-17 14:29:56
332

原创 Apollo Java客户端使用指南
注意:本文档适用对象是Apollo系统的使用者,如果你是公司内Apollo系统的开发者/维护人员,建议先参考Apollo开发指南。一、准备工作1.1 环境要求Java: 1.7+ Guava: 15.0+ Apollo客户端默认会引用Guava 19,如果你的项目引用了其它版本,请确保版本号大于等于15.0 注:对于Apollo客户端,如果有需要的话,可以做少量代码修改来降级到Java 1.6,详细信息可以参考Issue 4831.2 必选设置Apollo客户端依赖于...
2022-01-21 12:01:04
1075

原创 Apollo 分布式部署指南
本文档介绍了如何按照分布式部署的方式编译、打包、部署Apollo配置中心,从而可以在开发、测试、生产等环境分别部署运行。如果只是需要在本地快速部署试用Apollo的话,可以参考Quick Start一、准备工作1.1 运行时环境1.1.1 OS服务端基于Spring Boot,启动脚本理论上支持所有Linux发行版,建议CentOS 7。1.1.2 JavaApollo服务端:1.8+ Apollo客户端:1.7+由于需要同时运行服务端和客户端,所以建议安装Java 1.
2022-01-21 11:51:30
1096

原创 ElasticSearch实战(四十八)-Debeizum 实现 MySQL 数据实时同步方案
前文我们通过 Canal 来实时同步数据,Debeizum 是一种比 Canal 更好的实时同步方案,它底层是基于 Kafka-connect 为核心构建的,可以完美对接 Kafka 家族生态,上游支持接入MongoDB、MySQL、PostgreSQL、SQL Server、Oracle、Db2、Cassandra、Vitess,下游是只支持接入 Kafka,然后我们再从 Kafka 中消费数据,可以选择 Kafka-connect 也可以选择 Logstash 来再做一层数据清洗,
2021-09-25 14:49:29
367

原创 ElasticSearch实战(四十七)-Canal 实现 MySQL 数据实时同步方案
Canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。基于日志增量订阅和消费的业务包括数据库镜像 数据库实时备份 索引构建和实时维护(拆分异构索引、倒排索引等) 业务 cache 刷新...
2021-09-22 18:24:59
386

原创 ElasticSearch实战(四十六)-数据实时同步技术选型
本文中讲的几个技术栈都是基于一个叫做 CDC(Change Data Capture)的理论衍生出出来的,大概可以机翻为 “变动数据捕获”,你可以将它视为和数据库有关的架构设计模式的一种。它的核心思想是,监测并捕获数据库的变动(包括数据或数据表的插入,更新,删除等),将这些变更按发生的顺序完整记录下来,写入到消息中间件中以供其他服务进行订阅及消费。我们可以把 CDC 认为是数据库事件驱动的一种数据 / 信息分发系统,CDC 主要适用于以下的场景: 1
2021-09-22 15:02:33
307

原创 ElasticSearch实战(四十四)-Datax 开源数据离线同步方案
DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。DataX本身作为数据同步框架,将不同数据源的同步抽象为从源头数据源读取数据的Reader插件,以及向目标端写入数据的Writer插件,理论上DataX框架可以支持任意数据源类型的数据同...
2021-09-22 12:05:03
491

原创 ElasticSearch实战(四十三)-Logstash 官方数据离线同步方案
在上文中,我们提到了三种离线数据同步方案,Logstash 是轻量级数据离线同步方案的一种,为什么我们说它是轻量级而不是重量级?因为 Logstash 他适合处理单数据源的简单数据结构的数据清洗和转换,在处理复杂数据源和复杂数据结构它并不是很合适,Logstash官方可支持多种数据源的数据离线同步,图示如下: 我就给一个Mysql数据通过Logstash同步到ElasticSearch中的案例供大家操作。一、安装logstash并同步MySQL数据库
2021-09-20 20:04:47
177

原创 ElasticSearch实战(四十二)-数据离线同步技术选型
ElasticSearch 需要把存储在三方存储引擎中的数据进行同步,比如 Mysql/PostgreSQL/Cassandra/HBase将数据离线同步到ElasticSearch中,他们中间的数据传输需要通过三方中间件,这边离线同步技术栈选型有几种:一、Logstash Logstash 能够动态地采集、转换和传输数据,不受格式或复杂度的影响。拥有 200 多个插件。您可以将不同的输入选择、过滤器和输出选择混合搭配、精心安排,让它们在管道中和谐地运行。
2021-09-20 19:28:42
271

原创 ElasticSearch实战(四十一)-存储桶聚合
Elasticsearch除了在搜索方面非常之快,对数据分析也是非常重要的一面。正确理解Bucket aggregation对我们使用Kibana非常重要。Elasticsearch提供了非常多的aggregation可以供我们使用。其中Bucket aggregation对于初学者来说也是比较不容易理解的一个。在今天的这篇文章中,我来重点讲述这个。简单地说:一个桶代表一个具有共同标准的文档集合。存储桶(bucket)是聚合的关键要素。比如,我们想分析每个月的log流量:...
2021-09-20 14:30:55
199

原创 ElasticSearch实战(四十)-度量值聚合
度量值聚合基于以某种方式从正在聚合的文档中提取的值来计算度量。这些值通常从文档的字段中提取(使用字段数据),但也可以使用脚本生成。数值度量聚合是一种输出数值的特殊类型的度量聚合。一些聚合输出单个数值度量(例如平均值),称为单值度量聚合,另一些输出多个度量值(例如统计数据),称为多值数值度量聚合。单值与多值数值度量聚合的区别是,他们充当某些桶聚合(比如某些桶聚合可以基于每个桶的数值度量对返回的桶进行排序)的直接子聚合时发挥了不同的作用。 1、均值聚合...
2021-09-20 13:46:40
201

原创 ElasticSearch实战(三十九)-聚合框架
聚合是 ElasticSearch 强大功能之一,是关系分析、知识图谱、统计相关不可缺少的强大功能,ES中包含四类聚合方式:存储桶聚合、度量值聚合、矩阵聚合、管道聚合。ElasticSearch 中聚合的概念,通俗的讲就是按照一些条件从一个数据集中去统计一些信息,比如统计酒店房间有多少,根据价格区间统计酒店数量这些功能。官网的解释:聚合可以进行各种组合以构建复杂的数据汇总。可以看作是在一组文档上建立分析信息的工作单元,统计一些文档集。聚合可以将一些独立...
2021-09-20 13:20:43
102

原创 ElasticSearch实战(三十八)-Ingest Pipeline 逻辑条件判断
在 Ingest Pipeline 中,可以基于 painless 脚本,编写逻辑条件进行判断,可以做一些事情,比如满足某个条件再进行数据清洗,如果不满足就不进行数据清洗等类似操作,大大增加了 pipeline 的灵活性。 1、创建pipeline 还是老规矩,创建两个pipeline,命令如下:PUT _ingest/pipeline/pro001{ "description": "1.省份", "processors": [ ...
2021-09-20 12:56:38
364

原创 ElasticSearch实战(三十七)-Ingest Pipeline + Painless Script (多管道脚本处理器)
前文我们掌握了 Painless Script 脚本,同时我们也掌握了Ingest Pipeline多管道处理器的写法,本文我们将两者结合起来,基本上能处理百分之 99.99 的 ElasticSearch 相关的问题。 注:本文学完,你基本可以说是在 ES 操作方面无敌了,实操层面还需要多多掌握 ES 的语法,才能灵活组合和使用。 1、创建pipeline 首先创建几个单管道 pipeline,命令如下:PUT _ingest/...
2021-09-20 12:37:12
331

原创 ElasticSearch实战(三十六)-Ingest Pipeline 多管道处理器
在前文我们已经讲了 Ingest Pipeline 使用方法,除了单管道处理方式以外,它还支持多管道组合并行处理的方式对数据进行清洗,同时支持管道动态扩展和灵活组合,让数据清洗更加强大和实用。 1、pipeline 创建 我们提前定义多个pipeline,运用多管理处理器机制组合在一起,即可以独立运行,也可以组合运行,命令如下:PUT _ingest/pipeline/pro001{ "description": "1.省份", "pro...
2021-09-20 12:18:43
240

原创 ElasticSearch实战(三十五)-Ingest Pipeline 数据预处理(轻量级ETL)
在Elasticsearch 5.0版本以后引入了 Ingest Pipeline,用于在文档被索引之前进行预处理。Pipeline 定义了一系列按顺序执行的 processors, 一个 pipeline 由 description 和 processors两部分组成:PUT _ingest/pipeline/my-pipeline-id{ "description" : "...", "processors" : [ ... ]} 主要应用场景:...
2021-09-20 11:56:13
282

原创 ElasticSearch实战(三十四)-Painless 脚本编程
我们之前看见了在Elasticsearch里的ingest node里,我们可以通过以下processor的处理帮我们处理我们的一些数据。它们的功能是非常具体而明确的。那么在Elasticsearch里,有没有一种更加灵活的方式可供我们来进行编程处理呢?如果有,它使用的语言是什么呢?在Elasticsearc中,它使用了一个叫做Painless的语言。它是专门为Elasticsearch而建立的。Painless是一种简单,安全的脚本语言,专为与Elasticsearch...
2021-09-20 10:48:13
1070

原创 ElasticSearch实战(三十三)-滚动查询
深度分页查询会给ES集群性能带来极大损耗,滚动查询可以避免这种情况。1、数据准备PUT student{ "mappings" : { "properties" : { "name" : { "type" : "keyword" }, "age" : { "type" : "integer" } } }}POST _bulk{ "index" : { ...
2021-09-18 17:08:05
358
1

原创 ElasticSearch实战(三十二)-分数值过滤
在工作中,如果我们使用 match 来检索数据,我们会匹配到很多个结果,这就像我们使用百度搜索关键字一样,下面会匹配到很多条搜索结果,图示如下: 所以我们要在这么多结果中,过滤出匹配度分值高的数据,这里我们就要用到分数值过滤功能。下面这种方式,排除得分 _score 低于设定的 min_score 的文档,示例如下:GET kibana_sample_data_flights/_search{ "min_score": 3.8, "query": { ...
2021-09-18 16:54:19
551

原创 ElasticSearch实战(三十一)-索引加权
在搜索多个索引时,可以为每个索引配置不同的权重。当来自一个索引的命中文档比来自另一个索引的更重要时,这非常方面。GET /_search{ "indices_boost": [ { "alias1": 1.4 }, { "index *": 1.3 } ]} 这在使用别名或通配符表达式时很重要。如果找到多个匹配项,将使用第一个匹配项。例如,如果一个索引同时包含在 alias1 和 index * 中,...
2021-09-18 16:45:00
242

原创 ElasticSearch实战(三十)-排序查询
我们之前学过几种查询方式了,但是结果顺序都是elasticsearch决定的。我们来给查询结果搞上我们定制的顺序。 1、准备数据DELETE company-001-sortPUT company-001-sort/_doc/1{ "name":"顾老二", "age":30, "from": "gu", "desc": "皮肤黑、武器长、性格直", "tags": ["黑", "长", "直"]}PUT company-001-sort...
2021-09-18 16:35:34
220

原创 ElasticSearch实战(二十九)-分页查询
我们在实际工作中,有很多分页的需求,商品分页、订单分页等,在MySQL中我们可以使用limit,那么在Elasticsearch中我们可以使用什么呢?ES 分页搜索一般有三种方案,from + size、search after、scroll api,这三种方案分别有自己的优缺点,下面将进行分别介绍。 数据集我们使用kibana中的kibana_sample_data_flights。一、from + size这是ES分页中最常用...
2021-09-18 16:23:15
294

原创 ElasticSearch实战(二十八)-高亮查询
如果返回的结果集中很多符合条件的结果,那怎么能一眼就能看到我们想要的那个结果呢?比如下面网站所示的那样,我们搜索elasticsearch,在结果集中,将所有elasticsearch高亮显示? 要达到上面的效果,我们来逐步实现,步骤如下:1、定义静态索引结构(使用IK分词器分词)DELETE company-001-high-lightPUT company-001-high-light{ "settings": { "nu...
2021-09-18 16:10:46
161

原创 ElasticSearch实战(二十七)-可视化集群管理(head插件)
Elasticsearch-head 是用于监控 Elasticsearch 状态的客户端插件,包括数据可视化、执行增删改查操作等。一、安装 首先从Github上下载 head插件到服务器上,命令如下:$ cd /opt$ sudo git clone https://github.com/mobz/elasticsearch-head.git$ chown -R elk:elk elasticsearch-head/*$ cd elasticsearch-...
2021-09-18 15:09:11
123

原创 ElasticSearch实战(二十六)-IK 中文分词器
为什么要在elasticsearch中要使用ik这样的中文分词?因为 ES 提供的分词是英文分词,对于中文的分词就做的非常不好了,因此我们需要一个中文分词器来用于搜索和使用。一、安装和使用我们可以从官方github上下载该插件,我们下载对应于我们使用的es的版本的ik,并且我们能够看到具体的安装步骤,可以有两种安装方法。这里我们选择第一种方式。由于IK分词器和ES版本需要兼容,因为我们这个专栏的ES集群版本是7.x,所以我...
2021-09-18 14:00:12
138

原创 ElasticSearch实战(二十五)-Settings 属性详解
在工作中,我们常常定义各种静态索引结构,例如下面这种索引结构,示例如下:PUT company-001{ "settings" : { "refresh_interval" : "10s", "number_of_shards" : "3", "number_of_replicas" : "2", "translog.flush_threshold_size" : "1gb", "translog.sync_inter...
2021-09-18 10:25:38
388

原创 ElasticSearch实战(二十四)-查询语法扩展
本文主要对平时工作中常用的DSL查询语法做一下汇总,特此记录便于日后查阅。 1、term:关键词过滤term主要用于精确匹配,如字符串、数值、日期等(不适合情况:1.列中除英文字符外有其它值 2.字符串值中有冒号或中文 3.系统自带属性如_version),命令如下:GET company-001/_search{ "query": { "term": { "companyName": { "value":...
2021-09-18 09:09:18
131

原创 ElasticSearch实战(二十三)-查询并更新匹配文档(update_by_query)
update_by_query的语法基本上和delete_by_query类似,但是因为增加了更新操作,所以语句内会增加相应的更新语句,命令如下: 例1:POST company01/_update_by_query{ "script" : { "source": "ctx._source.counter += params.count", "lang": "painless", "params" : { ...
2021-09-17 16:40:37
803

原创 ElasticSearch实战(二十二)-查询并删除匹配文档(delete_by_query)
在工作中,我们通常会使用查询条件来过滤出满足要求的数据,然后再删除它,这样的用法比较多,ES提供了delete_by_query方法实现这种场景,特此记录便于日后查阅。 1、删除符合条件的记录delete_by_query方法会删除符合条件的记录,命令如下:POST company01/_delete_by_query{ "query": { "match": { "message": "some message" ...
2021-09-17 16:36:37
1506

原创 ElasticSearch实战(二十一)-任务管理
ElasticSearch 支持查询、取消任务的功能,通过任务管理功能,我们对于那种长时间的任务可以做到更好的控制。 1、查询任务任务api会从一个节点或集群中所有节点获取任务列表及状态,命令如下:GET /_tasks GET /_tasks?nodes=nodeId1,nodeId2 GET /_tasks?nodes=nodeId1,nodeId2&actions=cluster:* 返回的结果:{ "no
2021-09-17 16:21:32
635

原创 ElasticSearch实战(二十)-索引重建高级属性
在重建索引过程中,如果重建的数据量过大,会导致ES假死无响应问题,这个时候我们去要通过 slicing 人工切片的方式,把一份数据切成多份,分批进行索引重建。slicing:数据切片(不要自动,使用人工切片方式操作)应用场景:提供重建的并发度,默认一个分片就是一个切片,默认是1,并行度是1建议值与分片数量一致重建索引注意事项:1、注意流量阈值控制2、索引访问交叉影响 3、别名运用解决索引访问 1、requests_per_second...
2021-09-17 15:55:09
149

原创 ElasticSearch实战(十九)-索引重建
在使用ES的过程中,有时候不小心在查询的时候应该使用Get操作,却使用了POST操作,这就会导致ES的mapping里面多出一个无用的字段。或者在未定义字段类型时提交了新的数据字段,就会导致字段类型与预期的不一致,从而造成许多麻烦。ES是不支持删除单个字段的,尽管可以删除单个字段的所有数据,但是这个字段依然存在mapping声明中无法删除,这时候ES的Reindex就该上场了。 1、基本用法POST _reindex{ "source": ...
2021-09-17 15:54:08
106

原创 ElasticSearch实战(十八)-批量写入与更新
本文我们来介绍一下批量新增/更新语句怎么操作,后面会介绍批量增加/修改语句,特此记录便于日后查阅。1、批量写入或更新数据(id不存在则写入,已存在则更新)POST _bulk{"index":{"_index":"company-001","_id":1}}{"companyID":1,"companyName":"oal1"}{"index":{"_index":"company-001","_id":2}}{"companyID":2,"companyN...
2021-09-17 15:13:53
2212

原创 ElasticSearch实战(十七)-增删改查
本文我们来介绍一下增删改查语句怎么操作,后面会介绍批量增加/修改语句,特此记录便于日后查阅。一、增加POST company01/_doc/1{ "text" : "开放智能机器"}# 增加指定字段name的值为xiaoqiangPOST company/1/_update{ "script" : "ctx._source.name = \"xiaoqiang\""}二、删除# 删除指定字段POST company01/1/_upda...
2021-09-17 14:43:59
137

原创 ElasticSearch实战(十六)-索引模板
记录在工作中生产的数据按月保存在ES中(通过logstash采集kafka数据到ES),由于生产环境数据量比较庞大(一天的日志量大概在2500万条左右),如果不创建索引模板则会导致存储的数据类型鱼龙混杂,难以再次使用,但如果要手动创建索引也不太现实(毕竟字段量巨大)。如果用户每次新建一个索引的时候都需要手动创建mapping非常麻烦,ES 内部维护了template,template定义好了mapping,只要index的名称被template匹配到,那么该index的...
2021-09-17 11:59:41
318

原创 ElasticSearch实战(十五)-索引别名
业务需求是不断变化迭代的,也许我们之前写的某个业务逻辑在下个版本就变化了,我们可能需要修改原来的设计,例如数据库可能需要添加一个字段或删减一个字段,而在搜索中也会发生这件事,即使你认为现在的索引设计已经很完美了,在生产环境中,还是有可能需要做一些修改的,需要添加映射字段或者需要修改字段类型等等。数据库中我们可以直接修改原来的表设计语句,前提是需要做好数据迁移。但是在 Elasticsearch 中就没那么简单了。尽管可以增加新的类型到索引中,或者增加新的字段到类型中,但...
2021-09-17 11:47:12
333

原创 ElasticSearch实战(十四)-Mappings 高级属性
ElasticSearch中mappings分为两部分,_source 和 properties,_source表示的是对源数据存储规则的定义(定义哪些字段可以存储,哪些不可以存储),properties是对源数据每个字段结构类型和规则的定义。一、_source 高级属性1、_source(true/false)_source默认开启,是否存储原数据,设置false则不存储。# 关闭source存储(不存原数据)PUT company-0...
2021-09-17 11:28:09
258
Shardingsphere-4.1.1 二次开发源码
2023-01-03
RocketMQ-Connect 二次开发源码
2023-01-03
Kubernetes Crictl 1.20.0安装包,用于操作Continered容器命令集
2022-12-08
Kubernetes CRI Containerd 1.6.4 运行时容器安装包
2022-12-08
libseccomp 2.5.1版本,修复Containerd不兼容问题的组件包
2022-12-06
优秀的UI自动化测试框架
2022-08-28
优秀的自动化测试框架。
2022-08-28
自动生成指定大小测试文件。
2022-07-11
clickHouse备份工具1.3.1:clickhouse-backup-linux-amd64.tar.gz
2022-03-07
datax-elasticsearch-master.zip
2021-09-09
Gmssl链接库(himix200、android、arm64、linux64、windows64)
2021-05-12
docker-apollo-master.zip
2021-05-12
apollo-1.4.0.zip
2021-05-12
activiti-test-master.zip
2021-04-21
HDFS集群数据迁移怎么做?
2022-11-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人