前后端视频教程(持续更新)

关联教程:

Chapter I: 升级说明

1. 新版功能

1.1. 基本功能

  1. 升级 Apache Felix 为主容器( Vertx 为子容器 ),支持 OSGI 规范(原版依旧可运行)。

  2. 热插拔、低代码管理工具实现全流程生命周期管理。

  3. 开发环境使用 Maven 自动化脚本一键完成,部署管理内部实现一键式部署,可集成外层 CI/CD 标准化流程。

  4. 工具平台提供监控中心、管理中心、开发中心,配合 Zero UI 实现全平台/全应用监管控模式。

  5. 引入类似 MBSE 的理论和规范,实现系统自证,并保证系统本身在运行过程中的标准化定义。

  6. 硬件对接:模块实现可使用 C、Python、Rust 等其他语言开发,底层可对接硬件抽象层实现万物互联的集成方式。

1.2. 模块化思路

1.2.1. 模块类型

类型 说明

OSGI 模块

基于 OSGI 规范支持热插拔的模块。—— Open Service Gateway Initiative

JPMS 模块

基于 JDK 9+ 之后的模块(module-info.java)方式,可打包成 .mod。—— Java Platform Module System

1.2.2. 模块形态

形态 说明

静态 jar

静态依赖库,通常位于 Maven 项目的 <dependency> 标签中引入。

动态 bundle

OSGI模块,直接支持热插拔,在环境中实现模块的安装、启动、停止、卸载。

微服务

以脚本为中心( FAAS ),每个模块都可独立部署成微服务,提供 mod.yaml / app.yaml 描述文件即可,直接对接云原生 K8S 环境。

Chapter II: 环境综述

2. 项目结构

2.1. 纯环境

纯环境中只包含 Felix OSGI 环境,不携带其他内容,且只有发布版,信息如下:

  1. 地址:https://gitee.com/zero-ws/Zero.Build.Rapid.Fabric.Runtime

  2. 引用配置(git submodule):

    [submodule "Zero.Rapid.Fabric.Runtime"]
        path = refs/Zero.Rapid.Fabric.Runtime
        url = git@gitee.com:zero-ws/Zero.Build.Rapid.Fabric.Runtime.git
        branch = master

如果库名称发生变更,请在自己的 pom.xml 重新配置,其他需引用的模块仓库前缀以 Zero.Build 库名为主,每个库的 README.md 中都包含了上述引用配置。

2.2. 模块环境

Zero新版内部核心模块研发环境和用户最终研发环境维持一致。

2.2.1. 目录说明

运行时的结构目录直接参考纯环境下的发布目录即可(带启动脚本),标记为不提交的记得检查 .gitignore 文件中的设置。

路径 是否提交 备注

/document

maven-javadoc-plugin 生成的文档。

/env

自动化运行环境,保证每个模块可以独立运行调试。

/refs

git submodule 存储引用模块专用位置,配合 git 管理提交,子模块单独提交,主模块只提交 commits 记录。

/src

当前模块源代码目录,开发人员主体操作目录。

2.2.2. Profile说明

完整环境依赖 Maven Profile 来管理开发过程中的生命周期流程:

名称 说明

release

专用于生产环境发布的 Profile。

test

专用于测试环境发布的 Profile。

dev

一键生成可直接运行的 Zero 全容器运行环境。

debug

一键运行/调试。

2.2.3. 命令说明

# 初始化开发环境(环境可一键搭建)
mvn -Pdev clean package install

# 生产部署
mvn -Prelease clean package install

# 测试部署(保留)
mvn -Ptest clean package install
mvn -Ptest test

# 一键运行/调试
mvn -Pdebug test

3. 开发调试

执行过 mvn -Pdev clean package install 之后已搭建好开发调试环境

3.1. JAR 方式

一个模块一个配置

使用 JAR Application 类型的应用启动环境:

0

3.1.1. IDEA 配置

配置项 说明

项目类型

JAR Application

Path to JAR

<Module>/env/bin/libs/felix.jar

Working directory

<Module>/env/bin/

3.2. MAVEN 方式

一个模块一个配置

使用 Maven 类型的应用启动环境:

0

3.2.1. IDEA 配置

配置项 说明

项目类型

Maven

Run

test

Working directory

<Module>

Profiles

debug

运行之后点击 Attach Debugger 则可进入调试模式,参考如下截图:

0

3.3. Remote JVM Debug 方式

多个模块可共享配置,且跨 IDE

先执行如下脚本启动应用:

# 调试专用命令
mvn -Pdebug test

使用 Remote JVM Debug 类型的应用启动调试:

0

3.3.1. IDEA 配置

配置项 说明

项目类型

Remote JVM Debug

Host

127.0.0.1

Port

5005

Use module classpath

<Module>

此处配置和 pom.xml 中的配置相关联,主要注意 Host 和 端口,参考如下片段(debug 的 Profile,插件 exec-maven-plugin 中):

<configuration>
    <workingDirectory>${project.basedir}/env/bin</workingDirectory>
    <executable>java</executable>
    <arguments>
        <argument>-jar</argument>
        <argument>-Xdebug</argument>
        <argument>
            -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
        </argument>
        <argument>libs/felix.jar</argument>
    </arguments>
</configuration>

4. 命令说明

4.1. 基础执行

直接从 Gogo Command 后台执行,示例如:

g! service bundle all
[ ZERO ] Command : all
No service registered in current bundle. name = io.zerows.zero-core-ams-specification
----------------------------------------
No service registered in current bundle. name = io.zerows.zero-core-entry-osgi
----------------------------------------
Bundle: ( id = 16, name = io.zerows.zero-core-runtime-configuration )
Service Registered List:
   [io.zerows.core.configuration.osgi.service.EnergyOption]
      com.aisz.platform-entry-osgi
   [io.zerows.core.configuration.osgi.RuntimeConfigurationCommand]
----------------------------------------
Bundle: ( id = 17, name = io.zerows.zero-core-runtime-metadata )
Service Registered List:
   [io.zerows.core.metadata.osgi.service.EnergyFailure]
      io.zerows.zero-core-runtime-metadata
      io.zerows.zero-core-runtime-configuration
      com.aisz.platform-entry-osgi
   [io.zerows.core.metadata.osgi.RuntimeMetadataCommand]
      org.apache.felix.gogo.runtime
----------------------------------------

4.2. 命令清单

命令 参数 说明

exit

(无)

追加的退出命令,可退出整个应用。

cache

(无)

查看当前环境中的所有组件缓存

failure error

all

查看当前环境中所有自定义异常。

size

查看当前环境中异常数量。

{BUNDLE_ID}

查看某个 Bundle 中的异常定义。

failure info

all

查看当前环境中所有自定义异常(前端可阅读版本)。

node network

all

查看 Cluster 集群详细信息。

node vertx

all

查看 Vertx 运行实例的详细信息。

service bundle

all

查看当前环境中所有注册的 OSGI 服务信息,以及服务调用者信息。

{BUNDLE_ID}

查看某个 Bundle 相关的服务注册信息,以及服务调用者信息。