《用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)


codists
4 声望2 粉丝

Life is short, You need Python