![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GO网络框架
他们说快写一首情歌
这个作者很懒,什么都没留下…
展开
-
如何做好封装框架
如何做好封装框架封装原则如何封装请求和返回定义接口让封装更明确封装原则函数封装并不是一件很简单、很随意的事情。相反,如何封装出易用、可读性高的函数是非常需要精心考量的,框架中每个函数的参数、返回值、命名,都代表着我们作为作者在某个事情上的思考。 想要针对某个功能,封装出一系列比较完美的接口,更要我们从系统性的角度思考如何封装请求和返回在 context 这个数据结构中,封装“读取请求数据”和“封装返回数据”中的方法读取请求数据要读取请求数据包含哪些内容呢?HTTP 消息体分为两个部分:原创 2021-10-19 16:42:15 · 678 阅读 · 0 评论 -
关于控制器的优化
控制器的优化问题关于控制器的优化使用函数嵌套方式实现中间件使用 pipeline 思想改造中间件关于控制器的优化首先从代码功能分析,这个控制器像由两部分组成。一部分是业务逻辑,也就是 time.Sleep 函数所代表的逻辑,在实际生产过程中,这里会有很重的业务逻辑代码;而另一部分是非业务逻辑,比如创建 Context、通道等待 finish 信号等。很明显,这个非业务逻辑是非常通用的需求,可能在多个控制器中都会使用到。而且考虑复用性,这里只是写了一个控制器,那如果有多个控制器呢,我们难道要为每个控制器原创 2021-10-12 09:23:50 · 367 阅读 · 0 评论 -
路由规则匹配
路由规则设计路由路由设计和匹配规则修改文件路由HTTP请求包含请求头和请求体 请求体一般存放业务数据,请求头存放和请求状态有关的信息,比如User-Agent浏览器信息,Accept支持返回的文本类型RequestLine Method Method、Request-URI、HTTP-VersionRequest-URI 请求路径 浏览器域名外的剩余部分HTTP-Version 1.0/1.1/2.0GET /home.html HTTP/1.1Host: developer.mozilla原创 2021-10-11 14:58:49 · 534 阅读 · 0 评论 -
Context请求控制器
Context请求控制器添加上下文 设置超时时间观察官方库提供的函数Context数据结构分析context 标准库设计思路添加上下文 设置超时时间从主流程中我们知道(第三层关键结论),HTTP 服务会为每个请求创建一个 Goroutine 进行服务处理在服务处理的过程中,有可能就在本地执行业务逻辑,也有可能再去下游服务获取数据逻辑链条中,每个本地处理逻辑,或者下游服务请求节点,都有可能存在超时问题。而对于 HTTP 服务而言,超时往往是造成服务不可用、甚至系统瘫痪的罪魁祸首系统瘫痪也就是我们原创 2021-09-27 18:20:03 · 443 阅读 · 0 评论 -
手写网络库Go
如何手写网络库查询net/hhtp中所有对外库函数将对外库函数分类New/Set对象或者属性的设置Server 为服务端提供HTTP服务的函数Method 为客户端提供HTTP服务的函数Proxy 中转代理的函数查询net/http中的结构定义(模块)将结构定义分类构建HTTP客户端构建HTTP服务端构建HTTP服务端路由端构建HTTP传输对应的不同模块源码顺序阅读查询net/hhtp中所有对外库函数go doc net/http | grep "^func"func CanonicalHea原创 2021-09-24 16:28:00 · 331 阅读 · 0 评论