本文是【Gin-API系列】的最后一篇文章,简单介绍如何在生产环境的部署架构和监控手段。 生产部署 部署架构 使用Nginx加Keepalived的方式搭建,可以达到高可用的效果,并可以横向扩容 如何升级 Nginx负载均衡配置增加健康检查机制 ...
参数设计 一套合格的API的服务需要规范的输入请求和标准的输出响应格式。 为了更规范的设计,也是为了代码的可读性和扩展性,我们需要对Http请求和响应做好模型设计。 请求 根据 Gin API系列 需求设计和功能规划 一 请求案例的设计, 我们在ip参数后面再增加一个参数oid来表示模型ID,只返回需要的模型model 响应 API的响应都需要统一格式,并维护各字段的文档解释 请求IP合法性检查 ...
2020-07-27 15:01 0 944 推荐指数:
本文是【Gin-API系列】的最后一篇文章,简单介绍如何在生产环境的部署架构和监控手段。 生产部署 部署架构 使用Nginx加Keepalived的方式搭建,可以达到高可用的效果,并可以横向扩容 如何升级 Nginx负载均衡配置增加健康检查机制 ...
场景需求 数据库存储2个模型,每个模型都有一个或多个IP字段,需要通过 Golang Http Api(Restful Api) 返回 IP 信息。 模型1 - 服务器 ID 主机名 IP 内存大小 磁盘大小 ...
生产环境的API服务我们都会部署在Linux服务器上,为了不受终端状态的影响,启动服务的时候会让服务在后台运行。那么如何让服务在后台运行呢,目前有2种常见的方法。 1、nohub 运行 表示忽略SIGHUP(挂断)信号,终端退出的时候所发起的挂断信号会被忽略。nohup一般会结合&参数 ...
在之前的文章介绍中我们已经完成了一个API服务的全链路请求设计。调用方式可以看Test目录的代码 重复的路由现象 截至目前我们只定义了一个路由(在main函数中),但现实中往往会定义多个路由实现多个API接口,而为了风格统一化(或是模块化、版本区分等原因),我们也往往会将多个路由归为一类 ...
为了能够更方便的获取请求相关参数,提高开发效率,我们可以基于请求的Content-Type识别请求数据类型并利用反射机制自动提取请求中QueryString、form表单、JSON、XML等参数到结构体中。 下面的示例代码演示了.ShouldBind()强大的功能,它能够基于请求自动提取JSON ...
日志是程序开发中必不可少的模块,同时也是日常运维定位故障的最重要环节之一。一般日志类的操作包括日志采集,日志查询,日志监控、日志统计等等。本文,我们将介绍日志模块在Gin中的使用。 Golang如何打印日志 日志打印需要满足几个条件 重定向到日志文件 区分日志级别,一般 ...
在完成中间件的介绍和日志中间件的代码后,我们的程序已经基本能正常跑通了,但如果要上生产,还少了一些必要的功能,例如鉴权、异常捕捉等。本章我们介绍如何编写鉴权中间件。 鉴权访问,说白了就是给用户的请求增加一些限制条件,过滤掉不符合要求的请求。完善的鉴权模块可以让我们的服务跑得更加安全,特别是 ...
本文我们介绍生产环境上如何通过捕捉异常recovery来完善程序设计和提高用户体验。 Golang异常处理 golang 的异常处理比较简单,通常都是在程序遇到异常崩溃panic之后通过defer调用延迟函数捕捉异常,并对异常信息进行输出和记录。 异常处理代码 通过Gin ...