《使用Gin框架构建分布式应用》阅读笔记:p251-p271

news/2024/10/30 9:39:02/文章来源:https://www.cnblogs.com/codists/p/18515090

《用Gin框架构建分布式应用》学习第14天,p251-p271总结,总21页。

一、技术总结

1.Docker & Docker Compose

version: "3.9" services:api:image: apienvironment:- MONGO_URI=mongodb://admin:password@mongodb:27017/test?authSource=admin&readPreference=primary&ssl=false- MONGO_DATABASE=demo- REDIS_URI=redis:6379networks:- api_networkexternal_links:- mongodb- redisscale: 5dashboard:image: dashboardnetworks:- api_networkredis:image: redisnetworks:- api_networkports:- 6379:6379mongodb:image: mongo:4.4.3networks:- api_networkports:- 27017:27017environment:- MONGO_INITDB_ROOT_USERNAME=admin- MONGO_INITDB_ROOT_PASSWORD=passwordnginx:image: nginxports:- 80:80volumes:- $PWD/nginx.conf:/etc/nginx/nginx.confdepends_on:- api- dashboardnetworks:- api_networkreddit-trending:image: webenvironment:- MONGO_URI=mongodb://admin:password@mongodb:27017/test?authSource=admin&readPreference=primary&ssl=false- MONGO_DATABASE=demo2networks:- api_networknetworks:api_network:

这里补充一些书上没有说明的:

(1)version

version字段在新版的Docker Compose中已弃用。例如上面的代码:

version: "3.9" 

可以删掉。

如果每个service都设置了相同的networks,那么external_links在新版的的 Docker Compose 中可以删除。例如上面的代码:

external_links:- mongodb- redis

可以删掉。

2.Round Robin算法

Round Robin算法是Nginx的默认算法,Nginx 官方文档给出的说明(https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/)是:

Round Robin – Requests are distributed evenly across the servers, with server weights taken into consideration. This method is used by default (there is no directive for enabling it)。

3.Nginx & Traefik

Nginx和Traefik属于同类软件,都用于负载均衡。书上介绍的是Nginx,本人工作中用的也是Nginx。默认使用的负载均衡算法是Round Robin。书上使用的是Docker 方式进行部署。

二、英语总结

1.topology

p251, The configuration specifies the environment variables and network topology that

the worker requires.

(1)topology: topos(“place”) + -logy("study")。c/u. study or places, structure of places,拓扑。

三、其它

阅读本书第14天,整本书已过半。书写得非常通俗易懂,统计了一下每天的“英语总结”,算下只遇到了22个生词,但是阅读速度(20页/天)算下来还是非常慢。这时候英语已经不是阻碍,阻碍是概念的理解和应用。举个例子,作者在Dockerfile里面设置了WORKDIR:

WORKDIR /go/src/github.com/api

单从字面意思上我们并不难理解,难理解的是:(1)WORKDIR的值设置为什么好?这里吐槽下,作者设置成/go/src/github.com/api,实际开发中我想没有多少人会使用github.com这样的名字作为项目的目录名称。(2)什么时候使用WORKDIR,什么时候不使用WORKDIR?(3)WORKDIR写在什么位置?

那么如何更好的去理解这里概念呢?这是本人的一些做法:(1)参与实际项目。这是最直接也是最快的方式,但也是最难的。因为一个人在实际工作中能做的往往就是一小部分,所以局限性很大。如果可以,最好是能参与一些开源项目。(2)多阅读。很多时候理解并不是“一步到位”的,而是“慢慢的”,你看这本书理解不了,再看一本书可能就理解了。

四、参考资料

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824019.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

极狐GitLab 签约某全球智能制造强企,保护企业核心资产,让智能制造更安全、高效

客户背景 该客户是全球一流的智能化、数字化、柔性化生产解决方案提供商,总部位于江苏,在国内外设有多家子公司以及几十家售后服务网点。该客户在全球的顶尖客户超过 30+,覆盖新能源电池、汽车以及医疗自动化等行业,集团现有员工 2000+,厂房面积150,000平米,拥有各项先进…

