接口一拆多再合并问题

是什么:

    标题写的我自己日后都可能忘记,这里简单叙述一下。当前我们有个 这样的需求,就是客户调用接口中含有多个子接口,每个子接口都需要单独请求一次下游微服务,问题在这里出现了,我们需要将客户的一定请求才分成多个子请求,分别访问成功后再合并成一条记录存入数据库中。

如图:

 

图一
图一

   其中我们的需求是,微服务端记录日志,并通过另外一个程序将三台微服务上的日志抓取下来合并到一起持久化的mysql中。

怎么做?

   首先是在请求接口上做手脚,将一个请求带上两个参数,分别是 num(子接口个数)和reqId(请求ID),这样我们就能先通过reqId找到属于同一个请求的子请求,再通过num保证请求的完整性。

方案一、 利用MySQL

  我们可以将每台服务器行的日志通过flume直接怼到mysql的一个临时表,再通过reqId进行关联/分组查询转储到另一张表中。

评价

优点:技术简单,流程也简单

缺点:当数据量大事对MySQL压力过大,其次时效性不高

方案二、利用storm(推荐)

  

图二
图二

先通过flume采集微服务上的日志,然后丢到kafka再由storm进行流式计算,将reqId相同分发到相同的bolt,用一个list存储当list等于num时写到MySQL。

评价

优点:稳定

缺点:战线拉的优点长

方案三、Hive

图三
图三

这个方案太重了,看图大家应该就明白了。

评价:

优点:和方案一相比好些

缺点:不实时,过于繁重

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值