《用Gin框架構建分散式應用》學習第13天,p234-p250總結,總17頁。
一、技術總結
1.message broker
(1)RabbitMQ
書裡使用的是RabbitMQ(https://www.rabbitmq.com/),這裡補充一點說明:
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0.2
a、訪問管理頁面
從3.8版本開始,管理外掛(rabbitmq_management)預設不器用。需要先啟用才能使用訪問管理頁面。啟用方式:
docker exec -it rabbitmq bash
rabbitmq-plugins enable rabbitmq_management
b、預設帳號、密碼
如果啟動容器的時候未設定密碼,賬號、密碼預設是guest、guest。
c、各埠作用
client端通連線埠:5672
頁面管理訪問埠: 15672
服務間通訊埠:25672
d.管理頁面Overview > Totals 缺少圖
docker exec -it rabbitmq bash
cd /etc/rabbitmq/conf.d/
echo management_agent.disable_metrics_collector = false > 20-management_agent.disable_metrics_collector.conf
exit
docker restart rabbitmq
(2)amqp
書裡使用的go版本的rabbitmq是amqp,這個包已經不再維護了,改為使用amqp091-go。
2.8080:15672
docker run -d --name rabbitmq -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password -p 8080:15672 -p 5672:5672 rabbitmq:3-management
這裡不知道作者為什麼將8080埠對映到15672,然後Gin卻使用了5000埠。按理說Gin預設的埠是8080, 這裡應該用15672對映15672。
二、英語總結
1.loosly coupled services
p234, That's why we will separate the service logic into multiple loosely coupled services, and then scale them based on the incoming workload.
2.artifact
p248, It allows you to use multiple FROM statements in your Dockerfile and copy artifacts from one stage to another, leaving behind everything you don't need in the final image.
(1)artifact: arte("by skill") + factum("thing made"). c. an object, such as a tool that was made in the past.
三、其它
1.exits 和 exist混淆
當看到"--r : Automatically remove the container and its associated anonymous volumes when it exits"時,我一直以為"exist(存在)",然後執行命令“docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:4.0.2”時一直報錯,不是說docker run 的時候如果存在了同名容器就刪除嗎?讓我很是鬱悶。後面仔細一看,是“exits(退出)”,意思是當容器退出後,自動刪除容器及其掛載的卷。同時又犯了另一個錯誤,沒有注意到這不是後臺模式“detected mode”執行。
仔細想一想,之所以犯這樣的錯誤:
(1)太著急了。
想著要按時閱讀完,就一直往前趕,就容易疏忽。後面讓ChatGPT解釋的時候也還是不理解,直到ChatGPT舉例的時候提到“Because of the --rm option, once the container stops, it will be automatically removed”,——看到top瞬間恍然大悟,再去看原來那句話,是“exits(退出)”!是“exits(退出)”!是“exits(退出)”!
(2)對docker的執行不瞭解。
自己想要的是detected模式,竟然忽略了命令列缺少- d引數。當然,這也時刻提示自己,不要忘記自己的目標是什麼。
也可能是昨晚熬夜累了,Oh, my time! so sad~
四、參考資料
1. 程式設計
(1) Mohamed Labouardy,《Building Distributed Applications in Gin》:https://book.douban.com/subject/35610349
2. 英語
(1) Etymology Dictionary:https://www.etymonline.com
(2) Cambridge Dictionary:https://dictionary.cambridge.org
歡迎搜尋及關注:程式設計人(a_codists)