前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口一拆多再合并问题

接口一拆多再合并问题

作者头像
Java架构师必看
发布2021-08-09 15:42:24
6150
发布2021-08-09 15:42:24
举报
文章被收录于专栏:Java架构师必看Java架构师必看

是什么:

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

如图:

图一
图一

图一

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

怎么做?

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

方案一、 利用MySQL

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

评价

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

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

方案二、利用storm(推荐)

图二
图二

图二

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

评价

优点:稳定

缺点:战线拉的优点长

方案三、Hive

图三
图三

图三

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

评价:

优点:和方案一相比好些

缺点:不实时,过于繁重

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 怎么做?
    • 方案一、 利用MySQL
      • 评价
    • 方案二、利用storm(推荐)
      • 评价
    • 方案三、Hive
      • 评价:
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档