您的位置:首页 > 大数据 > 云计算

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

2016-01-11 10:34 603 查看



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维护运管的用户对其的肯定和赞誉!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: