一般一个复杂些的软件都需要配套一个 Web 控制台,方便人类进行配置和管理。
一个 Web 控制台的开发说容易也很容易,说复杂也很复杂,主要是看想做成什么样子。简单有简单做法复杂有复杂做法。
我这里主要讲讲我的控制台是怎么做出来的,不讲细节了。
这里先展示下功能架构是如何的
为了统一技术栈,我并没有选择 Java 而是同样使用 OpenResty + MySQL + Redis 的结构。 目前 Redis 并不放太多数据,只放一些临时使用的需要持久化的数据,比如 Session,监控告警当前值。
由于几年前 vue 类的前端并不流行,我选择了使用 resty。template 做后端渲染。
找了找后端框架相对有名成熟的是 lor 所以就使用了。另外添加了点模块,比如权限校验,请求参数校验。
目前使用的是 gotty 做能力实现,权限校验在 OpenResty 进行拦截判断
最初我使用的是 ssh 完成应用更新的,后来发现 Ansible 更加的简便好用,也就使用 Ansible 来做更新发布了。
这里需要 着重介绍 的是,更新过程,如下:
- 首先,更新分发规则到不更新的集群中;
- 然后,执行更新和回退的;
- 最后,也要用自动化手段验证这个集群更新是否成功。
这块后面讲。
工作流其实就是一个 ToDo List 顺序执行,主要在于配置好先后关系,依赖关系,顺序执行下去,减少人工操作带来的不确定性。和脚本差不多的样子。
使用 k8s 对系统进行云化,特别是内部私有云真的是很简单很方便。这里不得不安利一下了...
因为不适用分布式文件系统的情况下,一切都那么的简单明了。学习下网络模型,API 接口,k8s 的原理概念就好。
其实一个控制台做起来是非常耗时的,一点界面调整,样式调整都要反复修改,或者接口修改。
考虑怎么展现比较合理又易用是需要很多思考的...
我这里由于是多年前的后端渲染模型,所以相对简单点,页面主要部分使用一个 div。
Get 后端渲染后的 html 页面插入这个 div 里面就完成主要界面展现了,虽然也在考虑使用 vue 实现,但是前端改变有点太大了不太划算。
更多其他什么的也不知道描述什么了。有想我写的联系我后面补充吧。