1、概述

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

  软件核心是一个基于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监控调试页面,查看当前系统状态及网络情况。便于简单问题的现场自行处理。

gatekeeper学习概述的更多相关文章

  1. 深度学习概述教程--Deep Learning Overview

          引言         深度学习,即Deep Learning,是一种学习算法(Learning algorithm),亦是人工智能领域的一个重要分支.从快速发展到实际应用,短短几年时间里, ...

  2. WPF学习概述

    引言 在桌面开发领域,虽然在某些领域,基于electron的跨平台方案能够为我们带来某些便利,但是由于WPF技术能够更好的运用Direct3D带来的性能提升.以及海量Windows操作系统和硬件资源的 ...

  3. iOS开发学习概述及知识整理

    设计师设计出来了一个不错的引导界面,然而当我看到设计稿的时候,我们的app也没几天就要上线了.这个界面模仿了Evernote iOS app的风格. 我以迅雷不及掩耳盗铃之势开始在Xcode上编程,用 ...

  4. PGM:图模型学习概述

    http://blog.csdn.net/pipisorry/article/details/52571640 动机 前面我们讨论的问题出发点是给定一个图模型.如在独立性和推理讨论中,假定模型--结构 ...

  5. Day1 Python基础学习——概述、基本数据类型、流程控制

    一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...

  6. Xilinx-7Series-FPGA高速收发器使用学习—概述与参考时钟篇

    xilinx的7系列FPGA根据不同的器件类型,集成了GTP.GTX.GTH以及GTZ四种串行高速收发器,四种收发器主要区别是支持的线速率不同,图一可以说明在7系列里面器件类型和支持的收发器类型以及最 ...

  7. BS学习概述

    从最初的牛腩新闻公布系统,到如今的JS,回想一下,自己的BS也算是学了大半,可是有时候想起来还是总是有一种不踏实的感觉,一是由于从开学到如今赶上了三级考试,自考.软考,导致BS学习时间被大大压缩了,代 ...

  8. 安全开发流程(SDL)学习概述

    1.简介 SDL的全称是Security Development Lifecycle,即:安全开发生命周期.由微软最早提出,是一种专注于软件开发的安全保障流程.为实现保护最终用户为目标,它在软件开发流 ...

  9. MooseFS学习-概述

    MFS(MooseFS)是一个容错的.网络分布式文件系统,是GFS的开源实现.它把数据分散在多个物理机上,对外展现为一个整体资源. 支持的功能 Unix的通用文件系统功能:目录树:记录POSIX文件属 ...

随机推荐

  1. NPE问题

    “防止 NPE,是程序员的基本修养.”NPE(Null Pointer Exception) 参考: https://www.jianshu.com/p/9915f2e34a13

  2. error while loading shared libraries: lib*.so: cannot open shared object file: No such file or directory

    动态库的搜索路径搜索的先后顺序是: 1.编译目标代码时指定的动态库搜索路径; 2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径: 比如export LD_LIBRARY_PATH=/us ...

  3. python读文件判断是否已到EOF

    python读文件判断是否已到EOF,也即结尾,一般其它语言都是以EOF直接来判断的,比如 if ( fp.read(chunk_size) == EOF), 但python到结尾后是返回空字符串的, ...

  4. CSIC_716_20191119【常用模块的用法 subprocess、re、logging、防止自动测试、包的理论】

    subprocess模块 可以通过python代码给操作系统终端发送命令,并可以得到返回结果. import subprocess str = input('>>>请输入命令') # ...

  5. git连接gitee笔记

    #首先参照 https://blog.csdn.net/zhangyu4863/article/details/80427289 #然后需要注意,在办公室无法使用 git remote add ori ...

  6. http://wiki.ros.org/navigation/Tutorials/RobotSetup

    http://wiki.ros.org/navigation/Tutorials/RobotSetup

  7. (JS)应为","

    在写cshtml的时候,vs提示:(JS)应为"," 功能无法实现,一般是因为 标点切成全角了,但是我是应为把‘’打成了“” 以下错误示范: $("ol").a ...

  8. (转)Wireshark "The NPF driver isn’t running…"(

    转:http://blog.sina.com.cn/s/blog_4bfd07180100e3ar.html 前几天重装系统,装上了windows7 RC系统.昨天开始尝试装上了wireshark 这 ...

  9. DELPHI指针的使用

    DELPHI指针的使用 大家都认为,C语言之所以强大,以及其自由性,很大部分体现在其灵活的指针运用上.因此,说指针是C语言的灵魂,一点都不为过.同时,这种说法也让很多人产生误解,似乎只有C语言的指针才 ...

  10. hexo 错误汇总

    文章目录 发布文章遇到: 发布文章的时候出现错误: 代码推送到github,hexo g -d 半天推送不上去 记录一次hexo+coding hexo s本都没问题,hexo g -d 样式并未改变 ...