NC维护云管家通信框架诞生背景

NC维护云平台在架构设计之初就充分考虑到不同客户网络环境情况:

1. NC服务器可以直接连通互联网。

2. NC服务器所在内网完全与外网隔离。

基于上述网络情况,同时能为用户提供永久稳定的项目运维信息的云化管理服务以及真真切切地帮助一线解决一切难题的初衷,NC维护云平台提出了以“云+端”的方式为用户服务。考虑到让一线顾问、客户使用简单便捷以及适配内外网切换,端又基于C/S模式分成两部分,客户端 ——NC维护云管家(NC的360桌面程序),服务端——NC维护云管家服务(agent)。NC维护云管家通信框架就是为了解决客户端与服务端通信,同时又能使通信服务在运行时不影响NC应用服务的运行效率及稳定性,从而完全自主研发设计且不依赖于NC的通信服务框架。

我们采用基于RMI-IIOP 协议自主开发服务通信框架,是在充分考虑客户环境的复杂性及云平台业务处理需求情况下而设计,如:支持复杂集群环境通信要求,支持集群节点自注册,支持服务组件XML 方式注册,支持服务调用时注册回调处理器,支持部署简单、零服务配置,支持开机自启动等,而且其非常轻巧,相比使用开源的tomcat、jetty 和netty 更能满足我们云平台项目的需求。框架解决了云管家与项目环境通信问题,同时适应客户环境的各种复杂场景如:各版本linux、windows、win server、aix,服务器多网卡等。框架是项目补丁安装卸载,集群检测等核心功能的主要技术支撑。

如果客户的NC应用服务器是内外网隔离的情况,用户首先需要使安装NC维护云管家的笔记本电脑或台式机上连接上外网访问云端获取客户项目的运维信息、云平台最新推出的补丁等内容,然后再切换到内网连接NC维护云管家服务(agent)即可安装补丁、卸载补丁,同时也可以做正式环境代码是否一致检测、正式环境与测试环境代码是否一致检测等操作。

NC维护云管家通信协议介绍

根据NC应用的部署情况,NC维护云管家通信框架需要考虑到分布式计算,同时为了开发在使用通信框架时完全透明,NC维护云管家选择了基于RMI-IIOP协议通信。

RMI-IIOP 很强大的分布式计算能力,可使用它编写纯 Java 客户机/服务器实现而不丧失 RMI 类序列化的灵活性。RMI-IIOP 通过覆盖 Java 序列化反序列化做远程对象传输,同时也提供透明的远程对象定位,从而使运行在一个Java虚拟机上的对象可以像调用本地对象方法一样调用运行在另一个Java虚拟机上的对象方法,使Java编程人员可以方便、透明地在网络环境中做分布式计算。

NC维护云管家通信框架模型

NC维护云管家通信框架使用Java动态代理与反射实现对象调用,客户端到服务器数据的传输使用JAVA序列化与反序列化机制来实现,也就是数据组装是定制的,网络通信使用RMI-IIOP协议,通信模型如图1所示:

图1

整个NC维护云管家通信框架各个实体各司其职、分工明确,接下来做详细的介绍和说明:

1. Locater是lookup模式的实现,客户端完全透明地通过Locater统一查找不管是远程还是本地的服务或资源。

2. Proxy, 客户端通过Locater获取远程服务时,返回的是实现与远程服务相同接口的代理对象,在客户端调用接口方法时,代理拦截请求并组装请求信息,如调用接口完全路径名、方法、请求参数等信息。

3. Listener是客户端远程调用时可选择性地注册的监听,主要监听远程调用情况,在两种情况下监听会得到通知,在调用集群环境服务时,一是当单个服务请求结束后监听会得到通知,通知中包含了请求成功与否的状态信息、返回值、异常等信息,另外一种情况是当客户端对整个集群环境的所有服务请求结束后监听也会得到通知,所带信息是各个服务请求成功与否的状态信息、返回值、异常等信息集合,客户端可以根据通知信息做相应的业务处理。

