es68配置文件|Es Cluster 配置详解

|

① ESLint配置详解(一) – 超级深入详细

如果项目目录下有多个配置文件,ESLint 只会使用一个,优先级为: .eslintrc.js > .eslintrc > package.json ,一般我们都是在 .eslintrc.js 配置。 同时,如果配置文件里没有 “root”: true 这个属性,ESLint就会继续向外寻找配置文件,直到找到有 “root”: true 的为止,所有这些配置文件的规则都会被层叠应用。若有重复的属性配置,则离文件更近的配置文件具有更高的优先级。 当想要所有项目都遵循一个特定的约定时会很有用,但还是建议给项目根目录的 .eslintrc.js 加上 root: true

1.1 extends – Extending Configuration Files 一个ESLint配置文件,一旦扩展了(即从外部引入了其他配置包),就能继承另一个配置文件的所有属性(包括rules, plugins, and language option在内),然后通过merge合并/覆盖所有原本的配置。

extends 属性的值可以是:

“eslint:recommended” 这个扩展包帮我们启用了一系列核心规则,这些规则是在 rules页面 中被标记为 ✅ 的常见问题。

ESLint插件 是可以给ESLint添加很多扩展规则的npm包,它可以执行很多方法,包括但不限于 添加新规则 和 导出 可共享配置 。 在添加到配置文件 (如 .eslintrc.js ) 的 plugins 的 时候,可以省略插件包名的 eslint-plugin- 前缀

在 extends 中插件字符串值则可以是:

插件包名的格式一般是 eslint-plugin-<plugin-name> ,就像 eslint-plugin-prettier ; 也可能是含命名空间包的格式 @<scope>/eslint-plugin-<plugin-name> ,例如 @vue/eslint-config-prettier; 甚至 @<scope>/eslint-plugin ,如 @jquery/eslint-plugin 。

通过extends设置的配置包加载的时候,是递归的形式去查找配置文件(最终是一个导出的对象,详细看 ② ),然后一步步派生继承的。 例如: extends: [“foo”] ,然后对应的 eslint-config-foo 有 plugins: [“bar”] , ESLint 会先找到 ./node_moles/ 下的 eslint-plugin-bar , (而不是 ./node_moles/eslint-config-foo/node_moles/),更不会从祖先目录去查找。配置文件和基本配置中的每个插件都会唯一地解析。

按照上述规则,我们来梳理下 [“plugin:vue/essential”, “eslint:recommended”, “@vue/prettier”] (vue-cli4 + ESLint + prettier 的 默认extends值)的配置文件分别在哪里。仅帮助加深理解。

我们再去项目根目录的 ./node_moles 找 eslint-plugin-prettier 和 eslint-config-prettier 插件,然后得知,@vue/prettier最终导入了 ./node_moles/eslint-config-prettier/index.js 、 ./node_moles/eslint-config-prettier/vue.js 和 ./node_moles/eslint-plugin-prettier/eslint-plugin-prettier.js 的规则

parserOptions – Specifying Parser Options 指定你想要支持的 JavaScript 语言选项。默认支持 ECMAScript 5 语法。你可以覆盖该设置,以启用对 ECMAScript 其它版本和 JSX 的支持。

3.1 rules – Configuring Rules ESLint 拥有大量的规则。你可以通过配置插件添加更多规则。使用注释或配置文件修改你项目中要使用的规则。要改变一个规则,你必须将规则 ID 设置为下列值之一:

3.1.1 在文件注释里配置规则 (只在当前文件生效)

上面的例子, eqeqeq 规则被关闭, curly 规则被打开,且定义为错误级别。出于便于理解的考虑,可以用字符串值,如果很熟悉的话用对应的数字来定义也是一样的。

如果一个规则有额外的参数选项,你可以用数组字面量语法来指定它们,比如:

这条注释为规则 quotes 指定了 “double”选项。数组的第一项总是规则的严重程度(数字/字符串)

3.1.2 在配置文件配置规则

要配置定义在插件中的一个规则,你必须使用 插件名/规则ID 的形式。比如:

规则 plugin1/rule1 表示来自插件 plugin1 的 rule1 规则。当指定来自插件的规则时,确保删除 eslint-plugin- 前缀。ESLint 在内部只使用没有前缀的名称去定位规则。

4.1 parser – Specifying Parser 被指定的解析器必须是可以从它的配置文件中加载的Node模块。这意味着应该使用 npm 单独安装这个解析器包;它必须符合 parser interface 。

