本发明涉及java开发技术领域,特别涉及一种熔断器的实现方法。

背景技术:

目前,在微服务架构中,为了方便系统的前期的开发以及后期升级、维护,提交工作效率,一般会将系统划分为多个服务单元。各个服务单元通过服务注册以及订阅的方式互相依赖。同时,在各个服务单元中,会出现服务间互相调用的情况。这就有可能因为网络问题或所依赖的服务单元自身故障造成调用失败。如果此时系统出现大量调用已出现故障的服务单元,最后会因为等待该单元响应而造成请求积压,最终导致整个系统出现瘫痪。

为了解决这个问题,在微服务架构中采用了熔断器技术。当一个服务单元出现故障无法响应请求时,微服务架构的熔断器会认为该服务已出现故障,对该服务单元进行隔离。当有其它业务单元调用该服务单元的请求时,熔断器会将请求隔离,并快速返回失败;而不再进行具体的请求工作。这样可以防止已出故障的服务单元出现请求积压,避免其它服务单元出现请求等待,最终造成整个系统瘫痪的问题。

熔断器的出现,大大提高了系统的稳定性及可用性。目前熔断器的开发过程,基本上分为三步:

第一步,定义本服务单元的接口类interface,该接口类定义了本服务单元的所有的服务接口。

第二步,实现服务单元的接口类,一般为实现类,并实现服务接口ihterface的所有方法;在方法体中,一般会调用其它服务单元的服务方法。

第三步,为了防止第二步因调用的服务单元出现故障造成请求积压,需要定义本服务单元各个服务方法的熔断器方法;因此熔断器处需要实现服务单元接口ihterface的所有服务方法。

因为熔断器主要处理请求失效后的快速隔离方法,熔断器里的方法基础是一致的,基本是实现日志记录、通知等功能。由于熔断器的方法需与服务单元的方法一致,因此随着系统的功能越来越丰富,服务单元的接口方法也会随之增加,这样熔断器实现方法的也必须同步增多。这样系统会增加非常多的重复代码,增加开发工作量,降低效率。

技术实现要素:

本发明解决的技术问题在于提供一种熔断器的实现方法,降低熔断器的开发工作量,提高工作效率。

本发明解决上述技术问题的技术方案是:

所述的方法是将熔断器需要实现的快速隔离方法区分为父类和子类;通用的处理方法归入父类,动态的方法归入子类;父类方法不变,而子类的处理方法根据需要实现动态的创建。

所述的方法具体包括以下步骤:

步骤1:实现熔断器父类,将通用处理方法作为父类并实现,提供给其它熔断器使用;其它熔断器直接实现调用该类的通用处理方法;

步骤2:实现动态方法创建工具类,该类包括两个重要方法;包括实现动态创建方法和动态创建熔断器类的方法;

步骤3:在容器启动时,获取远程调用的列表,并循环调用动态方法创建工具类,实现熔断器动态创建工作。

所述的步骤2具体包括如下步骤:

步骤21:实现动态创建方法,实现根据传入的类与方法名参数为该类动态创建指定的方法,并在方法体中调用父类的通用处理方法;

步骤22:根据远程调用类的方法列表,动态创建熔断器类的方法;当远程调用类的方法不在熔断器方法列表中时,则通过动态创建方法创建该方法。

所述的动态创建方法包括新增、删除、修改、查询。

所述的通用的处理方法包括记录异常日志,邮件通知,短信队列。

本发明用户无需因为远程调用模块的调整而动态调整熔断器的相关方法;当熔断处理需要调整时,只需要通过调整处理方法即可,从而达到统一调整的效果。通过本发明的方法,可以大大提高熔断器的开发与调整工作,业务系统只需要关注业务模块的开发,大大提高工作效率,降低系统的复杂度,同时为后续的升级维护提供便利。

附图说明

下面结合附图对本发明进一步说明:

图1是本发明熔断器实现基本流程图;

