正文
go语言如何做一个网站 go语言写网站
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
组件分享之后端组件——基于Go语言的HTML和CSS网站生成器Hugo
近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。
本节分享一个基于Go语言的HTML和CSS网站生成器 hugo ,它针对速度、易用性和可配置性进行了优化。Hugo 获取一个包含内容和模板的目录,并将它们呈现为一个完整的 HTML 网站。Hugo 依赖于 Markdown 文件和元数据的前端,你可以从任何目录运行 Hugo。这适用于您没有特权帐户的共享主机和其他系统。例如我们日常编写一些博客文章,进行快速生成一套静态页面进行分享时可以使用它来进行生成一套静态页面作为我们的博客部署基础。
它支持大量的主题模板,我们可以通过 进行选择相关的主题使用,有兴趣的小伙伴可以进行深入研究一下
go语言实现一个简单的简单网关
网关=反向代理+负载均衡+各种策略go语言如何做一个网站,技术实现也有多种多样go语言如何做一个网站,有基于 nginx 使用 lua go语言如何做一个网站的实现,比如 openresty、kong;也有基于 zuul go语言如何做一个网站的通用网关;还有就是 golang 的网关,比如 tyk。
这篇文章主要是讲如何基于 golang 实现一个简单的网关。
转自go语言如何做一个网站: troy.wang/docs/golang/posts/golang-gateway/
整理:go语言钟文文档:
启动两个后端 web 服务(代码)
这里使用命令行工具进行测试
具体代码
直接使用基础库 httputil 提供的NewSingleHostReverseProxy即可,返回的reverseProxy对象实现了serveHttp方法,因此可以直接作为 handler。
具体代码
director中定义回调函数,入参为*http.Request,决定如何构造向后端的请求,比如 host 是否向后传递,是否进行 url 重写,对于 header 的处理,后端 target 的选择等,都可以在这里完成。
director在这里具体做了:
modifyResponse中定义回调函数,入参为*http.Response,用于修改响应的信息,比如响应的 Body,响应的 Header 等信息。
最终依旧是返回一个ReverseProxy,然后将这个对象作为 handler 传入即可。
参考 2.2 中的NewSingleHostReverseProxy,只需要实现一个类似的、支持多 targets 的方法即可,具体实现见后面。
作为一个网关服务,在上面 2.3 的基础上,需要支持必要的负载均衡策略,比如:
随便 random 一个整数作为索引,然后取对应的地址即可,实现比较简单。
具体代码
使用curIndex进行累加计数,一旦超过 rss 数组的长度,则重置。
具体代码
轮询带权重,如果使用计数递减的方式,如果权重是5,1,1那么后端 rs 依次为a,a,a,a,a,b,c,a,a,a,a…,其中 a 后端会瞬间压力过大;参考 nginx 内部的加权轮询,或者应该称之为平滑加权轮询,思路是:
后端真实节点包含三个权重:
操作步骤:
具体代码
一致性 hash 算法,主要是用于分布式 cache 热点/命中问题;这里用于基于某 key 的 hash 值,路由到固定后端,但是只能是基本满足流量绑定,一旦后端目标节点故障,会自动平移到环上最近的那么个节点。
实现:
具体代码
每一种不同的负载均衡算法,只需要实现添加以及获取的接口即可。
然后使用工厂方法,根据传入的参数,决定使用哪种负载均衡策略。
具体代码
作为网关,中间件必不可少,这类包括请求响应的模式,一般称作洋葱模式,每一层都是中间件,一层层进去,然后一层层出来。
中间件的实现一般有两种,一种是使用数组,然后配合 index 计数;一种是链式调用。
具体代码
静态网站生成工具-hugo
前段时间使用docker搭建了一个wiki的网站,用于记录日常学习中的笔记,用了一段时间,功能很强大,但是编辑器不太熟悉,网站使用java开发的,功能很全面,插件多的时候就感觉越来越臃肿。曾经有段时间就不想使用它了,最近偶然发现一个静态网站的生成工具hugo,可以将markdown直接生成网站,部署到站点上作为自己的知识库或者博客,hugo是使用go语言开发的,使用起来非常方便,生成的网站可直接部署在Nginx、IIS等中间件上面供其他人访问,hugo还有很多漂亮的主题,大家可以选择自己喜欢的进行使用,下面介绍下 我安装使用hugo的经历和方法。
1)使用brew install命令安装
我的电脑是mac的,所以最方便的是直接用brew install hugo命令安装最为方便:
执行安装完成后执行hugo version 命令查看版本,确保安装成功
2)官网下载二进制包:解压后将二进制文件加入环境变量的方式安装。大家可以根据自己的操作系统,下载适合的安装包。
3)也可以下载源码 编译 运行,由于我本地的go版本是1.17的,而hugo的最新代码的最低要求是1.18,暂时还不想升级,所以源码编译的方式这里就不过多介绍,感兴趣的可以下载源码编译试试。
进入要创建网站的目录,执行一下命令
这样名称为test-blog的网站就建好了 ,
下载一个主题 可以在 官网上找到各种各样的主题
将主体添加至配置文件
打开content/posts目录下的index.md 文件进行编辑,页面的配置项说明参见官网
执行下面命令
成功以后就可以访问就可以访问网站了。
执行命令hugo -D 即可生成一个public的文件夹,其下面的内容即为静态网站的所有文件
这里使用nginx的docker镜像 进行部署,执行以下命令:
执行成功后就能通过http:localhost访问到静态网站了。
这个工具还有很多需要研究的地方,这里只是将简单的使用方法记录了一下,以后怎样使用才能使网站更加的方便,快捷、美观,还要花时间研究。有兴趣的小伙伴可以私信我一块研究。
go语言如何做一个网站的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言写网站、go语言如何做一个网站的信息别忘了在本站进行查找喔。