Python 全栈系列51 - 全栈系列阶段性目标梳理

说明

今年搞结构(架构)这块花了比较多的心思,这块算是「必要条件」吧,毕竟没有软硬件基础搞算法也不可能。有了结构,可以极大的提升生产力;有了算法,才有值得去提升的生产力。结构和算法,就像是左手和右手。

目前的感觉是结构和算法大约是7:3的精力占比。按目前的进度,希望在2021年之前,完成结构上剩余的几块工作,重新回到算法为主的状态。算法和结构应该大约是7:3才对,毕竟算法领域我已经梳理了几块特别有意思但是又很花时间的工作。

目前悬而未决的几个任务

未完成的几个任务分别是版本、调度、配置、展现、交互和高效。

1 git – 版本

git的介绍就不说了,实践证明好用。

过去只是简单的用git去推和拉,有一定的熟悉度,未来1一个要解决:

  • 1 区别地使用公网和私网的git服务。苏网内每个新的项目都使用git命令去clone和更新。编辑和调测代码都是在主控机(m0, MacbookPro)上完成的。
  • 2 版本切换。
    • 1 用于测试和生产版本的切换,可能涉及到如何给每次变更起个规范的名称,方便切换分支。
    • 2 多版本横向比较。例如有三个变体的版本,通过多版本切换,可以使得这些变体版本同时运行,用于比较。
  • 3 子模块功能。用于组建更大的项目,更多人进行协同。

2 RabbitMQ – 调度

本来应该是用celery的,但发现还是不太好用。既然准备自己搞了,那么就需要做一些开发。

主要是基于延时消息队列:

  • 1 定时任务
  • 2 冗余任务的分发和管理

3 sh脚本应用 – 配置

使用脚本快速地对某台机器进行配置,例如装新机,或者迁移一个新的服务。

  • 1 单机脚本的整合。
  • 2 使用服务化的方式运行。启用一个web服务,使用接口的方式进行调度。(通过os或者paramiko传递执行脚本命令)

Python 全栈系列51 - 全栈系列阶段性目标梳理
以上是整体的结构图。新机器经过配置以后就可以加入自有算网了,文件的流通可以通过git。基于RabbitMQ实现冗余分发的调度和管理,确保服务的高可用(例如分给三个不同的主机计算)。最终提供的应用App可以使用git来控制发布的版本。

4 Web 页面快速生成 – 展现

  • 布局:按行布局,每行最多3列。
  • 元素:使用图数据库来构造/复用H5元素

5 前后端可视化 – 交互

DataTables, JQuery

  • 前后端即时交互
  • 前端批量操作,一次交互

6 ABW组合应用 – 高效

A = A Server 基于RabbitMQ,用于管理和存储任务
B = B Server 基于RabbitMQ,用于执行具体的计算任务
W = Web Server 为用户提供交互,可以和A、B交互(发布队列)

  • 1 模板化配置模板(docker-compose)
    • docker-compose scale B Server, 使得Worker可以有多个
  • 2 与datauri结合
    • 通过共同的文件夹,使得三者之间的数据天然互通

目的(效果):
0.新机器的配置非常快
1.在m0上ABW进行开发和测试,会比较清晰。
2.通过Web页面快速生成和交互方法,可以很快提供交互和服务。
3.项目通过内外网git进行存储和分发
4.通过Rabbit MQ(在A Server上)实现任务的分发、重试和校验等管理。

希望2021年前完成。