Hystrix请求合并的使用(一)_全球短讯

2023-04-13 02:12:54 来源:腾讯云 分享到:


(资料图)

在分布式系统中,有时我们需要同时发起多个请求,而这些请求可能需要在客户端进行合并。这可以减少网络开销和客户端线程使用量,并提高系统性能。Hystrix提供了请求合并功能,可以将多个请求合并为单个请求。

Hystrix请求合并的基本原理

在Hystrix中,请求合并是通过以下两个关键组件实现的:

HystrixCommandCollapser:此类用于收集多个请求并将它们合并为单个请求。HystrixCollapserProperties:此类用于配置合并请求的行为。

当我们向服务发出请求时,HystrixCommandCollapser将该请求收集到请求缓冲区中。如果在一定时间内(通过HystrixCollapserProperties设置)有多个请求被收集,则它们将被合并为一个请求。该请求将使用HystrixCommand来发出,然后将响应拆分为单个响应并返回给原始请求。这样,我们就可以减少网络通信和线程使用,并提高系统性能。

Hystrix请求合并的使用示例

在本节中,我们将通过一个示例来演示如何使用Hystrix请求合并。在这个示例中,我们将模拟向外部服务发送多个请求,并使用Hystrix请求合并将它们合并为单个请求。

步骤1:添加依赖

首先,我们需要添加Hystrix依赖。在我们的示例中,我们将使用Spring Boot作为我们的应用程序框架。因此,我们将添加以下依赖:

    org.springframework.cloud    spring-cloud-starter-netflix-hystrix

步骤2:创建外部服务

接下来,我们将创建一个模拟的外部服务,该服务将模拟耗时操作。为此,我们将创建一个名为“ExternalService”的类,并在其中添加一个“getData”方法:

@Componentpublic class ExternalService {    private final Logger logger = LoggerFactory.getLogger(ExternalService.class);    public String getData(String key) throws InterruptedException {        logger.info("getData: " + key);        Thread.sleep(1000);        return "Result for " + key;    }}

如上所述,我们的ExternalService类包含一个名为“getData”的方法,该方法需要一个字符串参数。该方法模拟了一个耗时操作,它会在睡眠1秒后返回一个字符串结果。

步骤3:创建Hystrix请求合并器

现在我们可以创建Hystrix请求合并器。在我们的示例中,我们将创建一个名为“GetDataCollapser”的类,并让它继承自HystrixCommandCollapser:

public class GetDataCollapser extends HystrixCommand> {    private final ExternalService externalService;    private final String key;    public GetDataCollapser(ExternalService externalService, String key) {        super(Setter.withCollapserKey(HystrixCollapserKey.Factory.asKey("GetDataCollapser"))                .andCollapserPropertiesDefaults(HystrixCollapserProperties.Setter()                        .withTimerDelayInMilliseconds(200)));        this.externalService = externalService;        this.key = key;    }    @Override    public Map run() throws Exception {        Map resultMap = new HashMap<>();        String result = externalService.getData(key);        resultMap.put(key, result);        return resultMap;    }    @Override    public String getRequestArgument() {        return key;    }}

如上所述,我们的GetDataCollapser类包含以下内容:

构造函数:该函数初始化HystrixCommandCollapser并将其与Hystrix线程池相关联。在此示例中,我们将HystrixCommandCollapser的键设置为“GetDataCollapser”,并将合并属性设置为延迟200毫秒。run()方法:该方法用于实际执行请求合并操作。在此示例中,我们调用ExternalService的“getData”方法,将其返回结果添加到一个HashMap中,并将其返回。getRequestArgument()方法:该方法返回用于标识请求的参数。在此示例中,我们将其设置为键值。
标签:

Hystrix请求合并的使用(一)_全球短讯

来源:腾讯云 2023-04-13 02:12:54

陕西省市场监管局:坚持发展与规范并重 推动网络交易监管创新 每日速递

来源:中国质量新闻网 2023-04-12 22:58:13

