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

一、技术总结

1.Docker & Docker Compose

version: "3.9" 

services:
api:
image: api
environment:
- MONGO_URI=mongodb://admin:password@mongodb:27017/test?authSource=admin&readPreference=primary&ssl=false
- MONGO_DATABASE=demo
- REDIS_URI=redis:6379
networks:
- api_network
external_links:
- mongodb
- redis
scale: 5 dashboard:
image: dashboard
networks:
- api_network redis:
image: redis
networks:
- api_network
ports:
- 6379:6379 mongodb:
image: mongo:4.4.3
networks:
- api_network
ports:
- 27017:27017
environment:
- MONGO_INITDB_ROOT_USERNAME=admin
- MONGO_INITDB_ROOT_PASSWORD=password nginx:
image: nginx
ports:
- 80:80
volumes:
- $PWD/nginx.conf:/etc/nginx/nginx.conf
depends_on:
- api
- dashboard
networks:
- api_network reddit-trending:
image: web
environment:
- MONGO_URI=mongodb://admin:password@mongodb:27017/test?authSource=admin&readPreference=primary&ssl=false
- MONGO_DATABASE=demo2
networks:
- api_network networks:
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)

《使用Gin框架构建分布式应用》阅读笔记:p251-p271的更多相关文章

  1. CI框架源码阅读笔记5 基准测试 BenchMark.php

    上一篇博客(CI框架源码阅读笔记4 引导文件CodeIgniter.php)中,我们已经看到:CI中核心流程的核心功能都是由不同的组件来完成的.这些组件类似于一个一个单独的模块,不同的模块完成不同的功 ...

  2. CI框架源码阅读笔记4 引导文件CodeIgniter.php

    到了这里,终于进入CI框架的核心了.既然是“引导”文件,那么就是对用户的请求.参数等做相应的导向,让用户请求和数据流按照正确的线路各就各位.例如,用户的请求url: http://you.host.c ...

  3. CI框架源码阅读笔记3 全局函数Common.php

    从本篇开始,将深入CI框架的内部,一步步去探索这个框架的实现.结构和设计. Common.php文件定义了一系列的全局函数(一般来说,全局函数具有最高的加载优先权,因此大多数的框架中BootStrap ...

  4. CI框架源码阅读笔记2 一切的入口 index.php

    上一节(CI框架源码阅读笔记1 - 环境准备.基本术语和框架流程)中,我们提到了CI框架的基本流程,这里再次贴出流程图,以备参考: 作为CI框架的入口文件,源码阅读,自然由此开始.在源码阅读的过程中, ...

  5. CI框架源码阅读笔记1 - 环境准备、基本术语和框架流程

    最开始使用CI框架的时候,就打算写一个CI源码阅读的笔记系列,可惜虎头蛇尾,一直没有行动.最近项目少,总算是有了一些时间去写一些东西.于是准备将之前的一些笔记和经验记录下来,一方面权作备忘,另一方面时 ...

  6. CI框架源码阅读笔记9 CI的自动加载机制autoload

    本篇并不是对某一组件的详细源码分析,而只是简单的跟踪了下CI的autoload的基本流程.因此,可以看做是Loader组件的分析前篇. CI框架中,允许你配置autoload数组,这样,在你的应用程序 ...

  7. CI框架源码阅读笔记8 控制器Controller.php

    最近时间有些紧,源码阅读系列更新有些慢.鉴于Controller中代码比较少,本次Blog先更新该文件的源码分析. 在经过路由分发之后,实际的应用Controller接管用户的所有请求,并负责与用户数 ...

  8. CI框架源码阅读笔记6 扩展钩子 Hook.php

    CI框架允许你在不修改系统核心代码的基础上添加或者更改系统的核心功能(如重写缓存.输出等).例如,在系统开启hook的条件下(config.php中$config['enable_hooks'] = ...

  9. ****CI框架源码阅读笔记7 配置管理组件 Config.php

    http://blog.csdn.net/ohmygirl/article/details/41041597 一个灵活可控的应用程序中,必然会存在大量的可控参数(我们称为配置),例如在CI的主配置文件 ...

  10. CI框架源代码阅读笔记5 基准測试 BenchMark.php

    上一篇博客(CI框架源代码阅读笔记4 引导文件CodeIgniter.php)中.我们已经看到:CI中核心流程的核心功能都是由不同的组件来完毕的.这些组件类似于一个一个单独的模块,不同的模块完毕不同的 ...

随机推荐

  1. [COCI 2023/2024 #2] Zatopljenje 题解

    UPDATE on 2024.4.25 改掉奇怪压行码风,并稍作排版. 前言 题目链接:洛谷. 题目分析 首先发现区间中的个数等于 \(\texttt{高度大于 x 的位置的个数} - \texttt ...

  2. UITableView的原理——探究及重新实现代码

    转自简书,原文地址,本文主要探讨一些特殊细节,像视图重用这类最基本的原理可在源码里查看. 先前重新实现了一个list容器视图,由于Apple没有开源,在此分享过程中探索到的UITableView一些细 ...

  3. 用户案例 | Apache DolphinScheduler 离线调度在自如多业务场景下的应用与实践

    用户案例 | 自如 随着自如业务的快速发展,不断增长的调度任务和历史逾万的存量任务对平台稳定性提出了更高的要求.同时,众多非专业开发人员也需要一种更为"亲民"的调度平台使用体验. ...

  4. vue router动态添加路由报警告:router.addRoutes() is deprecated and has been removed in Vue Router 4. Use router.addRoute() instead.

    原因: 新版本router.addRoutes已废弃:使用 router.addRoute() 代替. //addRoutes的使用方法: router.addRoutes(newRoutes) // ...

  5. 性能测试面试题大曝光,让你如何迅速拿下 offer!

    性能测试面试题精选 1. 以前做过性能测试么?请结合例子具体说明性能测试的流程 面试考察点:性能测试的流程 首选做性能测试的需求分析,明确性能测试的目标.范围.场景和性能指标(如响应时间.吞吐量.并发 ...

  6. keepalived编译安装-麒麟v10Arm64

    环境信息 操作系统: Kylin Linux Advanced Server V10 (Lance) 架构:Arm keepalived版本:2.3.1 编译 wget https://www.kee ...

  7. Ynoi2016镜中的昆虫

    [Ynoi 2016] 镜中的昆虫 简化题意 给定长为 \(n\) 序列 \(a\) , 两种操作 \(m\) 次: 1 l r x : 将 \([l , r]\) 修改为 \(x\) 2 l r : ...

  8. Ubuntu 笔记本设置合盖不息屏

    编辑 logind.conf 文件 你可以通过编辑 /etc/systemd/logind.conf 文件来控制盖子关闭时的行为: 找到以下几行(如果不存在,可以手动添加): #HandleLidSw ...

  9. MacTeX 使用

    MacTeX 是一个 TeX Live 的 macOS 定制版本.它包括: TeX Live GUI 应用程序 Ghostscript 关于 MacTeX 的介绍可以查看 MacTex 主页 安装 b ...

  10. 用MySQL的GROUP_CONCAT函数轻松解决多表联查的聚合问题

    大家好呀,我是summo,最近遇到了一个功能需求,虽然也是CURD,但属于那种比较复杂一点的CURD,话不多说,我们先看一下需求. 需求如下: 有三张表,学生表.课程表.学生课程关联表,关联关系如下图 ...