1、docker容器與傳統虛擬機的區別html
docker是在操做系統層面實現虛擬化,直接複用本地主機的操做系統,而傳統虛擬機是在硬件層面實現虛擬化。前端
2、docker基於C/S架構mysql
鏡像是構建docker的基石,用戶須要經過鏡像來運行本身的容器。nginx
Registry用來保存用戶構建的鏡像,分爲公有和私有(https://hub.docker.com)web
3、docker的安裝redis
-sudo yum update -sudo yum install -y yum-utils device-mapper-persistent-data lvm2 -sudo yum install docker-ce -docker -v 查看一下docker版本
docker服務器的開啓與關閉算法
鏡像操做sql
-docker images 查看全部鏡像 -docker pull 鏡像名稱 下載鏡像 -docker rmi 鏡像ID 刪除鏡像
容器相關命令docker
-docker ps 查看正在運行的容器 -docker ps –a - docker run -id --name=testscentos7 centos:7 啓動容器 -docker exec -it 容器名稱 (或者容器ID) /bin/bash 登陸容器 -docker stop 容器名稱(或者容器ID) -docker start 容器名稱(或者容器ID) -copy文件 -目錄掛載 -docker run -di -v /home:/home --name=mycentos322 centos:7 -docker inspect 容器id -查看容器信息 -docker rm id 刪除容器
其餘命令(https://www.cnblogs.com/xiaoyuanqujing/article/11774978.html)數據庫
-部署應用 -部署mysql -docker run -di --name=mysqltest -p 33309:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 -遷移與備份 -容器打包成鏡像 -docker commit django_3.7 django_3.7_img -Dockerfile -正常構建鏡像 docker build -t='xxxyyy' . WORKDIR /home/lqz -私有倉庫 -docker pull registry -docker run -di --name=registry123 -p 5000:5000 registry {"insecure-registries":["127.0.0.1:5000"]} -把鏡像傳到私有倉庫 -docker tag ooo 39.100.80.124:5000/ooo 打標籤 -docker push 39.100.80.124:5000/ooo 上傳
4、提升網站的併發量
-前端: -圖片 -七牛雲(cdn) -本身搭的文件存儲 -使用精靈圖 -前端緩存:過時時間 -動靜分離 -dns解析---》ip -負載均衡硬件 -nginx -集羣化的部署 -進入程序 -django是同步框架 -作異步任務:celery -併發執行 -數據索引優化---查詢速度高 -緩存(redis):雙寫一致性、緩存穿透,緩存雪崩 -主從--讀寫分離(django) -微服務 -服務拆分,用其它語言寫 -api網關 -服務間調用:resful接口 -rpc:遠程過程調用 -rpc框架:gRPC -阿里開源一個:Dubbo
5、正向代理與反向代理的區別(https://www.cnblogs.com/Anker/p/6056540.html)
正向代理:代理共享上網;客戶端代理權限管理
反向代理:保證內網安全,防止web攻擊;負載均衡
6、緩存穿透、緩存雪崩
通常的緩存系統,都是按照key去緩存查詢,若是不存在對應的value,就應該去後端系統查找(好比DB)。若是key對應的value是必定不存在的,
而且對該key併發請求量很大,就會對後端系統形成很大的壓力。這就叫作緩存穿透。 解決方案:1:對查詢結果爲空的狀況也進行緩存,緩存時間設置短一點,或者該key對應的數據insert了以後清理緩存。 2:對必定不存在的key進行過濾。能夠把全部的可能存在的key放到一個大的Bitmap中,查詢時經過該bitmap過濾。【感受應該用的很少吧】 當緩存服務器重啓或者大量緩存集中在某一個時間段失效,這樣在失效的時候,也會給後端系統(好比DB)帶來很大壓力。 解決方案:1:在緩存失效後,經過加鎖或者隊列來控制讀數據庫寫緩存的線程數量。好比對某個key只容許一個線程查詢數據和寫緩存,其餘線程等待。 2:不一樣的key,設置不一樣的過時時間,讓緩存失效的時間點儘可能均勻。 3:作二級緩存,A1爲原始緩存,A2爲拷貝緩存,A1失效時,能夠訪問A2,A1緩存失效時間設置爲短時間,A2設置爲長期(此點爲補充)
7、用redis實現分佈式鎖(https://www.cnblogs.com/liuqingzheng/p/11080501.html)
(1)獲取鎖的時候,使用setnx加鎖,並使用expire命令爲鎖添加一個超時時間,超過該時間則自動釋放鎖,鎖的value值爲一個隨機生成的UUID,經過此在釋放鎖的時候進行判斷。 (2)獲取鎖的時候還設置一個獲取的超時時間,若超過這個時間則放棄獲取鎖。 (3)釋放鎖的時候,經過UUID判斷是否是該鎖,如果該鎖,則執行delete進行鎖釋放。
8、分佈式id(雪花算法)
解決不一樣機器生成相同id問題(https://www.cnblogs.com/liuqingzheng/p/11074623.html)
9、數據庫主從(https://www.cnblogs.com/xiaoyuanqujing/articles/11796376.html)