控制台开发

一般一个复杂些的软件都需要配套一个 Web 控制台,方便人类进行配置和管理。

一个 Web 控制台的开发说容易也很容易,说复杂也很复杂,主要是看想做成什么样子。简单有简单做法复杂有复杂做法。

我这里主要讲讲我的控制台是怎么做出来的,不讲细节了。

这里先展示下功能架构是如何的

控制台开发 - 图1

技术选型

为了统一技术栈,我并没有选择 Java 而是同样使用 OpenResty + MySQL + Redis 的结构。 目前 Redis 并不放太多数据,只放一些临时使用的需要持久化的数据,比如 Session,监控告警当前值。

Web页面渲染

由于几年前 vue 类的前端并不流行,我选择了使用 resty。template 做后端渲染。

后端框架

找了找后端框架相对有名成熟的是 lor 所以就使用了。另外添加了点模块,比如权限校验,请求参数校验。

webssh

目前使用的是 gotty 做能力实现,权限校验在 OpenResty 进行拦截判断

更新发布

最初我使用的是 ssh 完成应用更新的,后来发现 Ansible 更加的简便好用,也就使用 Ansible 来做更新发布了。

这里需要 着重介绍 的是,更新过程,如下:

  • 首先,更新分发规则到不更新的集群中;
  • 然后,执行更新和回退的;
  • 最后,也要用自动化手段验证这个集群更新是否成功。

这块后面讲。

工作流

工作流其实就是一个 ToDo List 顺序执行,主要在于配置好先后关系,依赖关系,顺序执行下去,减少人工操作带来的不确定性。和脚本差不多的样子。

k8s

使用 k8s 对系统进行云化,特别是内部私有云真的是很简单很方便。这里不得不安利一下了…

因为不适用分布式文件系统的情况下,一切都那么的简单明了。学习下网络模型,API 接口,k8s 的原理概念就好。

其他

其实一个控制台做起来是非常耗时的,一点界面调整,样式调整都要反复修改,或者接口修改。

考虑怎么展现比较合理又易用是需要很多思考的…

我这里由于是多年前的后端渲染模型,所以相对简单点,页面主要部分使用一个 div。

Get 后端渲染后的 html 页面插入这个 div 里面就完成主要界面展现了,虽然也在考虑使用 vue 实现,但是前端改变有点太大了不太划算。

更多其他什么的也不知道描述什么了。有想我写的联系我后面补充吧。