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 配置原理如何實現自定義的配置讀取方式。