1. SpringBoot的默认配置文件是什么
对SpringBoot来说,虽然application.yml配置文件更加常见,但是其实默认配置文件是application.properties,当然其格式专可属以是properties也可以是yaml格式;
除此之外,其配置文件也可以是bootstrap.yml。这个配置文件是SpringCloud新增的启动配置文件,它的特点和用途:
- bootstrap比application优先加载
- 由于bootstrap比application更早加载,所以application不会被它覆盖
- 使用配置中心Spring Cloud Config时,需要在bootstrap中配置一下配置中心地址,从而实现从配置中心拉取配置项到当前服务中
如果你对默认配置文件是什么不理解,就去黑马程序员官网视频库看免费视频。
2. 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节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
3. spring boot admin 查看项目 log 文件报错怎么办
您好,如果您在使用Spring Boot Admin查看项目log文件时遇到报错,可以尝试以下方法:
1. 检查您的日志文件路径是否正确。如果路径不正确,您可以在application.yml中配置日志文件路径。
2. 检查您的日志级别是否正确。如果级别不正确,您可以在application.yml中配置日志级别。
3. 检查您的Spring Boot Admin版本是否最新。如果不是最新版本,请升级到最新版本。
4. springboot配置文件总结
springboot 本身支持多种灵活的配置方式,为开发 springboot 程序带来了很大的灵活性和扩展性,但是同时由于太灵活,经常会导致明明配置了相关属性,却没有生效。
本文总结了 springboot 配置文件的原理以及多个配置文件生效的顺序。
springboot 配置文件支持灵活的路径,以及灵活的文件名,用一个变量表达式总结如下:
部分源码如下:
当满足上述变量表达式的配置文件有多个时,会有一个配置的优先级。假设
上面每个条件组合起来,则最多有配置文件如下,且顺序从上到下:
获取属性时,按从上到下的顺序遍历由上述文件生成的属性资源对象 PropertySource ,如果遇到匹配的key直接返回。
总结一下:就是如果同一个key的属性只出现一次,则直接取该值即可。如果同一个key的属性出现多次,则取顺序靠前的属性资源对象。另外其中每个文件都是可选的。
需要注意的一点是:如果在同一个 location 下配置了多个文件名一样的文件,则只会取一个,比如在 classpath:/ ,有如下两个文件 application.yml :
则只会根据 classloader 的 classpath 列表,选取第一个出现的文件。因为 springboot 加载配置文件时最底层是使用的下面的方法:
这两个方法只会获取 classloader 类的 ucp 属性里面第一个匹配到的值。如果对 springboot 自身的机制不满意,想获取所有的classpath:/路径下面的 applicaiton.yml 文件,可以使用下面的方法:
本文总结了 springboot 配置文件的原理以及多个配置文件生效的顺序。如果存在增加了配置文件或者在配置文件里面增加了属性却没有生效,可以参考上面的 springboot 配置文件表达式和配置文件生效顺序进行排查。
后面还会有一篇文章讨论基于 springboot 配置原理如何实现自定义的配置读取方式。