zoukankan      html  css  js  c++  java
  • Java分布式数据导出实践

    伴随业务发展日益剧增,对数据的要求越来越多也越来越高。

    用户在浏览器发起导出请求--web服务器接收请求--请求后台获取数据--数据统计后生成excel或其他图标--响应给客户端

    整个过程至少5步,才能达成用户目的。

    但其中任何一个地方出错,用户只能重新提交请求,然后等待。

    由于数据需求越来越大、越多,导致后台服务器压力巨大,需要调配更多的系统资源来支撑。

    因此,分布式实现主要有以下几个几点步骤:

    第一步:受理请求

    第二步:生成数据文件、保存到共享目录

    第三步:统一下载页面下载

    这里面使用的技术如下:

    resin、kafka、redis、poi、NAS、后台服务器

    1、web服务器接收到请求后,将请求格式化后发送到kafka上面,然后给页面一个相应:受理成功。

    2、后台服务器订阅kafka特定topic,接收到请求后进行处理,此处可以实现很多个控制来做限流、资源调配等操作。

    3、后台服务器通过指定方式获取相关数据、使用poi技术制作excel文件,首先写入到本地临时目录,然后移动到NAS共享目录。

    4、生成特定标识,将结果存储到redis

    5、用户进入到下载页面,后台根据用户信息算出特定标识,从redis中获取结果后展示在页面上,通过页面下载功能完成最终文件下载。

    各个模块之间完全解耦,不存在相互影响的关系。

    通过以上实现应用在实际生产环境,解决了实际问题。

    希望对大家实际工作有所帮助。

  • 相关阅读:
    02-单臂路由实验
    线程高级篇-读写锁ReentrantReadWriteLock
    线程高级篇-Lock锁和Condition条件
    002 flutter的路由管理--命名路由
    fluuter的路由管理--普通路由
    003 文档的操作
    002 索引的操作
    001 elasticsearch的核心概念
    002 使用nacos完成服务的注册和发现
    001 Nacos的基础内容
  • 原文地址:https://www.cnblogs.com/orionhp/p/6364521.html
Copyright © 2011-2022 走看看