Data-Free,多目标域适应合并方案,简单又有效 | ECCV24

来源:晓飞的算法工程笔记 公众号,转载请注明出处论文: Training-Free Model Merging for Multi-target Domain Adaptation论文地址:https://arxiv.org/abs/2407.13771 论文代码:https://air-discover.github.io/ModelMerging创新点对域适应的场景解析模型中的模式连通性进行…

项目管理知识体系梳理

经常在做项目,但项目管理体系在大脑里面是混乱的,今天特意画一个图加深一下印象。关注公众号了解更多知识:

面试官:Spring Boot 控制层中,@Service 可以完全替代 @Controller 吗?90% 都会答错!

作者:毅航 来源:juejin.cn/post/7393533304505204787 在SpringBoot开发中,@Controller和@Service基本上是日常开发中使用的最频繁的两个注解。但你有没考虑过@Service代替@Controller注解来标注到控制层的场景?换言之,经过@Service标注的控制层能否实现将用户请求分发到服…

两台linux的文件传输

起因 本地拉取docker镜像timeout,然后就准备把阿里云上已经在运行的镜像打包下载下来。 指令1:rsync rsync 是一个非常强大的工具,用于文件同步和高效的数据传输。它可以用于备份、文件传输以及数据同步等多种场景。 rsync 的主要优点在于其高效性和灵活性,特别是在处理大量…

10 早期计算机如何编程

程序需要加载进入内存, 最早是纺织机利用穿孔纸卡进行编程,穿孔纸卡用在过人口普查,用于记录一条条数字,但机器只有汇总功能,汇总穿孔数目 后来机器功能增多,人需要一个控制面板执行不同操作, 最早是重新布线更换指令,后来有了插线板,控制面板成了可拔插,可以给机器插…

PbootCMS模板首页循环调用所有栏目和对应内容

{pboot:nav} 栏目链接:[nav:link] 栏目名称:[nav:name] {pboot:list scode=[nav:scode] num=4 order=date} 内容链接:[list:link] 内容名称:[list:title] 内容图片:[list:ico] 内容时间:[list:date style=Y-m-d] 内容描述:[list:description] {/pboot:list} {/pboot:nav…

PbootCMS自带的sitemap.xml增加tag标签链接

修改 SitemapModel.php 文件:打开 /apps/home/model/SitemapModel.php 文件 在 78 行后面增加以下代码:public function getSortTags($scode) {$join = array(array(ay_content_sort b, a.scode=b.scode, LEFT),array(ay_model c, b.mcode=c.mcode, LEFT));$scode_arr = arra…

PbootCMS 面包屑导航样式修改和自定义的设置方法

问题:PbootCMS面包屑导航样式修改和自定义的设置方法。 答案:面包屑调用:{pboot:position}自定义参数:separator=*:分隔符,默认为 >>。 separatoricon=*:分割图标,例如 separatoricon=fa fa-angle-double-right。 indextext=*:首页文本,默认为“首页”。 index…

Maximum execution time of 30 secon

这种问题出现在Web开发环境中,特别是PHP等脚本语言中,当某个脚本运行时间超过预设的最大执行时间(例如30秒)时,服务器会终止该脚本的执行以防止资源被长时间占用。 解决方案增加脚本的最大执行时间在PHP中,可以通过修改php.ini文件中的max_execution_time值来增加脚本的最…

工地货梯AI人数识别系统

工地货梯AI人数识别系统采用人体神经网络深度学习算法,工地货梯AI人数识别系统对升降机轿厢内的人数进行智能分析和识别,能够精确识别出升降机内的人数。系统可以实时监测升降机内的人数变化,并根据设定的门限值,当人数超过限制时自动触发图像抓取和报警功能。报警方式可以…

物品堆放限高监测系统

物品堆放限高监测系统采用神经网络深度学习算法,物品堆放限高监测系统能够实时监测物品堆放区域的状态。通过在现场安装监控摄像头,系统对摄像头拍摄的实时视频进行处理分析,识别并判断物品堆放的高度情况。当堆放超过限定的高度范围时,系统将立即触发语音告警功能。物品堆…