使用Netflix的Hystrix构建容错微服务

与将所有模块紧密安装到一个应用程序中的单片应用程序相比,微服务是一组独立的自主服务。

在微服务架构中,开发容错微服务非常重要。 我们必须以这样一种方式开发微服务,即必须使故障影响最小化,并且应基于快速故障机制将影响降到最低。

这是建立在微服务架构上的电子商务应用程序的示例。

电子商务应用程序微服务架构

直到有一天,电子商务应用程序停止运行,以上架构一直运行良好。 发现获取可用项目列表的服务没有响应。 经过进一步分析,发现它使用了第三方服务,这是有问题的。 该错误已从第三方服务级联到主应用程序。

考虑使用电子商务应用程序时,用户项目推荐服务停止工作的另一个示例。 在这种情况下,我们应该显示非特定于用户的项目。 这样,用户将无法得知我们的推荐引擎失败。 这就是为什么构建容错微服务非常重要的原因。

Netflix拥有世界上最好的基础设施之一。 为了构建容错微服务,Netflix提出了Hystrix,他们将其开源。

根据Netflix的说法,“ Hystrix是一个延迟和容错库,旨在隔离对远程系统,服务和第三方库的访问点,停止级联故障,并在不可避免发生故障的复杂分布式系统中实现弹性。”

我们将使用Hystrix构建应用程序并使其具有容错能力。 我们将创建一个将获取用户推荐电影列表的应用程序。 我们将使用Spring boot创建微服务。

转到Spring Initializer并输入组名称,工件名称并选择依赖项。 单击生成项目,将其解压缩并在您喜欢的IDE上生成它(本例中使用的是IntelliJ)。 我已经使用spring初始化程序创建了两个应用程序-“ UserApplication ”和“ UserRecommendation ”。

弹簧初始化器

在UserRecommendation应用程序中,创建一个名称为“ UserRecommendationController ”的休息控制器,并创建一个POJO 电影 ,其中将包含电影名称,发行日期和类型。 我们将在静态列表中填充电影列表。

我创建了一个休息呼叫“ getUserMovieDetails ”,它将获取所有特定于用户的电影的列表。 另外,我们通过在资源文件夹下的application.properties文件中定义端口号来使用端口号8081。 启动tomcat服务器,当我们点击其余URL时,结果为:

现在,我们将构建将使用Netflix Hystrix的用户应用程序,并将其称为用户推荐微服务

使用相同的过程创建另一个应用程序,并将其导入IDE。 我们将使用端口号8082来运行此服务。 像在上一个服务中一样配置端口号。

在用户应用程序中,我们需要启用Hystrix和Hystrix仪表板。 我们可以通过添加以下注释来做到这一点。

为了实现后备机制,我们使用以下代码:

在这里,如果对getMovieDetails的方法调用失败,则将调用其回退方法调用movieDetailsFallback

现在让我们测试后备机制

我们有两个在端口8081和8082上运行的微服务。基本上,运行在8081上的服务会根据用户推荐为我们提供电影列表,运行在8082上的服务会首先在8081上运行呼叫服务,如果失败,则不会显示一般电影列表特定于用户。 两个tomcat服务器现在都在运行。

首先测试运行在8081上的用户推荐服务:

用户推荐服务

现在测试用户服务,该服务又称为用户推荐服务。 由于推荐服务已在此处启动,因此不会发生后退,我们得到的结果完全相同。

现在,我们将停止在端口8081上运行的推荐服务。

用户推荐服务已停止

现在,当我们尝试运行在8082上的用户服务时,它将调用其回退方法,并且仍然会给我们结果。

电影不是特定于用户显示的

由于我们的推荐服务已关闭,因此我们将通过调用fallback方法来显示非特定于用户推荐的电影。 在上面粘贴的包含UserService.java的要点中,我们可以在控制台上看到日志。

控制台日志

Hystrix还为我们提供了仪表板来监视统计信息。

转到此URL —“ http:// localhost:8082 / hystrix ”,然后在URL输入字段中输入“ http:// localhost:8082 / actuator / hystrix.stream ”,然后单击监视流。

Hystrix健康统计

在这里,我们可以看到与实现后备机制的方法相关的所有细节。 我们可以看到成功,超时和失败的百分比。 还有关于线程池的相关信息。

因此,通过这种方式,我们可以使用Hystrix构建容错微服务。

您可以在我的GitHub存储库中找到源代码:

谢谢阅读。

From: https://hackernoon.com/building-fault-tolerant-microservices-using-netflixs-hystrix-c36083ca9af5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值