Yaconf 乙個高效能的配置管理擴充套件

2022-05-01 12:24:09 字數 1149 閱讀 6438

鳥哥出品:

首先說說, 這個是幹啥的.

我見過很多的專案中, 用php檔案做配置的, 乙個config目錄下可能有十幾個甚至數十個.php配置檔案, 裡面都是各種各樣的array, 還有甚者會把一些詞典檔案(比如中文/英文對照)也放到配置中去. 這就導致配置檔案的解析耗費了很大的效能(誠然, 用了opcache能好點, 但是實際上還是有執行的過程).

除了php的, 還有用json的, yaml的, 乙個共同的特點就是這些配置的可讀性比較差. 另外, 他們也都要runtime解析.

config目錄往往和**在一起, 首先會有安全隱患(配置中往往有敏感資訊), 其次如果配置和**屬於乙個專案, 這就會導致配置的修改也要走**上線的流程.

一些資源配置檔案, 比如mysql/memcache的配置資訊, 這些內容本來是應該對開發透明的, 運維直接負責即可. 但是放到了**中就會導致, 運維如果要發起一些變更, 也要開發配合修改配置檔案上線.

所以, yaconf就是為了解決這些問題而生的乙個工具.

它使用單獨的乙個配置目錄(在yaconf.directory指定), 不和**在一起.

它在php啟動的時候, 處理所有的要處理的配置, 然後這些配置就會常駐記憶體, 隨著php的生命週期存亡. 避免了每次請求的時候解析配置檔案.

所有的配置內容都是immutable的, 這就可以借助於fork的cow, 降低記憶體占用, 並且在訪問配置的時候, 幾乎不需要任何的記憶體copy, 也不會有無謂的引用計數增減

最重要的, 配置目錄和**分離以後, 可以借助乙個配置管理後台, 來實現配置的統一化管理.

它支援豐富的配置型別, 包括字串, 陣列, 分節, 分節繼承, 並且還可以在配置中直接寫php的常量和環境變數等.

最重要的是, 它很簡單.

安裝:phpize

./configure --with-php-config=/usr/local/php/bin/php-config

make && make install

vim /usr/local/php/etc/php.ini

extension=yaconf

[yaconf]

yaconf.directory="/home/wwwroot/config"

yaconf.check_delay=60

重啟php-fpm

如何高效能的設計乙個測試用例?

前言 如果問乙個問題,如何設計測試用例,恐怕會貽笑大方,因為剛入測試這一行的同學也都能噼里啪啦說上十分鐘不歇氣。但是如果追問下去,比如專案快速迭代時怎樣讓測試用例保持有效新鮮?什麼是更高效的設計方式?恐怕能回答上來的人不多了。在如今的軟體迭代過程中,在測試用例上投入的大量時間和亟需提公升的研發效率正...

Beanstalkd乙個高效能分布式記憶體佇列系統

高效能離不開非同步,非同步離不開佇列,內部是producer consumer模型的原理。設計中的核心概念 job 乙個需要非同步處理的任務,是beanstalkd中得基本單元,需要放在乙個tube中 tube 乙個有名的任務佇列,用來儲存統一型別的job,是producer和consumer操作的...

乙個高效能無鎖非阻塞鍊錶佇列

這個是乙個用c 11標準實現的無鎖非阻塞鍊錶佇列,通過增加乙個dummy節點,解偶合煉表頭指標和尾指標。使得當只有乙個生產者和乙個消費者時,進隊和出隊都無需加鎖,進隊操作的是尾指標,出隊操作的是頭指標,互不干涉。對於多個生產者且單個消費者時,只需要對尾指標加鎖保護,而頭指標不需要加鎖。反之,對於單生...