自從Docker在2013年初上線以來,就與程序員及系統管理員之間產生了一種愛恨交加的奇妙關係。雖然與我交談過的一些經驗豐富的的開發人員都非常不喜歡容器化(稍後會詳細介紹), 但是為什麼許多大公司,包括eBay、Twitter、Spotify和Lyft在內,都在他們的生產環境中採用了Docker呢?
Docker究竟是做什麼的呢?
不知道您是否曾使用過VMware、VirtualBox、Parallels或任何其他的虛擬化軟體呢?Docker和這些軟體差不多(儘管...
閱讀全文
Fatal Error:Allowed memory size of xxxxxx bytes exhausted,相信大家在伺服器上會經常看到這個報錯,這個究竟是什麼意思?要如何解決呢?
伺服器很多自動任務的php腳本佔用服務內存過多,並且程序不在運行了。
解決方法:
在運行PHP程序,通常會遇到「Fatal Error:Allowed memory size of xxxxxx bytes exhausted」的錯誤, 這個意味著PHP腳本使用了過多的內存,並超出了系統對其設置的允許最大內存。解決這...
閱讀全文
和 Flexvolume 類似,CSI 也是為第三方存儲提供數據卷實現的抽象介面。
有了 Flexvolume,為何還要 CSI 呢?
Flexvolume 只是給 kubernetes 這一個編排系統來使用的,而 CSI 可以滿足不同編排系統的需求,比如 Mesos,Swarm。
其次 CSI 是容器化部署,可以減少環境依賴,增強安全性,豐富插件的功能。我們知道,Flexvolume 是在 host 空間一個二進位文件,執行 Flexvolum 時相當於執行了本地的一個 shell 命令,...
閱讀全文
Flexvolume 是 Volume Plugins 的一個擴展,主要實現 Attach/Detach/Mount/Unmount 這些介面。我們知道這些功能本是由 Volume Plugins 實現的,但是對於某些存儲類型,我們需要將其擴展到 Volume Plugins 以外,所以我們需要把介面的具體實現放到外面。
我們可以看到,Volume Plugins 其實包含了一部分 Flexvolume 的實現代碼,但這部分代碼其實只有一個 「Proxy」的功能。
比如當 AD Controller 調用插件的一個 Atta...
閱讀全文
容器存儲是 Kubernetes 系統中提供數據持久化的基礎組件,是實現有狀態服務的重要保證。Kubernetes 默認提供了主流的存儲卷接入方案(In-Tree),同時也提供了插件機制(Out-Of-Tree),允許其他類型的存儲服務接入 Kubernetes 系統服務。本文將從 Kubernetes 存儲架構、存儲插件原理、實現等方面進行講解,希望大家有所收穫。
Kubernetes 存儲體系架構
引例: 在 Kubernetes 中掛載一個 Volume
首先以一個 Volume ...
閱讀全文
Charles 是一款運行在 PC 端的 Web 代理工具,它支持 Windows,Mac,Linux 操作系統。通過配置代理,Charles 可以記錄和展示我們的設備和 Internet 之間交流的所有數據。因此使用它我們可以調試分析我們的應用程序介面,抓取介面傳輸的數據。
Charles主要具備如下特色功能:
支持 Https 協議;
限制帶寬,模擬延遲效果;
支持 JSON 和 XML 格式化展示效果;
樹形展示數據消息;
重發網路請求;
更改...
閱讀全文
有一天隔壁組的小王灰頭土臉的跑過來,問我說:「李哥,你會設計微服務網關係統嗎?」。我一愣,小王怎麼突然問這麼抽象的問題,關鍵是我們最近也沒有這樣的需求。吃午飯的時候,在我旁敲側擊的追問下,小王招供了,原來小王偷偷跑去阿里面試了。技術一面挺順利的,結果在技術二面的時候卡住了,面試官問了小王關於網關的問題。對話大致如下:
面試官:「你們的微服務有統一的網關嗎?」。
小王:「有呀,我們使用了 Sprin...
閱讀全文
你已經知道管程 synchronized 是通過鎖對象所關聯的 Monitor 對象的計數來標識線程對鎖的佔有狀態,那麼你知道 ReentrantLock 是如何來控制鎖的佔有狀態嗎?
Lock 鎖採用了與 Monitor 對象計數完全不同的一種方式,它依賴了並發包中的 AbstractQueuedSynchronizer (隊列同步器簡稱 AQS ) 來實現在多線程情況下對鎖狀態的控制。那麼 AQS 是如何保證在多線程場景中鎖狀態可以正常控制呢。
主要使用了如下 3 個技術點:...
閱讀全文
ConcurrentHashMap 是如何進行管理它的容量的,也就是當我們調用它的 size 方法的時候發生了什麼?
畢竟是要支持並發,ConcurrentHashMap 的擴容操作比較複雜,我們將從以下幾點來帶討論一下它的擴容。
觸發擴容
1. 添加新元素後,元素個數達到擴容閾值觸發擴容。
2. 調用 putAll 方法,發現容量不足以容納所有元素時候觸發擴容。
3. 某個槽內的鏈表長度達到 8,但是數組長度小於 64 時候觸發擴容。
...
閱讀全文
生成模型和遷移文件
php artisan make:model Models/Shoping/Category -m
app/Models/Shoping/Category.php
< ?php
namespace App\Models\Shoping;
use Encore\Admin\Traits\AdminBuilder;
use Encore\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;
/**
*
* Class Category
* @package App\Models\Shoping
*/
class Category extends M...
閱讀全文