Java生鲜电商平台-SpringCloud分布式请求跟踪系统设计与实践

Java生鲜电商平台微服务现状

  • 某个服务挂了,导致上游大量报警,如何快速定位哪个服务出问题?
  • 某个核心挂了,导致大量报错,如何快速定位哪里出了问题?
  • 应用程序的性能瓶颈?
  • 线上发布了服务,怎么知道一切正常?
  • App响应延迟,怎么确定有哪些服务导致?
 
 

如何解决

  1. 业务端去解决,通过日志,grep,awk,sed等等定位。
  2. 分布式请求跟踪系统。(帮助开发人员快速理解系统行为,快速定位问题的工具,分布式请求跟踪系统应运而生)

产品

 
 

设计需求

  • 基于日志的分布式请求跟踪系统

    • 业务侵入小
    • 将每个系统分散的日志聚合起来,并进行海量数据日志分析。
  • 核心---调用链

    • 每次请求生成一个全局唯一id,通过它将不同系统生成的日志串在一起,重组成调用链,使其价值达 1+1》2的效果。
    • 开发人员通过分布式请求跟踪链排查问题
    • 对多个请求进行统计和分析。

设计目标

  • 低侵入性

    • 作为非业务组件,尽量减少侵入或者无侵入其他业务系统,对于使用方透明,减少业务开发人员的负担。
  • 灵活的应用策略
    • 使使用方可以根据需求,自定义收集数据的使用范围和粒度。
  • 时效性
    • 从数据的产生和收集,到数据的分析与处理,再到最终的页面展现,尽可能快。
  • 可视化
    • 使用场景友好的用户视角,可读性高。

分布式请求跟踪系统使用的场景

场景一 调用链跟踪

一次请求调用过程的展示,以图形化方式梳理各个为服务端集群之间的调用关系,并记录整个调用过程的耗时,协助开发人员分析整个系统的瓶颈点与热点,从而优化系统。

一次调用的耗时

 
 

多次调用

 
 

访问量与耗时情况

 
 

场景二 调用链的路径分析

对多条调用链进行分析,整理出集群之间的调用关系,计算出整个调用链路的关键节点、直接依赖、间接依赖 强度等等

 
 

场景三 调用来源分析

针对某一特定集群,整理出其他集群对其调用情况,防止错误调用情况的发生。

 
image

场景四 调用量统计

实时统计各个计算的调用次数、QPS、平均耗时、最大耗时等信息,开发人员可以根据相关信息进行容量规划。

 
 

场景五 监控请求调用量

开发人员通过自定义正则表达式,对匹配该规则的URL进行实时监控,包括调用次数等等。。。。。。

 
 

整体架构设计

  • 埋点和生成日志

    • java探针-javaagent技术,通过本地socket将收集到的数据实时发送给本机上的日志收集节点agent,将本机上的多个java探针的日志数据发送到日志收集服务器集群。

       
       
  • 收集和存储日志

    • 日志收集服务器集群对数据进行格式化处理之后,分成三个工作流进行后续处理

       
       
  • 汇总和重组调用链

  • 分析和统计调用链

    • 原始数据直接存入到ES集群中,用于页面实时调用链的展示
    • 原始数据存入到本地的日志中,通过Flume上传到HDFS急群众,利用Hadoop集群定时的进行离线分析,分析后的结果存入到ES集群中,用于页面数据分析的展示。
    • 原始数据发送到Spark/Flink在线分析集群,进行QPS、平均耗时等实时数据统计,分别将计算结果保存到Redis集群和ES集群中,用于页面实时数据统计的展示。

       
       

整体架构

 
 

埋点和生成日志

  • 请求唯一标识(TraceID)
  • 时序标识(SequenceID)
  • 深度标识(DepthID)

重点是ID的生成,怎么生成呢?

ID体系设计

  • 请求唯一标识(TraceID)网关生成
    分布式id

  • 时序标识(SequenceID)
    每层从1开始递增,放在threadlocal里面。下一层继承上一层的深度,加一个点。

  • 深度标识(DepthID)

    点的个数递增

     
     

开源产品选择

  • Pinpoint
  • Apache SkyWalking

