自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 基于zookeeper实现分布式锁的底层原理

注:关于什么是分布式锁及其应用场景这里不赘述,需要了解请自行百度! 一 zookeeper分布式锁原理: 原理图基于curator(zookeeper客户端框架),具体代码实现看下官网API(很简单),此图解释了以下问题: 多线程间如何获取锁资源? 一个线程内重复加锁如何处理? 争抢锁资源时如何...

2018-10-31 23:08:18 321 0

原创 图解elasticsearch的写入流程(包含对refresh、fsync、flush操作的理解)

elasticsearch写入数据时涉及到的核心概念讲解: segment file: 存储逆向索引的文件,每个segment本质上就是一个逆向索引,每秒都会生成一个segment文件,当文件过多时es会自动进行segment merge(合并文件),合并时会同时将已经标注删除的文档物理删除;...

2018-08-31 12:06:43 3035 2

原创 Eureka启动流程 - EurekaBootStrap源码解析

cloud源码:https://github.com/spring-cloud/spring-cloud-netflix netflix源码:https://github.com/Netflix/eureka eureka-server中web.xml解读: 配置了一个监听器(启动核心入...

2018-08-08 19:19:38 1063 0

原创 十分钟了解23种设计模式

注:适用于设计模式入门和面试突击 什么是设计模式? 是经过前人无数次的实践总结出的,设计过程中可以被反复使用的,可以解决特定问题的设计方法,java面向对象编程的所有思想都出自这23种设计模式,无处不用。 1)单例模式(以下几种单例务必掌握): 饿汉式、懒汉式、双重锁(使用vola...

2018-07-19 00:01:03 482 0

原创 Git常用命令

git入门命令 1. 对一个已有的项目初始化git版本库 // 进入此项目根目录下: git init 解释: git init命令作用是将此项目交给git托管,创建的.git隐藏目录实际上就是存储了你的每个代码文件的每个版本。 2. 对代码进行版本控制 git add --al...

2018-07-12 00:12:51 215 0

原创 并行流parallel,CompletableFuture与Executors线程池的使用与区别

list并行操作在项目开发可以极大提高代码效率与性能,java8对其进行了很好的封装,简单使用研究一下: 1. 先自己创建一个list: // list在实际使用中要注意线程安全,Collections.synchronizedList写操作性能高,CopyOnWriteArrayList读操...

2018-03-16 15:57:53 4827 0

原创 redis-cluster核心原理分析:gossip通信、jedis smart定位、主备切换

1、节点间的内部通信机制1.1 基础通信原理 redis cluster节点间采取gossip协议进行通信 维护集群的元数据有两种方式:集中式和gossip 集中式: 优点在于元数据的更新和读取,时效性非常好,一旦元数据出现变更立即就会更新到集中式的存储中,其他节点读取的时候立即就可以立即感...

2017-12-15 15:02:27 2437 0

原创 redis-cluster集群搭建

本人最近在搭建一套主从复制+高可用+多master的redis cluster集群,搭建环境是CentOS7,redis版本3.2.8。1、补充redis-trib.rb文件基本知识redis-rib.rb是redis的集群管理工具,集成在redis的src目录下,是redis作者使用ruby脚本...

2017-12-02 23:39:35 252 0

原创 Redis哨兵架构详解

1、哨兵(sentinal)的介绍哨兵是redis集群架构中非常重要的一个组件,主要功能如下: 集群监控:负责监控redis的master和slave进程是否正常工作; 消息通知:如果某个redis实例有故障,那么哨兵负责发送消息作为报警通知给管理员; 故障转移:如果master node挂掉了,...

2017-11-20 19:51:32 747 2

原创 笔记:elasticsearch在项目中的使用需求

(摘抄自公司大牛的笔记,自己总结一下) 类比mysql,我们需要=、>、>=、<、<= 、or、and、in、like、count、sum、group by、order by、limit 在高版本的ES里面使用了boolquery替换了filter1、等于号=Query...

2017-11-16 21:19:36 2500 0

原创 第十七篇:elasticsearch java API的使用

首先添加上maven依赖:<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>transport</artifactId> &l...

2017-11-06 20:42:20 336 0

原创 第十六篇 深入elasticsearch聚合数据分析

1. bucket与metric两个核心概念单词意思就可以理解: bucket:桶 就是对我们的数据进行分组; sql中相当于:group by user_idmetric:度量标准 就是对一个数据分组执行的某种聚合分析的操作,比如说求平均值,求最大值,求最小值;2、家电卖场案例背景以一个...

2017-11-03 20:34:51 1894 0

原创 补充篇 基于linux centos 7安装elasticsearch

强调:elasticsearch是基于JDK1.8运行的,安装前请务必安装完jdk1.8一、安装elasticsearch1、 进入我的安装目录:cd /usr/local/ 2、执行下载命令:wget https://artifacts.elastic.co/downloads/elastic...

2017-11-02 18:20:54 2011 0

原创 第十五篇 深度揭秘elasticsearch的搜索技术

1. 手动控制全文检索结果的精准度1.1 为帖子数据添加标题字段POST /forum/article/_bulk { "update": { "_id": "1"} } { "doc" : {"title&...

2017-11-02 17:17:49 326 0

原创 第十四篇 elasticsearch的结构化搜索(全)

1. 使用term、filter来搜索数据1.1 插入一些数据POST /forum/article/_bulk { "index": { "_id": 1 }} { "articleID" : "XHDK-A-1293-#fJ...

2017-11-02 14:27:31 935 0

原创 第十三篇 elasticsearch的Query DSL搜索语法

Query DSL基本语法{ QUERY_NAME: { ARGUMENT: VALUE, ARGUMENT: VALUE,... } }{ QUERY_NAME: { FIELD_NAME: { AR...

2017-10-31 18:01:12 1597 0

原创 第十二篇 elasticsearch中的mapping透彻理解

首先插入几条数据,让es自动为我们建立一个索引PUT /website/article/1 { "post_date": "2017-01-01", "title": "my first article", ...

2017-10-31 17:00:33 845 0

原创 第十一篇 elasticsearch的分页搜索和deep_paging性能问题

1. 分页搜索的语法size,fromGET /_search?size=10 GET /_search?size=10&from=0 GET /_search?size=10&from=202. deep paging性能探究deep paging简单来说,就是搜索的特别深,比如...

2017-10-31 14:25:50 1036 4

原创 第十篇 elasticsearch的写一致性原理以及quorum机制深入剖析

1. consistency参数:one(primary shard),all(all shard),quorum(default)我们在发送任何一个增删改操作时比如put /index/type/id,都可以带上一个consistency参数,指明我们想要的写一致性是什么:put /index/...

2017-10-30 17:50:49 1458 2

原创 第九篇 elasticsearch的document数据路由原理

1. document是怎么路由到shard上的?路由算法:shard = hash(routing) % number_of_primary_shards 假如一个index有3个primary shard,P0,P1,P2; 在每次增删改查一个document的时候都会带过来一个routi...

2017-10-30 14:13:55 321 0

原创 第八篇 elasticsearch的批量增删改查

1. 批量查询1.1 mget查询的语法GET /_mget { "docs" : [ { "_index" : "test_index", "_type" : ...

2017-10-30 11:35:01 3077 0

原创 第七篇 elasticsearch如何解决并发冲突问题

1. 乐观锁和悲观锁两种并发控制方案数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段。 不要把他们和数据中提供的锁机制(行锁、表锁、排他锁...

2017-10-29 22:31:35 3711 0

原创 第六篇 elasticsearch中的document全量替换、强制创建以及删除机制

1、document的全量替换 语法与创建文档是一样的,如果document id不存在,那么就是创建;如果document id已经存在,那么就是全量替换操作,替换document的json串内容 document是不可变的,如果要修改document的内容,第一种方式就是全量替换,直接对doc...

2017-10-28 18:27:38 1748 3

原创 第五篇 elasticsearch中document的核心元数据

1、_index元数据(1)代表一个document存放在哪个index中 (2)类似的数据放在一个索引,非类似的数据放不同索引:product index(包含了所有的商品),sales index(包含了所有的商品销售数据),inventory index(包含了所有库存相关的数据)。如果你...

2017-10-28 17:25:48 468 0

原创 第四篇 elasticsearch的基本分布式架构

1、Elasticsearch对复杂分布式机制的透明隐藏特性Elasticsearch是一套分布式的系统,分布式是为了应对大数据量,它很好的隐藏了复杂的分布式机制: shard分片机制 我们可以随随便便就将一些document插入到es集群中去,而且不用关心数据怎么进行分片的,数据到哪个shar...

2017-10-28 17:19:13 1328 0

原创 第三篇 elasticsearch的group by+avg+sort等聚合分析

本文依据如下数据模板进行分析PUT /ecommerce/product/1 { "name" : "gaolujie yagao", "desc" : "gaoxiao meibai", &...

2017-10-28 16:00:35 8487 2

原创 第二篇 应用elasticsearch进行简单的商品管理

一、集群健康检查和文档CRUD1. 快速查询集群的健康状况GET /_cat/health?v 了解集群的健康状况 green:每个索引的primary shard和replica shard都是active状态的。 yellow:每个索引的primary shard都是active状态的,...

2017-10-27 20:12:24 1700 0

原创 第一篇 elasticsearch介绍

1.es介绍1.1.es功能 分布式的搜索引擎和数据分析引擎 数据分析:电商网站,最近7天牙膏销量排行前十商家(举例); 全文检索,结构化检索,数据分析 全文检索:我想搜索商品名称包含牙膏的商品,select * from products where product_name like “%...

2017-10-27 17:28:46 312 0

提示
确定要删除当前文章?
取消 删除