上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 55 下一页
摘要: 这里的索引文档应该理解为文档写入 ES,创建索引的过程。 文档写入包含:单文档写入和批量 bulk 写入,这里只解释一下:单文档写入流程。 记住官方文档中的这个图。 第一步:客户写集群某节点写入数据,发送请求。(如果没有指定路由/协调节点, 请求的节点扮演路由节点的角色。)第二步:节点 1 接受到请 阅读全文
posted @ 2020-06-20 09:39 咔啡 阅读(571) 评论(0) 推荐(0)
摘要: 协调节点默认使用文档 ID 参与计算(也支持通过 routing),以便为路由提供合适的分片。 shard = hash(document_id) % (num_of_primary_shards) 1、当分片所在的节点接收到来自协调节点的请求后,会将请求写入到 Memory Buffer,然后定时 阅读全文
posted @ 2020-06-20 09:37 咔啡 阅读(749) 评论(0) 推荐(0)
摘要: 1、关闭缓存 swap; 2、堆内存设置为:Min(节点内存/2, 32GB); 3、设置最大文件句柄数; 4、线程池+队列大小根据业务需要做调整; 5、磁盘存储 raid 方式——存储有条件使用 RAID10,增加单节点性能以及避免单节点存储故障。 阅读全文
posted @ 2020-06-20 09:27 咔啡 阅读(201) 评论(0) 推荐(0)
摘要: Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点。可以基于这个脉络展开一些。 最近面试一些公司,被问到的关于 Elasticsearch 和搜索引擎相关的问题,以及自己总结的回答。 阅读全文
posted @ 2020-06-20 09:23 咔啡 阅读(472) 评论(0) 推荐(0)
摘要: 1、Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节点之 间通过这个 RPC 来发现彼此)和 Unicast(单播模块包含一个主机列表以控制哪 些节点需要 ping 通)这两部分; 2、对所有可以成为 master 的节点(node.master: 阅读全文
posted @ 2020-06-19 21:21 咔啡 阅读(275) 评论(0) 推荐(0)
摘要: 特殊说明:Memcached 集群和 web 服务集群是不一样的,所有 Memcached 的数据总和才是数据库的数据。每台 Memcached 都是部分数据。(一台 memcached 的数据,就是一部分 mysql 数据库的数据) a、程序端实现 程序加载所有 mc 的 ip 列表,通过对 ke 阅读全文
posted @ 2020-06-19 21:10 咔啡 阅读(155) 评论(0) 推荐(0)
摘要: Marvel 让你可以很简单的通过 Kibana 监控 Elasticsearch。你可以实时查看你 的集群健康状态和性能,也可以分析过去的集群、索引和节点指标。 阅读全文
posted @ 2020-06-19 21:09 咔啡 阅读(374) 评论(0) 推荐(0)
摘要: 1、当集群 master 候选数量不小于 3 个时,可以通过设置最少投票通过数量(discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解决脑裂问题; 2、当候选数量为两个时,只能修改为唯一的一个 master 候选,其他作为 data节点,避免脑裂问题。 阅读全文
posted @ 2020-06-19 20:57 咔啡 阅读(679) 评论(0) 推荐(0)
摘要: 1、SEE:https://elasticsearch.cn/article/32 2、倒排词典的索引需要常驻内存,无法 GC,需要监控 data node 上 segmentmemory 增长趋势。 3、各类缓存,field cache, filter cache, indexing cache, 阅读全文
posted @ 2020-06-19 20:43 咔啡 阅读(355) 评论(0) 推荐(0)
摘要: SEE 基于 word2vec 和 Elasticsearch 实现个性化搜索 阅读全文
posted @ 2020-06-19 20:42 咔啡 阅读(234) 评论(0) 推荐(0)
摘要: 1、64 GB 内存的机器是非常理想的, 但是 32 GB 和 16 GB 机器也是很常见的。少于 8 GB 会适得其反。 2、如果你要在更快的 CPUs 和更多的核心之间选择,选择更多的核心更好。多个内核提供的额外并发远胜过稍微快一点点的时钟频率。 3、如果你负担得起 SSD,它将远远超出任何旋转 阅读全文
posted @ 2020-06-19 20:36 咔啡 阅读(404) 评论(0) 推荐(0)
摘要: 1、拼写纠错是基于编辑距离来实现;编辑距离是一种标准的方法,它用来表示经过插入、删除和替换操作从一个字符串转换到另外一个字符串的最小操作步数; 2、编辑距离的计算过程:比如要计算 batyu 和 beauty 的编辑距离,先创建一个7×8 的表(batyu 长度为 5,coffee 长度为 6,各加 阅读全文
posted @ 2020-06-19 20:35 咔啡 阅读(514) 评论(0) 推荐(0)
摘要: 想了解 ES 搜索的底层原理,不再只关注业务层面了。 解答: 搜索拆解为“query then fetch” 两个阶段。 query 阶段的目的:定位到位置,但不取。 步骤拆解如下: 1、假设一个索引数据有 5 主+1 副本 共 10 分片,一次请求会命中(主或者副本分片中)的一个。 2、每个分片在 阅读全文
posted @ 2020-06-19 20:33 咔啡 阅读(281) 评论(0) 推荐(0)
摘要: 1、搜索被执行成一个两阶段过程,我们称之为 Query Then Fetch; 2、在初始查询阶段时,查询会广播到索引中每一个分片拷贝(主分片或者副本分 片)。 每个分片在本地执行搜索并构建一个匹配文档的大小为 from + size 的 优先队列。 PS:在搜索的时候是会查询 Filesystem 阅读全文
posted @ 2020-06-19 20:32 咔啡 阅读(1531) 评论(0) 推荐(0)
摘要: MULTI、EXEC、DISCARD、WATCH 阅读全文
posted @ 2020-06-19 20:31 咔啡 阅读(400) 评论(0) 推荐(0)
摘要: 常用字典数据结构如下所示: Trie 的核心思想是空间换时间,利用字符串的公共前缀来降低查询时间的开销以 达到提高效率的目的。它有 3 个基本性质: 1、根节点不包含字符,除根节点外每一个节点都只包含一个字符。 2、从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。 3、每个节点的 阅读全文
posted @ 2020-06-19 20:30 咔啡 阅读(186) 评论(0) 推荐(0)
摘要: 没有身份认证机制!memcached 是运行在应用下层的软件(身份验证应该是应用 上层的职责)。memcached 的客户端和服务器端之所以是轻量级的,部分原因就 是完全没有实现身份验证机制。这样,memcached 可以很快地创建新连接,服务 器端也无需任何配置。 如果您希望限制访问,您可以使用防 阅读全文
posted @ 2020-06-18 11:18 咔啡 阅读(194) 评论(0) 推荐(0)
摘要: 首先,local cache 有许多与上面(query cache)相同的问题。local cache 能够利 用的内存容量受到(单台)服务器空闲内存空间的限制。不过,local第 109 页 共 485 页 cache 有一点比 memcached 和 query cache 都要好,那就是它不但 阅读全文
posted @ 2020-06-18 11:10 咔啡 阅读(302) 评论(0) 推荐(0)
摘要: 不处理! 在 memcached 节点失效的情况下,集群没有必要做任何容错处理。如 果发生了节点失效,应对的措施完全取决于用户。节点失效时,下面列出几种方 案供您选择: 忽略它! 在失效节点被恢复或替换之前,还有很多其他节点可以应对节 点失效带来的影响。 把失效的节点从节点列表中移除。做这个操作千万 阅读全文
posted @ 2020-06-18 10:20 咔啡 阅读(149) 评论(0) 推荐(0)
摘要: 线程就是定律(threads rule)!在 Steven Grimm 和 Facebook 的努力下, memcached 1.2 及更高版本拥有了多线程模式。多线程模式允许 memcached 能 够充分利用多个 CPU,并在 CPU 之间共享所有的缓存数据。memcached 使用一 种简单的 阅读全文
posted @ 2020-06-18 10:00 咔啡 阅读(483) 评论(0) 推荐(0)
摘要: 实际上,这是一个编译时选项。默认会使用内部的 slab 分配器。您确实确实应该 使用内建的 slab 分配器。最早的时候,memcached 只使用 malloc/free 来管理 内存。然而,这种方式不能与 OS 的内存管理以前很好地工作。反复地 malloc/free 造成了内存碎片,OS 最终 阅读全文
posted @ 2020-06-18 09:59 咔啡 阅读(138) 评论(0) 推荐(0)
摘要: 不实现!我们对这个问题感到很惊讶。Memcached 应该是应用的缓存层。它的设 计本身就不带有任何冗余机制。如果一个 memcached 节点失去了所有数据,您 应该可以从数据源(比如数据库)再次获取到数据。您应该特别注意,您的应用 应该可以容忍节点的失效。不要写一些糟糕的查询代码,寄希望于 me 阅读全文
posted @ 2020-06-18 09:56 咔啡 阅读(169) 评论(0) 推荐(0)
摘要: 1MB。如果你的数据大于 1MB,可以考虑在客户端压缩或拆分到多个 key 中。 为什么单个 item 的大小被限制在 1M byte 之内? 简单的回答:因为内存分配器的算法就是这样的。 详细的回答:Memcached 的内存存储引擎(引擎将来可插拔…),使用 slabs 来 管理内存。内存被分成 阅读全文
posted @ 2020-06-18 09:51 咔啡 阅读(454) 评论(0) 推荐(0)
摘要: key 的最大长度是 250 个字符。需要注意的是,250 是 memcached 服务器端内 部的限制,如果您使用的客户端支持”key 的前缀”或类似特性,那么 key(前缀 +原始 key)的最大长度是可以超过 250 个字符的。我们推荐使用使用较短的 key, 因为可以节省内存和带宽。 mem 阅读全文
posted @ 2020-06-18 09:49 咔啡 阅读(316) 评论(0) 推荐(0)
摘要: Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。 相关知识:Redis 提供 6 种数据淘汰策略: volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最 少使用的数据淘汰 volatile-ttl:从已设置过期时间的数据集( 阅读全文
posted @ 2020-06-18 09:42 咔啡 阅读(180) 评论(0) 推荐(0)
摘要: 在 SELECT 语句的列比较中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND,OR 或 LIKE 运算符。 阅读全文
posted @ 2020-06-18 09:41 咔啡 阅读(219) 评论(0) 推荐(0)
摘要: Datatime:以 YYYY-MM-DD HH:MM:SS 格式存储时期时间,精确到秒, 占用 8 个字节得存储空间,datatime 类型与时区无关 Timestamp:以时间戳格式存储,占用 4 个字节,范围小 1970-1-1 到 2038-1-19, 显示依赖于所指定得时区,默认在第一个列 阅读全文
posted @ 2020-06-18 09:40 咔啡 阅读(161) 评论(0) 推荐(0)
摘要: EXPIRE 和 PERSIST 命令。 阅读全文
posted @ 2020-06-18 09:38 咔啡 阅读(5245) 评论(0) 推荐(1)
摘要: Redis 并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。 阅读全文
posted @ 2020-06-18 09:37 咔啡 阅读(594) 评论(0) 推荐(0)
摘要: Redis 是完全开源免费的,遵守 BSD 协议,是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: Redis 支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再 次加载进行使用。 Redis 不仅仅支持简单的 key 阅读全文
posted @ 2020-06-18 09:35 咔啡 阅读(135) 评论(0) 推荐(0)
摘要: 把 memcached 引入应用中,还是需要不少工作量的。MySQL 有个使用方便的 query cache,可以自动地缓存 SQL 查询的结果,被缓存的 SQL 查询可以被反复 地快速执行。Memcached 与之相比,怎么样呢?MySQL 的 query cache 是集中 式的,连接到该 qu 阅读全文
posted @ 2020-06-18 09:19 咔啡 阅读(182) 评论(0) 推荐(0)
摘要: Redis 提供两种持久化机制 RDB 和 AOF 机制: 1、RDBRedis DataBase)持久化方式: 是指用数据集快照的方式半持久化模式) 记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化 结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。 优点: 阅读全文
posted @ 2020-06-18 09:14 咔啡 阅读(1166) 评论(0) 推荐(0)
摘要: 1、Redis 不仅仅支持简单的 k/v 类型的数据,同时还提供 list,set,zset,hash 等数据结构的存储。而 memcache 只支持简单数据类型,需要客户端自己处理复 杂对象 2、Redis 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可 以再次加载进行使用(PS: 阅读全文
posted @ 2020-06-18 09:11 咔啡 阅读(144) 评论(0) 推荐(0)
摘要: volatile-lru:从已设置过期时间的数据集(server.db[i].expires)中挑选最近最 少使用的数据淘汰 volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过 期的数据淘汰 volatile-random:从已设置过期时间的数 阅读全文
posted @ 2020-06-18 08:44 咔啡 阅读(1180) 评论(0) 推荐(0)
摘要: a、完全基于内存缓存的 b、节点之间相互独立 c、C/S 模式架构,C 语言编写,总共 2000 行代码。 d、异步I/O 模型,使用 libevent 作为事件通知机制。 e、被缓存的数据以 key/value 键值对形式存在的。 f、全部数据存放于内存中,无持久性存储的设计,重启服务器,内存里的 阅读全文
posted @ 2020-06-18 08:19 咔啡 阅读(183) 评论(0) 推荐(0)
摘要: Session 是运行在一台服务器上的,所有的访问都会到达我们的唯一服务器上,这 样我们可以根据客户端传来的 sessionID,来获取 session,或在对应 Session 不 存在的情况下(session 生命周期到了/用户第一次登录),创建一个新的 Session; 但是,如果我们在集群环 阅读全文
posted @ 2020-06-18 08:12 咔啡 阅读(314) 评论(0) 推荐(0)
摘要: 512M 阅读全文
posted @ 2020-06-18 08:09 咔啡 阅读(1558) 评论(0) 推荐(0)
摘要: Redis 支持五种数据类型:string(字符串),hash(哈希),list(列表), set(集合)及 zsetsorted set:有序集合)。 我们实际项目中比较常用的是 string,hash 如果你是 Redis 中高级用户,还需要 加上下面几种数据结构 HyperLogLog、Geo 阅读全文
posted @ 2020-06-18 07:38 咔啡 阅读(119) 评论(0) 推荐(0)
摘要: 1、速度快,因为数据存在内存中,类似于 HashMap,HashMap 的优势就是查 找和操作的时间复杂度都是 O1) 2、支持丰富数据类型,支持 string,list,set,Zset,hash 等 3、支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行, 要么全部不执行 4、丰 阅读全文
posted @ 2020-06-18 07:25 咔啡 阅读(171) 评论(0) 推荐(0)
摘要: 1、存储方式 Memecache 把数据全部存在内存之中,断电后会挂掉,数据不能 超过内存大小。 Redis 有部份存在硬盘上,这样能保证数据的持久性。 2、数据支持类型 Memcache 对数据类型支持相对简单。 Redis 有复杂的数据类 型。 3、使用底层模型不同 它们之间底层实现方式 以及与 阅读全文
posted @ 2020-06-18 07:04 咔啡 阅读(62) 评论(0) 推荐(0)
上一页 1 ··· 35 36 37 38 39 40 41 42 43 ··· 55 下一页