抄写一个简单的Golang中间件

Posted 企业与信息安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抄写一个简单的Golang中间件相关的知识,希望对你有一定的参考价值。


以上为这个简单的中间件的简要结构,那我们先来看下其中的核心部分,即承担中间件的部分。



Chain里面可以由多个method运行(参数中的...代表了可以传递多个参数),每个method都是一个中间件,在这里的中间件就是第一张图中最上面的logging函数。更究其根本能运行是因为http提供了HandleFunc,因此使得函数可以处理http Request。 


下面看下这个logging中间件的具体实现:


传递Request的引用进来,进行操作。正常情况下的其他中间件会针对Request进行处理,而此例中仅仅进行了日志记录。


可以想象为中间件为工厂上的流水线,一个Request过来,不同的中间件按照先后顺序开始对Request加工。日志记录,接口鉴权,安全性检测,数据响应等等。所以也可以延伸出来一个新的问题,那么就是API Gateway和API Middleware的区别在哪里?


最后,不妨用wrk测一下写了个中间件之后对性能的影响。一般在公司中,接口QPS的95%和90%数值下的cpu占用资源也会作为衡量的标准之一。






以上是关于抄写一个简单的Golang中间件的主要内容,如果未能解决你的问题,请参考以下文章

Golang | Gin 简单使用

golang使用Nsq

Golang Web入门:如何设计API

Golang Web入门:如何设计API

天池中间件大赛Golang版Service Mesh思路分享

Golang 在 SmartX 的实践(含代码示例)