首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >如何快速搭积木式构建一个web应用

如何快速搭积木式构建一个web应用

作者头像
用户2936994
发布于 2022-01-07 16:33:34
发布于 2022-01-07 16:33:34
7700
举报
文章被收录于专栏:祝威廉祝威廉

之前写了篇文章大致说明了这个插件框架的设计理念。阿里这次通过他们的产品“宜搭”(据传一两天)就给卫健委搭建了一个联控平台,可见快速开发的重要性。

这次目标

不做任何开发,通过已有插件,组装一个类似maven仓库的服务。

工作流程

大致流程如下:

  1. 安装命令行工具
  2. 配置数据库(两个)
  3. 创建&启动应用容器
  4. 安装插件
  5. 配置插件对应的数据库

首先确保你有python3/JDK8基础环境。

安装命令行工具

代码语言:javascript
复制
pip install watchdog requests click uuid sfcli 

配置数据库(两个)

基础数据库:basic_app_runtime(其他名字也可以)该库只有一张表:

代码语言:javascript
复制
CREATE TABLE `dict_store` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(256) DEFAULT NULL,
  `value` text,
  `dict_type` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

插件相关数据库: app_runtime_plugin_full (其他名字也可以)

创建&启动应用容器

代码语言:javascript
复制
sfcli create --name plugin_store  --empty true

进入plugin_store,修改config/application.yml下的数据库配置,配置上basic_app_runtime

现在可以启动容器了:

代码语言:javascript
复制
sfcli runtime

默认监听端口是9007,你也可以通过config/application.yml修改端口。另外,系统会自动下载容器的发型包,你可以通过设置环境变量 APP_RUNTIME_JAR 设置或者在命令行里指定:

代码语言:javascript
复制
sfcli runtime --runtime_path ./app-runtime_2.11-1.0.2.jar

因为这个包比较大,建议下载后配置环境变量使用。

安装基础插件

启动容器后,我们一共要安装三个插件

  1. 数据库插件,app_runtime_with_db
  2. 用户权限相关的插件 user-system
  3. maven仓库相关功能插件,也就是我们的业务本体 ar_plugin_repo我们先安装

我们可以通过三个命令直接完成插件安装:

代码语言:javascript
复制
sfcli plugin --add app_runtime_with_db:1.0.0 --token "791f7d67-64bc-41ea-bb37-ede9f5c707c4"
sfcli plugin --add user-system:1.0.0 --token "791f7d67-64bc-41ea-bb37-ede9f5c707c4"
sfcli plugin \
--add ar_plugin_repo:1.0.0 \
--token "791f7d67-64bc-41ea-bb37-ede9f5c707c4"

这里的token 是放在config/application.yml 最后一行的admin_token. app_runtime_withdb 会自动使用basic_app_runtime 数据库。 user-system 并不知道自己的数据库是哪个,所以需要告知下:

代码语言:javascript
复制
sfcli add_db --plugin_name user-system \
--host 127.0.0.1 \
--db_name app_runtime_plugin_full \
--user xxxx \
--password xxx  \
--token "791f7d67-64bc-41ea-bb37-ede9f5c707c4"

插件和插件之间会互相依赖。user-system 依赖 app_runtime_with_db , 而ar_plugin_repo 则同时依赖他们两。 插件之间的调用有两种方式:

  1. Rest API调用
  2. Lib调用(比如可以直接操作对方的库里的代码或者操作对方数据库)

Rest API调用的好处是,插件可以分开部署成多个实例,而Lib调用的话,则是调用效率更高,并且可以在A插件里直接完善B插件的功能。ar_plugin_repo 对user-system采用Rest API调用,而对 app_runtime_with_db 则采用库调用。

既然涉及到API调用,则需要告诉调用插件被调用插件的地址,因为目前我们都在同一个实例里,所以我们只要注册本地地址即可:

代码语言:javascript
复制
sfcli add_action_proxy --plugin_name user-system \
--url http://127.0.0.1:9007/run \
--token "791f7d67-64bc-41ea-bb37-ede9f5c707c4"

完工。

截止到目前,我们已经获得一个完整的插件仓库应用,你可以上传和下载插件jar包了。下一篇,我们会讲解下如何开发ar_plugin_repo插件。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档