1、概述

  该产品部署在网络隔离装置两端,以代理程序的身份,完成两侧设备连接维护,数据转发的功能。场景简化如图所示:

gatekeeper学习概述-LMLPHP

  软件核心是一个基于Netty的网络应用程序,考虑到系统的可维可测性,集成了web化的配置、监控和调试功能。

2、启动类是GateKeeperWebMain

public static void main(String[] args) throws Exception {
startJetty(PORT);
} private static void startJetty(int port) throws Exception {
LOGGER.debug("Starting server at port {}", port);
Server server = new Server(port);
Configuration.ClassList classlist = Configuration.ClassList
.setServerDefault(server);
classlist.clear();
classlist.add("org.eclipse.jetty.webapp.WebXmlConfiguration");
classlist.add("org.eclipse.jetty.annotations.AnnotationConfiguration");
server.setHandler(getServletContextHandler());
addRuntimeShutdownHook(server);
server.start();
LOGGER.info("Server started at port {}", port);
server.join();
}

3. web容器是jetty,在web服务启动过程中,通过spring初始化后台相关bean,并在初始化完成后启动后台监听服务。

4. 发布维护过程中的一些收获

  1、功能的可用性

    产品部署在全国各地多个地方,生产环境掉电重启,网络不稳定等多种异常情况都会出现。

    - 软件需要保证掉电重启自动恢复等。

    - 通过代理程序的心跳机制及重连机制,保证网络正常或网络断开恢复后能正常提供服务。

  2、服务的可靠性

    - 第三方服务端处理速度不一定快,如果是同步阻塞的话,就会加大系统自身负担,被外部拖累。

    - 设备不可达等情况,应有快速失败机制。(一旦出现一定的超时,如果有多次重试的机制,可能会使得网络负担更大,造成雪崩效应。)

  3、系统的维护性

    - 提供版本一键安装升级工具,操作简单快速。

    - 提供一键日志采集功能。获取服务器核心的操作系统日志、业务日志,便于有问题时采集分析。

    - 现场人员可以通过web监控调试页面,查看当前系统状态及网络情况。便于简单问题的现场自行处理。

05-17 12:54