Java生鲜电商平台-SpringCloud分布式请求跟踪系统设计与实践的更多相关文章

  1. Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案

    Java生鲜电商平台-SpringCloud微服务架构中分布式事务解决方案 说明:Java生鲜电商平台中由于采用了微服务架构进行业务的处理,买家,卖家,配送,销售,供应商等进行服务化,但是不可避免存在 ...

  2. Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

    Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们 ...

  3. Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理

    Java生鲜电商平台-SpringCloud微服务架构中核心要点和实现原理 说明:Java生鲜电商平台中,我们将进一步理解微服务架构的核心要点和实现原理,为读者的实践提供微服务的设计模式,以期让微服务 ...

  4. Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战

    Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战 一.写在前面 在Java生鲜电商平台平台中相信不少朋友都在自己公司使用Spring Cloud框架来构建微服务架构,毕竟现在这 ...

  5. Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲

    Java生鲜电商平台-SpringCloud微服务开发中的数据架构设计实战精讲 Java生鲜电商平台:   微服务是当前非常流行的技术框架,通过服务的小型化.原子化以及分布式架构的弹性伸缩和高可用性, ...

  6. Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构

    Java生鲜电商平台-深入理解微服务SpringCloud各个组件的关联与架构 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留 ...

  7. Java生鲜电商平台-API请求性能调优与性能监控

    Java生鲜电商平台-API请求性能调优与性能监控 背景 在做性能分析时,API的执行时间是一个显著的指标,这里使用SpringBoot AOP的方式,通过对接口添加简单注解的方式来打印API的执行时 ...

  8. Java生鲜电商平台-微服务入门与服务的拆分架构实战

    Java生鲜电商平台-微服务入门与服务的拆分架构实战 刚开始进入软件行业时还是单体应用的时代,前后端分离的概念都还没普及,开发的时候需要花大量的时间在“强大”的JSP上面,那时候SOA已经算是新技术了 ...

  9. Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战

    Java生鲜电商平台-生鲜系统中微服务架构设计与分析实战 说明: Java生鲜系统中微服务的拆分应该如何架构设计与分析呢?以下是我的实战中的设计与经验分析. 目录 1. 微服务简介2. 当前现状3. ...

随机推荐

  1. EF Core 基础知识

    数据库连接字符串 在 ASP.NET Core 添加配置片段: { "ConnectionStrings": { "BloggingDatabase": &qu ...

  2. 2019最新EI源刊目录

    2D Materials Journal3D Printing and Additive Manufacturing Journal3D Research Journal3DTV-Conference ...

  3. C# 模拟浏览器并自动操作

    本文主要讲解通过WebBrowser控件打开浏览页面,并操作页面元素实现自动搜索功能,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点 WebBrowser:用于在WinForm窗体中,模拟浏览 ...

  4. 955 不加班的公司名单:955.WLB

    前两天说到,韩老师的 Github 总 star 数量超过了 20000!全球排名第 232! 他,TypeScript GitHub Star 上海第一,全国第四!GitHub 总标星超两万! 其实 ...

  5. Python使用openpyxl操作excel表格

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 ht ...

  6. Springboot vue.js html 跨域 前后分离 shiro权限 集成代码生成器

    本代码为 Springboot vue.js  前后分离 + 跨域 版本 (权限控制到菜单和按钮) 后台框架:springboot2.1.2+ mybaits+maven+接口 前端页面:html + ...

  7. Android Battery 架构【转】

    Android Battery 架构 Android电源 android中和电源相关的服务有两个他们在/frameworks/base/services/core/java/com/android/s ...

  8. Scrapy框架(一)

    Scrapy框架(一) 国内镜像源: 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.ustc.edu.c ...

  9. asp.net core 系列 9 三种运行环境和IIS发布

    一.在asp.net core中使用多个环境 ASP.NET Core 配置是基于运行时环境, 使用环境变量.ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONME ...

  10. Python活力练习Day4

    Day4:将列表的值按相反顺序依次输出         eg :  input : list = [1,2,3,4,5] output : [5,4,3,2,1] 方法一:时间复杂度O(n),其中 n ...