七叶笔记 » golang编程 » 一个Golang的Gateway

一个Golang的Gateway

Spring cloud里有springcloud-gateway组件, 在 java 进行 微服务 开发中,通过gateway反向代理的功能,实现API网关管理的功能, go lang里也有一些Gateway产品, 纯属练手,自己也准备做个Golang的Gateway组件。

打算分成两个部分,一个是后台的gateway服务,一个是提供管理功能的gateway的界面管理Gateway-UIManager。

后台gateway为了得到的提高响应的速度,没有使用 Go 自带的http包,使用fasthttp作为http的通讯底层,在响应的性能上,在OPS毕竟有一定的差距,gateway提供简单的限流,熔断,负载均衡的功能处理,使用etcd作为服务治理和配置管理。

Gateway-UIManager也是使用fasthttp提供http服务,使用fasthttp-router实现请求路由,使用etcd作为key-value的数据保存,采用前后端分离的技术,前端没有使用VUE,使用的是做企业管理系统的CubeUI库, 此Cubeui不是滴滴的基于Vue的CubeUI,始终觉得VUE做互联网的项目还行,企业系统管理的话,在组件功能性上还是比较弱。当然对Vue不是特别熟悉也是一个主因

截了几个用CubeUI做的系统的几个图

详细的CubeUI的截图可以访问 , 用这个CubeUI的前台组件结合自己的SpringCloud的微服务开发架构,写了不少的管理系统。

目前Gateway的后台基本上已经实现了,在完成Gateway-UIManager的前台部分的功能, 在实现前台的部分,考虑到Go自带的Json包,过多的反射导致性能的损耗,研究了下 fastjson 的源码, fastjson,主要是以parse为主要功能,所以在业务使用中,对应到model上,操作比较麻烦,就在fast json 的基础上,增加了一些Unmarshel的功能函数,这样在解析前台的json数据的过程中,既能性能高,同时又有比较好的易用性。 这个项目已经放到 GitHub 上去了, 项目地址

在使用Etcd的过程中,对Etcd的使用也进行了一些功能的封装,这个还没有独立出一个项目,后面会把这块对立的整理成一个项目进行发布。

在Gateway和Gateway-UIManager的项目中,还是用了boot4go的其他子项目

log4go

boot4go-proxy

expression4go

boot4go

上几个已经完成的前提功能

后面会慢慢的不断更新这个项目

相关文章