xframe框架的服务加载流程

本文详细阐述了xframe框架的服务加载流程,包括数据转发服务的运行加载步骤,服务运行管理的抽象,框架与项目的关系,以及框架的运行流程。通过监听配置变化实现服务动态加载,每个服务都有独立的管理器。框架由Main类作为入口,动态加载Project项目,每个项目管理自己的服务。Context类提供API供服务调用以获取资源。
摘要由CSDN通过智能技术生成

xframe的服务加载流程

1. 数据转发服务的运行与加载

先用数据转发服务来说明一下一个普通的服务的运行加载过程

数据库配置表结构如下:

Column 含义
id 主键id
src_ip 数据源IP
src_port 数据源端口
src_type 通讯协议 ,0:TCP SERVER,1:TCP CLIENT
des_ip 目的源IP
des_port 目的源端口
des_type 通讯协议,0:TCP SERVER,1:TCP CLIENT

一个转发器Transit对象结构应当如下

Transit 转发器对象
src_tcp 源TCP实例,由src相关属性生成
des_tcp 目的TCP实例,由des相关属性生成

假如当前配置表如下

id src_ip src_port src_type des_ip des_port des_type
1 127.0.0.1 10001 0 127.0.0.1 20001 0
2 127.0.0.1 10002 0 127.0.0.1 20002 0

数据转发服务运行的流程如下

  1. 从本地配置读取数据库连接配置(url,user,password等),连接到数据库

    DatabaseConfig databaseConfig=Config.parser();
    Database database=Connect(databaseConfig);
  2. 读取数据库配置,生成对应的Transit实例,并且运行所有实例

    List<Transit> list=database.queryList(Transit.class);
    for(Transit transit:list){
        transit.stop();
    }
  3. 不断轮询数据库,一旦数据库配置表发生变更,则启动或者停止对应的Transit实例

    while(isRunning){
        ...
        list.add(/*新添加的Transit*/);
        ...
        for(Transit transit:list){
            if(/*如果transit在数据库中被删除*/){
                //停止transit,并在list中删除transit
                transit.stop();
            }else if(/*如果transit在数据库中被修改*/){
                //重启transit
                tr
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值