图2是本发明hystrixutiil处理流程示意图。

具体实施方式

见图1所示,是本发明熔断器实现具体实施流程图;其实现方法基本包括以下步骤:

s10:定义熔断器基础实现类。

熔断器的基础实现类basehystrix,该类中实现系统通用熔断处理的方法commonmethod,例如记录异常日志,邮件通知,短信队列等。该类的主要作用是让系统中其它熔断器实现动态调用的方法;方法体中可以传入日常信息等参数。

s20:定义业务模块远程调用的接口userclient。

该接口的方法根据业务功能不同进行定义;例如用户模块中存在新增、删除、修改、查询功能,则该接口可以增加adduser、deluser、updateuser、listuser等方法。

本步骤中,具体可以分为以下两步:

s21:定义业务模块的熔断器处理实现类userhystrix。

熔断器的处理机制可根据userclient的复杂度进行调整;如果熔断器不进行单独的处理,本发明会自动通过basehystrix的commmethod方法进行处理。

例如:删除用户的熔断处理方法,除了邮件通知外,需要记录操作的详细信息,并把邮件抄送给关系人。在本发明的熔断器中,可以用deluser方法,该方法名需与userclient的deluser方法名一致。

s22:设置userclient的熔断器为userhystrix。

结合springcloud的框架,需要在userclient的feignclient标签设置fallback=userhystrix.class。

s30:实现动态方法关系实现类hystrixutil。

该实现类需要继承basehystrix方法,这样即可在动态方法里调用basehystrix的commonmethod方法。在springcloud容器启动时,会通过hystrixuitl的init方法进行熔断器的初始化。初始化方法主要实现根据userclient的业务方法,动态增加userhystrix的熔断方法。

图2是本发明hystrixutiil处理流程示意图;其基本流程是:

实现hystrixutil的createmethod方法,该方法需要传参几个重要参数,分别为待创建方法的类和待创建方法的名。在createmethod方法中,通过ctmethod动态创建该方法;而方法体内,直接调用commonmethod方法即可。

首先hystrixutil的init方法中,根据feign,获取userclient的所有方法列表clientmethodlist。

其次,根据userclient在feignclient标签中设置的fallback,获得该业务的熔断处理类userhystrix,并获得该类的方法列表hystrixmethodlist。

循环clientmethodlist列表,判断hystrixmethodlist中,是否存在同名的方法;如果存在,则直接跳过;如果不存在,则直接调用createmethod方法;并将userhystrix类、方法名传入方法中;在userhystrix类中,创建与clientmethodlist同步的方法。

本发明通过以上动态实现的方式可动态实现熔断器。

