【ElasticStack】ElasticSearch分布式特性 与 Search机制

1. ElasticSearch的分布式特性

1.1 分布式介绍

  1. ES支持集群模式,即一个分布式系统。其好处主要有以下2个:
    1. 可增大系统容量。比如:内存、磁盘的增加使得ES能够支持PB级别的数据;
    2. 提高了系统可用性。即使一部分节点停止服务,集群依然可以正常对外服务。
  2. ES集群由多个ES实例构成。
    • 不同集群通过集群名字来区分,通过配置文件elasticsearch.yml中的cluster.name可以修改,默认为elasticsearch
    • 每个ES实例的本质,其实是一个JVM进程,且有自己的名字,通过配置文件中的node.name可以修改。

阅读更多

【ElasticStack】ElasticSearch入门

1. 概述

1.1 ElasticStack特点

  1. 使用门槛低,开发周期短,上线快
  2. 性能好,查询快,实时展示结果
  3. 扩容方便,快速支撑增长迅猛的数据

阅读更多

【并发编程】NIO、Netty及websocket实现

1. BIO/NIO/AIO演变

Java IO 方式有很多种,基于不同的IO抽象模型和交互方式,可以进行简单区分。

阅读更多

【并发编程】阻塞队列 与 线程池

  • 池和队列的关系
    • 线程池或者数据库连接池,都有最大限制。如果超出了限制数量,则新进来的申请连接都要放入额外的队列里,等到池空出来时,从队列中取出连接放进池里。

阅读更多

【并发编程】AQS框架 与 锁框架(JUC.locks)

1. AQS(队列同步器)

AbstractQueuedSynchronizer:队列同步器,简称AQS

  • AQS维护了一个volatile intstate(代表资源共享变量) 和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。
  • AQS定义了两种资源共享方式:Exclusive(独占),Share(共享)

阅读更多

【并发编程】JUC并发容器类

java.util.concurrent包中,提供了两种类型的并发集合:一种是阻塞式,另一种是非阻塞式。

  • 阻塞式集合:当集合已满或为空时,被调用的添加(满)、移除(空)方法就不能立即被执行,调用这个方法的线程将被阻塞,一直等到该方法可以被成功执行
  • 非阻塞式集合:当集合已满或为空时,被调用的添加(满)、移除(空)方法就不能立即被执行,调用这个方法的线程不会被阻塞,而是直接则返回null或抛出异常。

阅读更多

【Java知识梳理】常见集合类 的 数据结构

集合(Collection/Map)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Collection接口
|———— List接口
|———— ArrayList类
|———— Vector类
|———— LinkedList类
|———— Stack类
|———— Set接口
|———— HashSet类
|———— TreeSet类
|———— LinkedHashSet类
|———— Queue接口
|———— LinkedList类
Map接口
|———— HashMap类
|———— TreeMap类
|———— LinkedHashMap类
|———— Hashtable类

阅读更多

【Redis】Redis穿透、击穿、雪崩和数据一致性

1. 缓存穿透

访问一个不存在的key,缓存不起作用,请求会穿透到DB,流量大时DB会挂掉。

阅读更多

【Redis】深入学习Redis及集群

Redis本质上是一个Key-Value类型的内存数据库,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快的Key-Value DB。

阅读更多

【数据库优化】MySQL事务处理与并发控制

1. MySQL事务

  1. 事务: 数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;事务是一组不可再分割的操作集合(工作逻辑单元);

阅读更多