-
超詳細的秒殺架構設計,運維,了解一下
秒殺系統相信很多人見過,比如京東或者淘寶的秒殺,小米手機的秒殺,那么秒殺系統的后臺是如何實現的呢?我們如何設計一個秒殺系統呢?對于秒殺系統應該考慮哪些問題?如何設計出健壯的秒殺系統?本文我們就來探討一下這個問題。 秒殺應該考慮哪些問題 超賣問題 分析秒殺的業務場景,最重要的有一點就是超賣問題,假如備貨只有100個,但是最終超賣了200,一般來講秒殺系統的價格都比較低,如果超賣將嚴重影響公司的財產利益,因此首當其沖的就是解決商品的超賣問題。 高并發 秒殺具有時間短、并發量大的特點,秒殺持續時間只有…
-
七步制作精簡鏡像
目錄 介紹 鏡像層(Layers) 制作步驟 lab-1:初始化構建 Redis 鏡像 lab-2:優化基礎鏡像 lab-3:串聯 Dockerfile 指令 lab-4:壓縮你的鏡像 lab-5:使用最精簡的 base image lab-6:提取動態鏈接的 .so 文件 lab-7:為 Go 應用構建精簡鏡像 總結 參考 介紹 前段時間網易蜂巢曾經推出蜂巢?Logo?T恤,用的正是 Docker 鏡像制作,最神奇的是,它最終的鏡像大小只有?585?字節。 有些鏡像都不是我們自己來打包的(比如…
-
用Python構建API的八大流行框架
本文將和您討論八種可將API的開發過程變得簡單且快捷的Python框架。其中,Hug和Eve等框架更適合于小型項目,而Django、Flask和Falcon則適合于大型的應用程序。 憑借著平緩的學習曲線和簡單直接的語法,Python在全球范圍內的受歡迎程度,正在呈指數級增長。該編碼語言往往可以被用于Web開發、軟件開發、數學計算、系統腳本、以及幾乎所有其他的領域。作為開發人員的首選語言,人們除了得益于它的跨平臺兼容性和代碼的壓縮能力,還可以通過Python框架,創建出強大的應用程序編程接口(AP…
-
如何用Python代碼發一個炫酷的朋友圈
相信很多朋友在發朋友圈的時候,都會發一些話語,有些還會配一張圖,但是普通的配圖怎么符合我們程序員的身份呢?發出去都覺得沒牌面,應該整點技術性的活。 今天給大家帶來一個項目,這個小項目只用50行代碼就能實現,它的名字叫做PIL(Python?Image?Library)。 其實這個項目要做的事情很簡單,就是把原來的一張圖切圖,變為9張圖,看著就有牌面了,成功霸屏。 那有的朋友就會問了,這也只是正方形的圖片,那我的圖片要是很長或者很寬,切不了9張圖,那怎么辦? 其實很簡單,只要把高和寬計算出來,然后…
-
一文搞定 | Linux 共享內存原理
在Linux系統中,每個進程都有獨立的虛擬內存空間,也就是說不同的進程訪問同一段虛擬內存地址所得到的數據是不一樣的,這是因為不同進程相同的虛擬內存地址會映射到不同的物理內存地址上。 但有時候為了讓不同進程之間進行通信,需要讓不同進程共享相同的物理內存,Linux通過 共享內存 來實現這個功能。下面先來介紹一下Linux系統的共享內存的使用。 共享內存使用 1. 獲取共享內存 要使用共享內存,首先需要使用 shmget() 函數獲取共享內存,shmget() 函數的原型如下: 參數 key 一般由…
-
5 個冷門但非常實用的 Kubectl 使用技巧,99% 的人都不知道
kubectl 是 K8s 官方附帶的命令行工具,可以方便的操作 K8s 集群。這篇文章主要介紹一些 kubectl 的別樣用法,希望讀者有一定基礎的 K8s 使用經驗。 有一篇文章也介紹了一些技巧,寫博客的時候正好搜到了,正好也分享出來吧。 Ready-to-use commands and tips for kubectl 打印當前使用的API 按狀態篩選容器以及刪除 這是我在這里學到的命令:Force Delete Evicted / Terminated Pods in Kubernet…
-
Kubernetes K8S之CPU和內存資源限制詳解
Pod資源限制 備注:CPU單位換算:100m CPU,100 milliCPU 和 0.1 CPU 都相同;精度不能超過 1m。1000m CPU = 1 CPU。 官網地址: https://kubernetes.io/zh/docs/tasks/configure-pod-container/assign-cpu-resource/ https://kubernetes.io/zh/docs/tasks/configure-pod-container/assign-memory-resou…
-
淺談 Golang 鎖的應用: sync包
Go 語言 sync 包中的鎖都在什么場景下用?怎么用?本文對 sync 包內的鎖做了梳理。 今天談一下鎖,以及 Go 里面 Sync 包里面自帶的各種鎖,說到鎖這個概念,在日常生活中,鎖是為了保護一些東西,比如門鎖、密碼箱鎖,可以理解對資源的保護。在編程里面,鎖也是為了保護資源,比如說對文件加鎖,同一時間只也許一個用戶修改,這種鎖一般叫作文件鎖。 實際開發中,鎖又可分為互斥鎖(排它鎖)、讀寫鎖、共享鎖、自旋鎖,甚至還有悲觀鎖、樂觀鎖這種說法。在 Mysql 數據庫里面鎖的應用更多,比如行鎖、表…
-
細說Redis分布式鎖
談起Redis鎖,下面三個,算是出現最多的高頻詞匯: Setnx Redlock Redisson Setnx 其實目前通常所說的Setnx命令,并非單指Redis的setnx key value這條命令。 一般代指Redis中對set命令加上nx參數進行使用,set這個命令,目前已經支持這么多參數可選: 當然了,就不在文章中默寫API了,基礎參數還有不清晰的,可以蹦到官網:https://redis.io/commands/set 上圖是筆者畫的Setnx大致原理,主要依托了它的key不存在才…
-
10 個瘋狂的 Python 項目創意
這些項目構想很有可能會讓你對這門神奇的語言產生興趣。最棒的是,你可以通過這些有趣但也具有挑戰性的項目來增強 Python 編程技能。 你知道 Python 是被稱為 全能編程語言 的嗎? 是的,它確實是,雖然不應該在每個項目中都使用它。 你可以使用它來創建桌面應用程序、游戲、移動應用程序、網站和系統軟件。它甚至是最適合用于實現 人工智能 和 機器學習 算法的語言。 因此,在過去的幾周里,我為 Python 開發人員收集了一些獨特的項目構想。這些項目構想很有可能會讓你對這門神奇的語言產生興趣。最棒…