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

embedded/2025/1/2 3:27:25/

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

可以删掉。

(2)external_links

如果每个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.ppmy.cn/embedded/134247.html

相关文章

移植 AWTK 到 纯血鸿蒙(HarmonyOS NEXT)系统 (0) - 序

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (0) - 序 前段时间纯血鸿蒙系统 HarmonyOS 5.0(又称 HarmonyOS NEXT)正式推出,这是继苹果 iOS 和安卓系统后,全球第三大移动操作系统。纯正国产操作系统登场,国人无不欢…

Qt的架构设计

Qt的架构设计灵活且模块化,主要分为以下几个层次和部分: 模块化架构 Qt被分为多个模块,每个模块负责特定的功能。重要模块包括: QtCore:提供基础的非GUI功能,如事件处理、信号与槽、数据结构、文件处理等…

分类算法——LightGBM 详解

LightGBM(Light Gradient Boosting Machine)是 Microsoft 提出的基于决策树算法的梯度提升框架。它具有高效、准确和高可扩展性的特点,能够在海量数据上快速训练模型,并在不牺牲精度的前提下提高处理速度。下面将从底层原理到源代…

504 Gateway Time-outopenresty

504 Gateway Time-out openresty 问题背景: 当自己点开知乎页面以后,发现官网没有出现任何问题,点击官网以后开始出现各种各样的报错! 一下是来源ai的介绍:(通过搜索这种形式帮助自己进行记忆)…

OceanBase数据库结合ETLCloud快速实现数据集成

一、背景 随着信息技术的迅猛发展和数据量的急剧增加,企业面临着前所未有的数据管理挑战。传统的数据库系统在处理大规模、多样化的数据时往往显得力不从心。因此,分布式数据库应运而生,以其优越的性能和扩展性逐渐成为新一代数据存储解决方…

单向数据流在 React 中的作用

文章目录 单向数据流在 React 中的作用什么是单向数据流?单向数据流的优势如何实现单向数据流1. 父组件传递 props2. 状态提升 结论 单向数据流在 React 中的作用 什么是单向数据流? 单向数据流是指数据在应用程序中只按照一个方向流动。在 React 中&a…

.NET 使用Expression构造多条件动态查询表达式树方法

1.创建需要的对象&#xff0c;如下代码: /// <summary> /// 查询条件 /// </summary> public class QueryCondition {/// <summary>/// 查询对象集合/// </summary>public List<QueryObject> QueryObjects { get; set; }/// <summary>///…

web文件包含include

php伪协议 在 PHP 中&#xff0c;伪协议&#xff08;Pseudo Protocols&#xff09; 也被称为 流包装器&#xff0c;这些伪协议以 php:// 开头&#xff0c;后面跟着一些参数&#xff0c;用于指定 要执行的操作 或 需要访问的资源。 伪协议表明这些协议并不是一个 真实的外部协议…