java熔断器_一种熔断器的实现方法与流程相关推荐

  1. java游戏房间匹配_一种游戏房间匹配方法与流程

    本发明涉及计算机技术领域,尤其涉及一种游戏房间匹配方法. 背景技术: 在目前的网络游戏中,游戏对象与游戏对象会通过互联网在线上进行竞技比赛,很多时候都需要多名玩家共同参与,现有的游戏对象的配对方法大多 ...

  2. 干电池电量采集_一种电池电量采集方法与流程

    本发明涉及电池参数采集技术领域,尤其涉及一种电池电量采集方法. 背景技术: 目前,在使用电池的产品上,通常使用电量计来获取电池电量的精确数值.而由于电量计的成本较高,还有一些低成本的产品上,还会通过采 ...

  3. ue4导入倾斜摄影_一种高精度倾斜摄影建模方法与流程

    技术领域:本发明属于测绘技术领域,涉及矿山地形监测.测绘地形图.珍贵建筑物修复重建.林业.农业.采矿业.公用事业和能源.城市开发.国防和灾害应急的地理信息处理. 背景技术: :目前成熟的倾斜三维建模软 ...

  4. lds天线技术流程图_一种镭雕镀金方法与流程

    本发明涉及表面处理领域,尤其涉及一种镭雕镀金方法. 背景技术: 在电子通信产品的结构件中,一些产品经常采用在塑胶支架上镭雕化镀的方式来实现线路,LDS天线就是其中的一种.如图1所示,首先在塑料支架上镭 ...

  5. truetype字体怎么转换成普通字体_一种TrueType字体渲染方法与流程

    本发明涉及一种TrueType字体显示技术领域,尤其是涉及一种基于热排序缓存机制的TrueType字体渲染方法. 背景技术: 随着军民用飞机座舱显示系统的不断复杂.功能的不断增加.显示分辨率的不断增大 ...

  6. 图像迁移风格保存模型_一种图像风格迁移方法与流程

    本发明涉及图像处理技术领域,更为具体地,涉及一种图像风格迁移方法. 背景技术: 近年来,由深度学习所引领的人工智能技术浪潮,开始越来越广泛地应用到社会各个领域,尤其是在在计算机视觉领域,图像风格迁移作 ...

  7. 机器人杆长标定_一种SCARA机器人标定方法与流程

    本发明涉及机器人零位标定技术领域,尤其涉及一种SCARA机器人标定方法. 背景技术: 零位是机器人坐标系的基准,没有零位机器人无法判断自身位置.在影响机器人绝对精度的因素中,零位误差所占比重高达97% ...

  8. ic 主动均衡_一种电池主动均衡方法与流程

    电池主动均衡技术领域,具体是一种电池均衡方法. 背景技术: 现有主动均衡技术主要通过检测电池电压差异或容量差异,并通过电子元器件(DC/DC或电容器)来实现单体与单体.单体与模组.模组与单体之间的能量 ...

  9. 疲劳驾驶监测方案_一种疲劳驾驶检测方法与流程

    本发明涉及一种疲劳驾驶检测方法. 背景技术: :交通安全是与国计民生直接相关的热点问题,其中疲劳驾驶作为交通事故多发的主要问题之一,受到了人们的广泛关注.疲劳驾驶会导致驾驶员精力不集中.肢体反应迟钝. ...

最新文章

  1. js等待 callback 执行完毕_前端开发,一篇文章让你彻底搞懂,什么是JavaScript执行机制!...
  2. memcached原理详述及配置
  3. 车辆动力学及控制pdf_Simulink软件仿真平台之车辆模型
  4. java十进制输出_JAVA输入一个十进制数N,输出r进制的数
  5. Py之chatterbot-corpus:python包之chatterbot-corpus包简介、安装、使用方法之详细攻略
  6. 初识slam 即时定位与地图构建
  7. Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法
  8. Android 系统(241)---IPv4 or IPv6 优先
  9. 当推荐系统遇见知识图谱会发生什么?
  10. 什么是互联网思维?给你最全面的解释
  11. 使用 Google Analytics 跟踪 JavaScript 错误
  12. Orcad CIS本地库添加器件
  13. 收款码三合一生成系统源码
  14. Java 实现 百度地图
  15. dns配置异常怎么修复_win10 dns异常怎么修复
  16. 科沃斯机器人充电红灯_科沃斯扫地机器人充电一直亮红灯
  17. 推荐印度电影《起跑线》,让家长加入观影一点不为过
  18. Python的len函数探究
  19. 世界上最美丽的英文--与你来分享!
  20. 互联网公司招聘,你需要注意这四点

热门文章

  1. [附源码]java毕业设计时事资讯平台
  2. unit自动驾驶怎么使用_这才是L2自动驾驶系统的正确打开方式
  3. 应届生和往届生,报名条件区别汇总!
  4. Qt多个平台安装与维护
  5. Android实现真心话大冒险App(多线程,音乐播放)
  6. java系统开发注意事项
  7. k8s滚动更新(六)--技术流ken
  8. 基于单片机的车内滞留儿童预警系统设计
  9. 全国计算机优秀教师奖励大会,55位国内高校计算机专业优秀教师将获得公益性奖励...
  10. 《深入分布式缓存:从原理到实践》