4. Reader,获取客户端请求信息,把请求封装为请求对象Caller,调用Handler处理请求。

5. AOPHandler,实现了AOP处理机制,在调用接口实现对象(Object)处理业务前会先检查接口是否动态织入了Advice,如果织入了Advice则先处理AOP过程,然后再根据客户端请求封装信息Caller调用真正的实现对象处理业务。

6. Advice是NC维护云管家通信框架AOP实现中的通知统一接口,它通过 before、whenException、after 和 around 来区别是在每个 joint point 之前、异常发生时、之后还是代替执行的代码。加入对AOP的实现既满足代码松耦合原则,又同时对后续接口的认证、权限管理、事务的处理、持久化等在毫无代码入侵的情况下满足开闭原则。

远程的对象拥有固定的接口,这个接口对客户端调用者来说是可见的,只是真正的实现(Object)在服务端。用户如果想使用某个接口的实现,那调用过程如此:先根据接口使用lookup模式来查找服务,通信框架客户端只用动态代理生成一个代理对象返回,再调用这个代理对象的时候,用户的调用请求被代理捕捉到,然后包装成调用请求,序列化成数据流发送到服务端;服务端从数据流中解析出调用请求,然后根据用户所希望调用的接口,使用反射调用接口真正的实现对象,再把调用结果返回给客户端,整个调用过程序列同如图2所示:

图2

NC维护云管家部署图

NC维护云管家的部署分单节点和集群两种情况:

1. NC环境是集群环境下部署情况如图3所示,NC应用与NC维护云管家服务是一一对应关系,即一套NC应用需要一个NC维护云管家服务与其对应,NC集群环境中会有多个NC维护云管家服务,则需要随机选择一个作为主服务。NC维护云管家与NC维护云管家通信步骤:

(1) NC维护云管家向NC维护云管家服务发起请求,获取所有向NC维护云管家主服务注册的NC维护云管家子服务信息

(2) NC维护云管家根据第一步获取到的服务信息向所有NC维护云管家服务发起请求,并等待所有请求结束后返回

(3) NC维护云管家得到所有NC维护云管家服务返回结果,并做处理

图3

2. NC环境单服务时的部署情况如图4所示

图4

3. 服务启停设计

a) 为了减少用户的配置,NC维护云管家服务支持零配置,只需把NC维护云管家服务文件夹(umc)拷贝到NC_HOME目录下即可直接启动。

b) NC维护云管家服务服务支持在各种类型操作系统下开机自启动。

c) 在linux、unix、aix操作系统下,如果配置了SSH免密码登录,那么在启动NC维护云管家主服务节点时会自动启动所有NC维护云管家子服务节点,服务停止也是如此。

总结

好的技术服务于好的产品,好的产品需要有用户的使用、肯定和支持才能发挥其应有的价值,NC维护运管家通信服务就是基于这样的理念,使用前沿技术而设计的一组服务,其充分考虑到了客户环境的复杂性,一切以客户的切身利益和体验为核心,深度掌握了客户和一线顾问的需求,急之所急,想之所想,服务于客户,宗旨是让NC产品长期更加稳定地运行,从而全面提高客户对NC产品的美誉度,同时希望借此契机让NC产品发挥出其应有的价值并且为公司创造更多收益和美誉!

在设计与开发NC维护云管家通信服务的过程中遇到很多难点,这里我得感谢谭明义经理在我解决这些难点过程的建议、指导和帮助!同时也感谢现在正在使用NC维护运管的用户对其的肯定和赞誉!