4.2 plugins – Configuring Plugins ESLint支持使用第三方插件。要使用插件,必须先用npm进行安装。 要在配置文件中配置插件,可以用 plugins 属性,它的值是包含插件名称的列表(数组)。其中,插件名可以省略 eslint-plugin- 前缀(如果有的话)。

插件是根据配置文件(如 eslintrc.js )解析的。换句话说,ESLint会像通过运行 require(&#39eslint-plugin-pluginname&#39) 一样加载我们配置在 eslintrc.js 中的插件。所以要保证在这个包在当前配置文件的./node_moles/下找得到。 连着 extends 属性讲比较清楚,因此其他已经在上面 1.1.2 – 插件具体是如何实现扩展配置的 讲过了。

避免文章冗长又碍可读性又分篇了,指路:➡️ ESLint配置详解(二) – 常用规则(Rules)集合

② Es Cluster 配置详解

elasticsearch.yml 服务配置文件 参数: 配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。 设置默认索引分片个数,默认为5片。Since elasticsearch 5.x index level settings can NOT be set on the nodes configuration like the elasticsearch.yaml, in system properties or command line arguments.In order to upgrade all indices the settings must be updated via the /${index}/_settings API. Unless all settings are dynamic all indices must be closed in order to apply the upgradeIndices created in the future should use index templates to set default values. Please ensure all required values are updated on all indices by executing: curl -XPUT ' http://localhost:9200/_all/_settings?preserve_existing=true ' -d '{ "index.number_of_replicas" : "1", "index.number_of_shards" : "7" }' 设置默认索引副本个数,默认为1个副本。 5.X版本以上不支持在配置文件里面配置。 节点名,默认随机指定一个name列表中名字,该列表在es的jar包中config文件夹里name.txt文件中,其中有很多作者添加的有趣名字。 指定该节点是否有资格被选举成为node,默认是true,es是默认集群中的第一台机器为master,如果这台机挂了就会重新选举master。 指定该节点是否存储索引数据,默认为trues 禁止自动创建索引 这个设置使删除只限于特定名称指向的数据,而不允许通过指定_all 或通配符来删除指定索引库。 设置配置文件的存储路径,默认是es根目录下的config文件夹。 设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开,例: path.data:/path/to/data1,/path/to/data2 设置临时文件的存储路径,默认是es根目录下的work文件夹。 设置日志文件的存储路径,默认是es根目录下的logs文件夹 设置插件的存放路径,默认是es根目录下的plugins文件夹 设置为true来锁住内存。因为当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEM和ES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,Linux下可以通过 ulimit-l unlimited 命令。 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0。 设置其它节点和该节点交互的ip地址,如果不设置它会自动判断,值必须是个真实的ip地址。 这个参数是用来同时设置bind_host和publish_host上面两个参数。 设置节点间交互的tcp端口,默认是9300。 设置是否压缩tcp传输时的数据,默认为false,不压缩。 设置对外服务的http端口,默认为9200。 设置内容的最大容量,默认100mb 是否使用http协议对外提供服务,默认为true,开启。 gateway的类型,默认为local即为本地文件系统,可以设置为本地文件系统,分布式文件系统,Hadoop的HDFS,和amazon的s3服务器,其它文件系统的设置方法下次再详细说。 设置这个集群中节点的数量,默认为2,一旦这N个节点启动,就会立即进行数据恢复。 预期在群集中的主节点数。一旦预期的主节点数加入集群,就会开始恢复本地分片。默认为0 预期在群集中的数据节点数。一旦预期数量的节点已加入群集,就会启动本地分片的恢复。默认为0 如果未达到预期的节点数,则恢复过程将等待配置的时间量,然后再尝试恢复。 设置初始化数据恢复进程的超时时间,默认是5分钟。 如果recover_after_time 持续时间超时,只要满足以下条件,恢复就会开始: 设置集群中N个节点启动时进行数据恢复,默认为1。意味着至少有一个节点,该集群才可用。 只要此许多数据或主节点已加入群集,即可恢复。 只要这么多主节点已加入群集,就可以恢复。 只要这么多数据节点已加入群集,就可以恢复。 初始化数据恢复时,并发恢复线程的个数,默认为4。 添加删除节点或负载均衡时并发恢复线程的个数,默认为4。 设置数据恢复时限制的带宽,如入100mb,默认为0,即无限制。 设置这个参数来限制从其它分片恢复数据时最大同时打开并发流的个数,默认为5。 设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4) 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错。 设置是否打开多播发现节点,默认是true。 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点


赞 (0)