如果一個數據庫對外提供的服務,或者承載的業務很多時,你首先想到的肯定是拆分數據庫。
但是,拆分畢竟是有成本的,而且有時并不是所有的場景都適合拆分來解決。
如果多個業務混合在一起使用一個數據庫,就容易造成資源的爭搶。
那么不拆分的情況下,控制每個業務或者每個會話的資源使用呢?
docker資源隔離?要隔離應用使用數據庫的資源,首先要區分應用。
通常如果一個數據庫提供了多個業務服務時,會給每個業務創建不同的庫或者分配不同的用戶。
當然,如果你用了同一個庫,或者同一個數據庫,就分不清業務了嗎?
當然不是,你還可以從業務的來源IP區分。
如果業務部署在同一個IP上,就沒有辦法區分業務了吧?
當然也不是,你還可以通過application_name來區分業務。
PostgreSQL 是進程模式的,如果結合cgroup,就可以做到會話級別的資源隔離。
k8s資源隔離,客戶端向postmaster發起連接請求,postmaster fork一個backend process處理該連接請求,以及將來改客戶端的SQL請求。
根據前面區分來源應用的方法,找到對應的應用。(這個區分方法應該首先要存儲在數據庫的表中,或者使用函數的手段獲得)
根據應用于cgroup的映射關系,找到對應的cgroup,然后將這個PID寫入對應cgroup的tasks文件即可。
步驟
傳統應用資源隔離?祝大家玩得開心,歡迎隨時來 阿里云促膝長談 業務需求 ,恭候光臨。
阿里云的小伙伴們加油,努力做 最貼地氣的云數據庫 。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态