当前位置:  软件>java软件

服务虚拟化 Terminator

    来源:    发布时间:2014-12-21

    本文导语:  问题 在开发/测试一个复杂系统的时候我们经常遇到开发/测试中的模块依赖其它服务的情况。比如一个系统有两个模块A和B,A模块依赖于B模块提供的服务: B部分功能还未完成开发导致A模块开发被阻塞; B模块有些数据不好构...

问题

在开发/测试一个复杂系统的时候我们经常遇到开发/测试中的模块依赖其它服务的情况。比如一个系统有两个模块A和B,A模块依赖于B模块提供的服务:

  • B部分功能还未完成开发导致A模块开发被阻塞;

  • B模块有些数据不好构造,开发时无法自测到所有情况;

  • 对A模块进行集成测试时,写了一些自动化用例。但由于B模块不可控,B模块的数据经常变动导致返回给A模块的数据也变化了,这时候依赖B模块返回数据的断言将失败;

  • B模块不是自己团队维护,经常出现不稳定,导致开发环境中整个系统不稳定。

  • 解决方案

    服务虚拟化指的就是虚拟出不稳定、不可用、未开发完全的服务。通常有两种方法:

  • 针对协议的通用桩,可以预先设置请求对应的返回值以及匹配条件,这样系统未开发完之前可以使用这个桩来代替真实的服务;

  • 录制回放方式,在第三方服务可用的时候将链路上的数据录制下来,当不稳定或者不可用时,回放当时录制的数据。

  • 其中方案1主要针对问题一和二,方案2主要针对问题三和四。Terminator(寓意:明暗交界线)实现了以上两种方式。

    Terminator中每个链路可以看成是一个代理,运行在两个服务之间,现在支持四种工作模式:

    服务虚拟化 Terminator[图片]

    TUNNEL:隧道模式,链路服务负责接收和转发链路上的数据,但不做任何存储,相当于通透状态;

    RECORD:录制模式,链路服务将链路上的请求和响应存储下来,并记录请求响应的对应关系;

    REPLAY:回放模式,链路服务不会连接后端的依赖服务,当请求过来时当符合某些条件时直接返回当时录制的响应;

    STUB:通用桩模式,链路服务能够预设返回结果与匹配规则,当请求过来时符合匹配规则即返回预设结果。

    整体架构

    服务虚拟化 Terminator[图片]

  • 网络通信:主要在TCP层建立Socket收发链路上的通信数据,这里采用的是netty框架;

  • 协议编解码器:主要将二进制数据包解析为协议数据或者反过来将协议数据转化为二进制数据,netty本身提供了HTTP、SSL/TLS、WebSockets、Google Protocol Buffer的编解码器,如果需要扩展可以自己定义协议编解码器;

  • 工作模式处理器:本系统的核心,现在提供的录制回放、通用桩都是这里实现的。这里提供了较多的扩展接口,可以基于定制化需求实现新的模式, 比如当后端服务down掉的情况下启动之前的录制数据。另外对于录制回放模式,签名类是一个核心组件,它的作用是如何标识一个请求,对于不同系统可能有不 一样的实现;对于通用桩模式,抽取类是一个核心组件,他的作用是如何提取一个请求,涉及到如何设置匹配条件,对于不同系统(特别是协议)也可能有不一样的 实现。所以这些都是系统提供的可扩展接口。

  • APIs:为了使用上的方便(比如持续集成),系统基本所有的功能都通过REST API提供。


  •     
     
     
     
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何启动linux服务器上的虚拟机?
  • 虚拟服务器管理 OpenVCP
  • 主机访问桥接虚拟机web服务器失败,同网段其他主机可以访问
  • 虚拟机下安装了linux,要做代理服务器,是否无法实现啊
  • VMware虚拟机下,ftp服务无法使用,应如何处理
  • 为什么调试servet每次都要重起服务器,是不是要在tomcat下的server.xml修改服务器虚拟目录的属性,,
  • 怎样在windows下把linux虚拟机的telnet服务打开?
  • 虚拟机apache服务器的IP地址
  • IE不能访问Linux(虚拟机)里的apache服务器
  • 关于虚拟机Liunx服务器的问题
  • 主机访问虚拟机web服务失败问题
  • 东盛云网开源无盘及虚拟磁盘服务器系统
  • 关于虚拟服务器配置
  • 虚拟 Linux 服务器 Levinux
  • Linux虚拟服务器 LVS
  • 用VMware虚拟机装Linux做WEB服务器的问题
  • 在单网卡的linux web服务器上虚拟Windows系统搭建多个.net web网站,有谁做过?
  • 请问用VMware可以虚拟Linux路由服务器吗?
  • 局域网中的虚拟机如何作为vpn服务器?
  • 在windows下使用虚拟机运行linux,在不插入网线的状态下可不可以使用smb服务
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 双linux服务器如何能在一台服务器崩溃的情况下在另一台服务器上启动相应服务
  • java命名空间javax.print类docflavor的类成员方法:服务格式化打印数据定义及介绍
  • 采用sendmail搭建邮件服务器必须在邮件服务器上构建DNS服务吗?
  • lbs基于位置服务(Location Based Service)中如何计算二点距离
  • 请问在红旗Linux多功能服务器版上(不是数据库服务器版)能否正常安装使用Oracle?红旗Linux数据库服务器版要比红旗Linux多功能服务器版贵
  • 红帽RHEL下面设置docker服务自动启动
  • 校园网,www服务器,邮件服务器,数据库服务器等各用什么平台(系统)性能最佳?
  • nginx 服务器介绍
  • 如何有效判断服务器已经连接不上(服务器关闭,服务器非法退出等原因)
  • Cisco Open Network Environment Platform拒绝服务漏洞


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3