963 1 分钟

# 映射 精确值 如它们听起来那样精确。例如日期或者用户 ID,但字符串也可以表示精确值,例如用户名或邮箱地址。对于精确值来讲, Foo 和 foo 是不同的, 2014 和 2014-09-15 也是不同的。 精确值很容易查询。结果是二进制的:要么匹配查询,要么不匹配。这种查询很容易用 SQL 表示: WHERE name = "John Smith" AND user_id = 2 AND date >...
2k 2 分钟

# 并发处理 悲观并发控制 这种方法被关系型数据库广泛使用,它假定每个操作都会有冲突发生,因此阻塞访问资源以防止冲突。 一个典型的例子是读取一行数据之前先将其锁住,确保只有放置锁的线程能够对这行数据进行修改。 乐观并发控制 Elasticsearch 中使用的这种方法是假定冲突不可能发生,并且不会阻塞正在尝试的操作。 然而,如果源数据在读写当中被修改,更新将会失败。应用程序接下来将决定该如何解决冲突。 例如,可以重试更新、使用新的数据、或者将相关情况报告给用户。 Elasticsearch 默认使用乐观并发控制,每个文档都有一个 _version (版本)号,当文档被修改时版本号递增。...
9.7k 9 分钟

# 数据操作 # 集群健康 运行 _cat API curl -X GET "localhost:9200/_cat/health?v"返回内容: epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent1475247709 17:01:49 elasticsearch green 1 1 0 0 0 0 0 0 - 100.0%status...
1.8k 2 分钟

# 基础 # 安装 略 # 使用 demo 如果你正在使用 Java,在代码中你可以使用 Elasticsearch 内置的两个客户端: 节点客户端(Node client) 节点客户端作为一个非数据节点加入到本地集群中。换句话说,它本身不保存任何数据,但是它知道数据在集群中的哪个节点中,并且可以把请求转发到正确的节点。 传输客户端(Transport client) 轻量级的传输客户端可以将请求发送到远程集群。它本身不加入集群,但是它可以将请求转发到集群中的一个节点上。 两个 Java 客户端都是通过 9300 端口并使用 Elasticsearch 的原生 传输...
353 1 分钟

# Elasticsearch Elasticsearch: 权威指南 中文版 elastic 官网 # 简介 Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合: Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did-you-mean 的建议。 卫报 使用 Elasticsearch 将网络社交数据结合到访客日志中,为它的编辑们提供公众对于新文章的实时反馈。 Stack Overflow...
375 1 分钟

# LocalCache 存在本地的缓存 # 访问流程 1、应用程序输入需要写缓存的数据 2、读取 localcache 是否存在,如果不存在就去读下一个 3、返回数据 # 优点 相比 memcache 能进一步降低网络请求的开销 (5-10ms => 0.01ms) # 限制 比如说现在正在用的 yac localcache 存储容量有限 每个实例共享 16M key + 128M value 数据不保证强一致性,可能不同实例短时间内会获取到不同的 value 对于只允许请求一次的 api 结果 cache 不适用 不能主动 delete, LocalCache 分布在所有...
1.2k 1 分钟

1. 输入网址后,查询浏览器缓存 2. 查询浏览器 dns 缓存 3. 查询操作系统 dns 缓存 4. 请求 dns 服务器,查询 dns 服务器缓存 5. 获得 ip,静态资源走 cdn 缓存。动态数据走服务器 6. 如果配置了页面缓存,走页面缓存 7. 如果配置了本地缓存(localcache),走本地缓存 8. 如果配置了分布式缓存(如 redis 等等),走分布式缓存 9....
1.7k 2 分钟

# MemCache https://memcached.org # 简介 MemCache 是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。 MemCaChe 是一个存储键值对的 HashMap,在内存中对任意的数据使用的 key-value 存储。 # 访问流程 1、应用程序输入需要写缓存的数据 2、API 将 Key 输入路由算法模块,路由算法根据 Key 和 MemCache 集群服务器列表得到一台服务器编号 3、由服务器编号得到 MemCache 及其的 ip 地址和端口号 4、API...
594 1 分钟

# 进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 进程就可以视为程序的一个实例。 线程 一个进程之内可以分为一到多个线程。 一个线程就是一个指令流,将指令流中的一条条指令以一定的顺序交给 CPU 执行 Java 中,线程作为最小调度单位,进程作为资源分配的最小单位。 在 windows...
708 1 分钟

# 共享模型管程 两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗? static int counter = 0;public static void main(String[] args) throws InterruptedException {Thread t1 = new Thread(() -> {for (int i = 0; i < 5000; i++) {counter++;}},...
-->