南明区老旧小区改造项目,7个片区已开工,主要涉及这些方面……_环球通讯

来源:贵阳晚报 2023-04-12 21:06:49

ST优拓2022年净利35.48万同比扭亏为盈 业务增加 环球简讯

来源:挖贝网 2023-04-12 20:09:27

德国股市涨跌不一,截至收盘DAX 30上涨0.37%

来源:全景网动态 2023-04-12 19:08:03

天宫TV|美丽而神圣那就是青藏高原!

来源:中国载人航天工程办公室 2023-04-12 18:18:02

富荣基金任命王亦伟为董事长

来源:和讯网 2023-04-12 17:05:01

中构新材进入IPO上市辅导,辅导机构为金圆统一证劵 即时

来源:犀牛之星 2023-04-12 16:22:04

全球快资讯丨星火成炬 | 是劳动者,也是“生活艺术家”

来源: 2023-04-12 15:41:22

三月份CPI涨幅只有0.7%,通缩会来吗? 视讯

来源:物联网圈 2023-04-12 14:46:06

金能科技董秘回复:公司目前聚丙烯具有产能45万吨/年_环球播资讯

来源:证券之星 2023-04-12 13:38:28

2023cpa报名截止时间:4月28日晚8:00_环球快看点

来源:中华网考试 2023-04-12 12:24:29

走到学生中间去_今日要闻

来源:中国教师报 2023-04-12 11:28:09

和讯个股快报:2023年04月12日 远光软件(002063)10:43分,股价快速拉升

来源:自选股智能写手 2023-04-12 10:57:09

社保缴费近31年,个人账户仅5.6万,2023年深圳退休养老金能有多少? 天天微速讯

来源:律法网 2023-04-12 09:56:37

每日看点!4月12日富时中国A50指数期货现涨0.2%

来源:每日经济新闻 2023-04-12 09:12:01

【环球快播报】客车司机双手离开方向盘,边开车边嗦粉 交管部门回应

来源:极目新闻 2023-04-12 08:29:49

城乡孩子“手拉手”-全球视点

来源:中工网 2023-04-12 07:04:19

【天天播资讯】韩国第一枚完全自研火箭将第三飞:耗时12年、2万亿韩元

来源:快科技 2023-04-12 05:42:55

天天简讯:香港强积金录得2019年开年以来最强开局

来源:财联社 2023-04-12 01:23:49

trot全国赛跟金润吉说中文的评委_trot 全球头条

来源:互联网 2023-04-11 22:16:20

快资讯:nba腾讯体育一颗爱心礼物

来源:太平洋礼物网 2023-04-11 21:28:22

倾情一世

来源:互联网 2023-04-11 20:54:21

派能科技(688063.SH):2022年净利润增长302.53%至12.73亿元 拟10派21.8元

来源:格隆汇 2023-04-11 19:52:16

全球即时:《声生不息·宝岛季》:金曲为媒 串联起两岸情感共鸣

来源:华夏经纬网 2023-04-11 18:20:43

【翻完Keep的招股书,我们向王宁提出了四点疑问|港股观察站】 今日视点

来源:节点财经 2023-04-11 17:40:51

当前聚焦:教育机构积分兑换奖品_白金卡兑换奖品

来源:互联网 2023-04-11 16:53:44

巴西总统卢拉将访华,外交部:推动两国各领域互利友好合作提质升级_每日动态

来源:文汇网 2023-04-11 15:57:32

费迪南德回击卡拉格:托雷斯15次碰上维迪奇,只进了3个球

来源:直播吧 2023-04-11 15:05:26

焦点要闻:利欧股份:公司基于各种大语言模型打造的产品“奇思妙想”目前在研发测试阶段,并已交由部分客户试用

来源:证券之星 2023-04-11 14:04:16

Copyright   2015-2022 现在知识产权网 版权所有  备案号:粤ICP备18023326号-5   联系邮箱:855 729 8@qq.com