本文主要介绍如何基于 Docker 生成容器化应用以及配置 Nginx 来实现 Web 服务的负载均衡,包含以下内容: Go 简易 Web 程序(hello world) 通过 Dockerfile 生成镜像 Nginx 配置 Docker Compose 多容器启动 Go Web 程序 本次配置使用 Go Web 程序作为后端服务,其作用是接收请求并返回“hello-world”,代码如下: // main.go package main import ( "log" "net/http" "os" ) func main() { logFile, err := os.OpenFile("/var/log/app.log",...

从网络上下载文件是开发过程中常用的需求,常规流程是:(1)发送请求;(2)接收响应并读取响应体内容;(3)保存到本地文件。本文包含的两个例子分别来自于参考 [1]参考 [2],在此基础上做了少量的修改。

Redis 的 list 和 stream:异步记录请求信息

在 Web 开发中,常常需要对请求信息进行记录,形成日志以便于后期评估应用的性能。请求信息通常包含客户端地址、请求的 URL、请求时间及请求执行时间。在程序中,可以以同步或异步的方式完成这一需求。同步方式是指请求信息写入日志文件后才返回数据给客户端,异步方式则是在返回数据之前以新线程或进程完成对请求信息的记录。开源的日志包有:

  1. Zap:出自 Uber 团队,以高性能著称;
  2. Zerolog:以易用性著称,支持 7 种日志级别;
  3. Logrus:兼容标准日志包格式,也是本人常用的日志包;
  4. apex/log:受 Logrus 启发,简化操作后的 Logrus;
  5. Log15:日志可读性强;

5 个日志包的详细介绍可以看《5 种结构化 Go 日志包对比分析》这篇文章。

Revel 是一个以高效率、高性能著称的 Go Web 框架,提供了路由、参数解析和验证、会话机制、模板机制、缓存和任务管理等诸多常用的 Web 开发功能。同时作为一个全栈的 MVC 框架, Revel 通过模块实现了组件的复用,因此可以大大提高开发者的效率。其高性能则是依托 Go 语言的性能,相信这个不必多说。但相较于其它职责相对单一的 Web 框架(如 Gin、go-restful),Revel 只能说是在保证性能的基础上尽可能地对开发者友好。

同源策略(Same-Origin Policy,SOP)是一种保护 Web 资源的安全机制,它限制了不同源之间的资源访问。需要说明的是,SOP 只作用于应用脚本,这意味着在 HTML 标签中可以引入不同源的图片、CSS 文件或动态加载的脚本文件(见验证 1)。