NC维护云平台技术分享之 NC维护云管家通信框架相关推荐

  1. 获奖!!!元年科技荣获信创“大比武”云平台技术支撑赛道单项奖

    2022年底,由北京航空航天大学.北京理工大学.中国电子工业标准化技术协会信息技术应用创新工作委员会(简称信创工委会)共同主办的2022信创"大比武"活动圆满落幕.大赛由云平台技术 ...

  2. 分布式存储 Ceph 介绍及原理架构分享--云平台技术栈系列01

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的Ceph,从架构简介使用场景,以及内部IO流程.心跳机制.通信框架.CRUSH算法.QOS等多个方面逐渐介绍分布式存储系统Ceph ...

  3. 云智易获上海CIO联盟“年度物联网云平台技术创新奖”

    6月23日,云智易作为国内领先物联网云平台,受邀出席"跨界融合 聚势谋远"上海CIO联盟峰会.本次大会汇聚了全球各地各行业300位精英翘楚,共话未来发展趋势. 在本次大会中,云智易 ...

  4. 图解Istio原理和实践--云平台技术栈18

    " 如果你比较关注新兴技术的话,那么很可能在不同的地方听说过 Istio,并且知道它和 Service Mesh 有着牵扯. 导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下 ...

  5. Spring Cloud剖析--云平台技术栈17

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的Spring cloud! Spring Cloud 是一个基于 Spring Boot 实现的微服务框架,它包含了实现微服务架构 ...

  6. Redis详解和实战--云平台技术栈16

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的Redis! http://wdxtub.com/2016/07/05/redis-guide/ Redis 是 C 实现的基于内 ...

  7. Kafka原理和实践--云平台技术栈13

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的Kafka! 作者:阿龙 cnblogs.com/along21/p/10278100.htm 1.认识 Kafka 1.1 Ka ...

  8. RabbitMQ 可靠消息传输实战--云平台技术栈12

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的RabbitMQ! 作者:极客慧 https://my.oschina.net/jikeh/blog/2207127 可能是缓存架 ...

  9. ZooKeeper最佳指南--云平台技术栈11

    导读:之前发布了云平台技术栈(ps:点击可查看),本文主要说一下其中的zookeeper! 转自:云时代架构 前言 相信大家对 ZooKeeper 应该不算陌生.但是你真的了解 ZooKeeper 是 ...

最新文章

  1. JZOJ 1240. Fibonacci sequence
  2. MOXy的@XmlVariableNode – JSON模式示例
  3. MongoDB学习目录
  4. java二级考试备考_2017计算机二级考试《JAVA》备考测试题「带答案」
  5. 忘记mysql数据库连接密码
  6. dj鲜生-通过邮箱发送加密的激活链接
  7. DOS中的 及 用正则表达式中的什么替掉
  8. 最好的免费在线UML图表工具
  9. c语言烟花代码devc,C语言烟花程序
  10. 理解充分条件与必要条件
  11. 以管理员身份打开cmd窗口
  12. 3389、135、137、138、139、445等端口解释和关闭方法
  13. 互联网防骗指南[摘录58同城]
  14. 五人合伙最佳股份分配_五人合伙股份分配协议书范本
  15. java学习之面向对象和封装
  16. python3ide安卓版官网下载_python3.9下载-Python下载v3.9.0 官方最新版【x86|x64】-西西软件下载...
  17. 20221208英语学习
  18. 【Python】conda实现虚拟环境的创建
  19. 软件考试:计算机组成原理:寻址方式
  20. dreamware jquery 代码提示

热门文章

  1. 洛谷1594 护卫队
  2. linux matlab 中文论坛,Linux中Matlab中文乱码问题解决方案
  3. Java语言学习--Swing中Button事件监听
  4. 十个最火的HTML5框架与移动应用框架的比较
  5. 漏洞挖掘 符号执行_漏洞挖掘新思路:fuzz+符号执行——driller
  6. C语言,函数打印日历
  7. shopify cli 的命令
  8. WRF应用:天气预报、模拟分析观测气温、降水、风场、水汽和湿度、土地利用变化、土壤及近地层能量水分通量、土壤、水体、植被等相关气象变量
  9. 快来看看这几个好用到没朋友的微信小程序,用了它们绝对不亏
  10. linux电源管理子系统,电源管理子系统