1、dubbo 通过shutdownhook 实现优雅停机,使用kill PID
2、es设计阶段调优
使用日期模板创建索引。
使用别名管理索引。
使用force_merge释放索引空间
冷热数据分开存储
2.1 写入调优
写入前副本数量设置为0
写入前关闭refreash_internal == -1,禁用刷新机制
采用bluk批量写入
尽量使用自动增长的id
2.2 查询调优
禁用wildcard
禁用批量terms
充分利用倒排索引,能keyword的尽量keyword
设置合理的路由机制
3 es索引多了怎么办
动态索引层面
存储层面 (冷热数据 force_merge 加 shrink 定期压缩)
部署层面
4 es如何实现master选举
前提条件:只有候选主节点的节点才能成为主节点(master:true)
最小主节点的是为了防止脑裂
s1:确认最小主节点数达标
s2:比较,先判断是否具有master资格,具备最小主节点的优先返回,如果两个都是最小主节点,则选用id较小的主节点
(1)Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节 点之间通过这个 RPC 来发现彼此)和 Unicast(单播模块包含一个主机列表以 控制哪些节点需要 ping 通)这两部分;
(2)对所有可以成为 master 的节点(node.master: true)根据 nodeId 字典 排序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第 0 位)节点,暂且认为它是 master 节点。 (3)如果对某个节点的投票数达到一定的值(可以成为 master 节点数 n/2+1) 并且该节点自己也选举自己,那这个节点就是 master。否则重新选举一直到满 足上述条件。
173
(4)补充:master 节点的职责主要包括集群、节点和索引的管理,不负责文档 级别的管理;data 节点可以关闭 http 功能*。
5 es搜索过程
query then fetch
6 lucence 内部结构是什么?
Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点。
7、在 Elasticsearch 中,是怎么根据一个词找到对应的倒排索引的?
(1)Lucene 的索引过程,就是按照全文检索的基本过程,将倒排表写成此文件 格式的过程。
(2)Lucene 的搜索过程,就是按照此文件格式将索引进去的信息读出来,然后 计算每篇文档打分(score)的过程。