分类 编程.Golang 中的文章

Golang | http注解路由

Http服务器

Golang有一个很强大的官方http库了,使用上很方便。也有一些很强大的三方http框架, 比如gin,beego等等。 自以为,框架在提供便利,提升开发效率的同时,也限制了我们的想象力。 相对beego而言我更喜欢gin这样的简单高效框架,给我们提供了一些基础设施。剩下的有什么功能需要自己写进去就好了。

……

阅读全文

Golang | http注解路由

Http服务器

Golang有一个很强大的官方http库了,使用上很方便。也有一些很强大的三方http框架, 比如gin,beego等等。 自以为,框架在提供便利,提升开发效率的同时,也限制了我们的想象力。 相对beego而言我更喜欢gin这样的简单高效框架,给我们提供了一些基础设施。剩下的有什么功能需要自己写进去就好了。

……

阅读全文

Goang | Plugin插件热更

热更新

  1. 动态脚本更新 (php)

  2. 短链接无状态服务器热更 (http)

  3. 长连接有状态,数据跟逻辑分离

    • golang Plugin热更 (.so 动态库更新) —-逻辑热更
  4. 长连接有状态,在运维层面, 利用容器部署热更(docker, k8s)

    • 服务不接受新连接,处理完剩余连接的逻辑,主动关闭。由已经更新过的服务接收新连接处理逻辑。

golang插件更新

下面代码实现的需求:

……

阅读全文

Goang | Plugin插件热更

热更新

  1. 动态脚本更新 (php)

  2. 短链接无状态服务器热更 (http)

  3. 长连接有状态,数据跟逻辑分离

    • golang Plugin热更 (.so 动态库更新) —-逻辑热更
  4. 长连接有状态,在运维层面, 利用容器部署热更(docker, k8s)

    • 服务不接受新连接,处理完剩余连接的逻辑,主动关闭。由已经更新过的服务接收新连接处理逻辑。

golang插件更新

下面代码实现的需求:

……

阅读全文

Grpc | Token认证和自定义认证

概述

现在有个需求,需要在grpc的拦截器中,通过token进行身份认证。如果认证不通过则返回错误; 认证通过,则放行;

TLS是用作加密通讯通道的,与该需求无关。

Token认证

具体流程

  • 客户端通过账号密码登录服务器,登录成功服务器返回一个token给客户端。
  • 客户端携带token信息往服务器请求业务逻辑的接口,,服务器收到请求,解析验证token,验证通过,则放行。

协议文件

……

阅读全文

Grpc | Token认证和自定义认证

概述

现在有个需求,需要在grpc的拦截器中,通过token进行身份认证。如果认证不通过则返回错误; 认证通过,则放行;

TLS是用作加密通讯通道的,与该需求无关。

Token认证

具体流程

  • 客户端通过账号密码登录服务器,登录成功服务器返回一个token给客户端。
  • 客户端携带token信息往服务器请求业务逻辑的接口,,服务器收到请求,解析验证token,验证通过,则放行。

协议文件

……

阅读全文

Grpc | 通过SSL/TLS建立安全连接

使用golang的grpc库作为例子

grpc使用TLS建立安全连接需要有SAN证书, go 1.15 版本开始废弃 CommonName。

什么是SAN证书

SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。

制作SAN证书

一条指令生成ca证书

……

阅读全文

Grpc | 通过SSL/TLS建立安全连接

使用golang的grpc库作为例子

grpc使用TLS建立安全连接需要有SAN证书, go 1.15 版本开始废弃 CommonName。

什么是SAN证书

SAN(Subject Alternative Name) 是 SSL 标准 x509 中定义的一个扩展。使用了 SAN 字段的 SSL 证书,可以扩展此证书支持的域名,使得一个证书可以支持多个不同域名的解析。

制作SAN证书

一条指令生成ca证书

……

阅读全文

Golang | redis实现分布式锁

概述

网上有很多Golang操作redis的例子,我使用github.com/gomodule/redigo/redis包写一个关于redis分布式锁的问题。

redis分布式锁

锁需要的几个组件

  • 获取锁- 删除锁 分布式锁还需要
  • 给锁加上唯一id (只能获取和删除自己的锁)- 给锁加上过期时间 (防止死锁)

golang代码

推荐使用redis的连接池

……

阅读全文