首页 > 其他分享 >《使用Gin框架构建分布式应用》阅读笔记:p251-p271

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

时间:2024-10-30 09:33:23浏览次数:7  
标签:network p271 Nginx mongodb p251 分布式应用 nginx api networks

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

可以删掉。

如果每个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)

标签:network,p271,Nginx,mongodb,p251,分布式应用,nginx,api,networks
From: https://www.cnblogs.com/codists/p/18515090

相关文章

  • 《使用Gin框架构建分布式应用》阅读笔记:p127-p142
    《用Gin框架构建分布式应用》学习第9天,p127-p142总结,总计16页。一、技术总结1.Authentication方式汇总(1)APIkeysAPIkeys认证方式示例:func(handler*RecipesHandler)NewRecipeHandler(c*gin.Context){ //API-keys认证 value:=os.Getenv("X-API-KEY") log.Print......
  • 《使用Gin框架构建分布式应用》阅读笔记:p108-p126
    《用Gin框架构建分布式应用》学习第8天,p108-p126总结,总计18页。一、技术总结1.Redisevictionpolicy(1)什么是evictionpolicy?Theevictionpolicydetermineswhathappenswhenadatabasereachesitsmemorylimit.(2)配置示例在redis.conf中配置。maxmemory-policy......
  • 《使用Gin框架构建分布式应用》阅读笔记:p77-p87
    《用Gin框架构建分布式应用》学习第5天,p77-p87总结,总计11页。一、技术总结1.Go知识点(1)context2.on-premisessoftwarep80,AcontainerislikeaseparateOS,butnotvirtualized;itonlycontainsthedependenciesneededforthatoneapplication,whichmakesthe......
  • 洛谷P2513 逆序对数列
    Problem给定n,k,求得1~n中有多少种排列使得逆序对个数为k?(n,k<=1000)Solve考虑DP:设f[i][j]为i个数中逆序对数量为j的排列数量但因为我们并不知道我们这i个数到底是谁,难以通过以前的状态得到设f[i][j]为将i放入之前的排列后,逆序对数量为k的排列数此时我们发现可以确定前i-1......
  • P2710 数列/P2042 [NOI2005] 维护数列
    题意(以P2710为例)思路使用FHQ-Treap进行求解,清晰明了。对于insert,先将要插入的数建成一棵树,然后将这棵树放入FHQ-Treap中。对于delete,将要删除的树分离出来,然后把剩下的部分合并即可,将删除的树的树根丢到废弃节点的栈中以备以后使用(节约空间,不然MLE)。对于reverse,......
  • 洛谷 P2515 软件安装
    洛谷P2515软件安装题意现在我们的手头有\(N\)个软件,对于一个软件\(i\),它要占用\(W_i\)的磁盘空间,它的价值为\(V_i\)。我们希望从中选择一些软件安装到一台磁盘容量为\(M\)计算机上,使得这些软件的价值尽可能大(即\(V_i\)的和最大)。但是现在有个问题:软件之间存在依赖......
  • 逆序对数列(P2513) - 题解
    [HAOI2009]逆序对数列原题链接题目描述对于一个数列\(\{a_i\}\),如果有\(i<j\)且\(a_i>a_j\),那么我们称\(a_i\)与\(a_j\)为一对逆序对数。若对于任意一个由\(1\simn\)自然数组成的数列,可以很容易求出有多少个逆序对数。那么逆序对数为\(k\)的这样自然数数列到底......
  • RK3568驱动指南|第十六篇 SPI-第195章 实践:移植官方mcp2515驱动
    瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和MaliG522EE图形处理器。RK3568支持4K解码和1080P编码,支持SATA/PCIE/USB3.0外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568支持安卓11和linux系统,主要面向......
  • P2716 和谐的雪花
    这道题P2716和谐的雪花本质和P2216[HAOI2007]理想的正方形是一模一样的,评蓝有点高了。本题解解法为单调对列。当然,看题目,是可以使用ST表或者线段树之类的做。中心思想就是用单调队列维护固定区间内最大最小值,加上二分答案。根据题意,很容易想象到二分\(n\)的取值,剩下......
  • Java中的网络编程:构建稳健的分布式应用
            网络编程是Java开发中至关重要的一部分,特别是在构建分布式系统和网络应用程序时。Java提供了丰富的网络编程API和库,使开发者能够轻松创建各种网络应用。本文将介绍Java中的网络编程基础、常用的网络通信协议、以及如何利用Java构建稳健的分布式应用。####1.......