Golang net/http 客户端快速入门
golang内置了非常多优秀的库,net/http是其中之一,net/http不只是一个http客户端,它还实现了服务端,鉴于它非常贴心的设计,基于net/http做一个web server是一件非常容易的事情,但是本文主要聚焦于http客户端相关的功能。
golang内置了非常多优秀的库,net/http是其中之一,net/http不只是一个http客户端,它还实现了服务端,鉴于它非常贴心的设计,基于net/http做一个web server是一件非常容易的事情,但是本文主要聚焦于http客户端相关的功能。
几乎所有程序都是可以配置的,这些配置信息一般以配置文件的方式存在,各编程语言有自己的配置管理方案,而Golang的一个非常流行和强大的配置管理库是viper, 是cobra作者写来跟cobra一起配合使用而编写的。
cobra也许是go语言现有最好的命令行框架了,在各大项目中皆有使用,比如最出名的kubernetes, 所以要写一个稍微复杂的命令行工具,使用cobra还是不错的,cobra内置了非常多有用的功能,包括但不限于,自动生成帮助文档, 生成命令行代码的脚手架工具, 智能提示等等。
typer的作者与著名项目FastAPI是同一个作者,作者擅长在已有库的基础上大幅度的提升用户体验,typer自然也不例外, 因为作者也大力提倡python的类型标注,所以typer的使用在Python 3.6+才能获得最佳体验。
网站搭建起来之后,总是要维护的,而网站的流量分析是其中一项比较重要的任务,通过网站的流量分析我们可以得到诸如"每天多少人访问?",“哪个页面访问的最多?”, “某个页面访问了多久?",“PC端多还是手机端多?“的答案。
都2023年了,搭建个网站绝不是太复杂的事情,重点是如何选择而已。
建站一般有四个选择。
全文搜索引擎有许多,其中最出名的是elasticsearch, 无论是性能还是体验都是最顶尖的,但是对小应用来不友好,因为小应用的硬件资源比较少,所以能够通过库/模块的方式内置在应用中会是比较好的选择,就像sqlite3一样。
无论什么项目只要涉及到多个用户的操作都会开始考虑权限控制, 权限管理是一个很常见部分,所以出现了单独处理这个部分的开源项目,即本文要介绍的casbin项目。
casbin支持很多的编程语言, 本文选择golang作为使用语言。
创建SSL证书是一个很无聊的过程, 偏偏有时候它又很重要, 但是无聊的事情实在让人乏味, 以后一定会忘记, 那就写一篇比较完全的文章来说明SSL证书创建问题留作以后复制粘贴吧。
虽然TLS跟SSL不是同一个东西, 但是就当下的语境而言, 两者基本没有什么区别。
如果你对自己的DNS有更高的要求那么你或许可以打造一个专属于自己的DNS, 并且利用这个DNS做一些反广告的操作,又因为这个DNS是用的DNS-Over-TLS(DOT)协议, 所以可以反毒化, 因为TLS的加密特性可以防止数据在传输过程中被篡改.
本文实现的apix网关代码结构基本上是借鉴了APISIX的源代码, 可以看做APISIX的一个极度缩减版本。本文的实现只依赖openresty镜像已有的库,不依赖额外的库,所以路由的实现非常简陋,也没有实现路由的持久化,但是大致实现了动态路由更新和转发, 插件机制。
apisix主要是lua脚本跟openresty(或者说nginx)的组合, 流量具体转发由nginx承载, 但是按照什么规则转发用lua脚本定义. apisix在nginx之上封装了非常多功能强大有用的特性, 提供丰富的流量管理功能,比如态调整upstream, 灰度发布, 流量熔断, 认证, 观测性等。
本文通过阅读CoreDNS的源代码来了解CoreDNS的内部机制, 通过对源代码的阅读可以让我们更好的理解并使用CoreDNS,之所以被称为粗解,是因为阅读的程度并没有太深,忽略了一些细节。
免责声明: 所有资源来源于网络,并不实际存储任何资源,也不参与任何与该片相关的视频录制、剪辑、上传。若无意中触及到了版权方利益,请及时给本文留言,笔者会及时删除相关资源。
这里的数据流指数据从前端流向后端的过程中途径的所有组件或者说服务,比如用户的http请求先到Nginx, 再到后端服务1, 再到发现服务,再到缓存服务,再到后端服务2, 然后是数据库,以及其他调用,总的来说就是一个请求进入的路径,如果将这样的一个过程可视化出来,我想是不错的,而这样的一个可视化也就可以做成一个监控的可视化,监控测试的连接是否可以完成的完成相应以及发现那个组件出现了问题。