新闻详情

新闻详情

首页 / 资讯中心 / 详情

Storm在大数据领域的10个典型应用场景解析

发布时间:2026/9/26 12:32:29来源:尧图网络
Storm在大数据领域的10个典型应用场景解析
1. 为什么今天还在聊Storm流计算鼻祖的定位不能搞错1.1 场景选型的底层判断什么时候该上流计算这两年一提实时计算大家默认在聊Flink面试里也基本都是Flink的题目。但我面试数据开发候选人时有一个问题会一直保留你讲一讲Storm的Topology是怎么跑起来的。不少候选人会愣住觉得这东西是不是已经被淘汰了怎么还问。其实Storm一点都不“过时”它只是“老”了。Flink的核心灵感大量来自StormStorm 的 Spout / Bolt 编程模型、DAG 流拓扑、acker 消息确认机制在Flink和Kafka Streams里都能看到影子。国内很多银行、运营商、车联网平台的实时管道至今还是Storm集群在跑只是维护的人未必会发博客告诉你。所以这篇文章聊“Storm在大数据领域的10个典型应用场景”不是考古而是想帮你建立一套判断逻辑什么样的业务真的需要毫秒级流计算什么样的业务用离线批处理就够而在实时计算这条路上Storm的哪些设计到现在依然是通用思路。对做毕业设计、转岗大数据开发、或者接手旧系统的人来说这套判断能力比单纯会写一个Flink WordCount值钱得多。1.2 Topology是核心Spout、Bolt、分组策略聊Storm的场景绕不开它的核心编程模型。一个流处理任务在Storm里叫Topology它是有向无环图由两类节点组成Spout 是数据源负责从Kafka、MQ、文件或者接口里面拉数据不停地把数据转成一个一个tuple吐出来Bolt 是处理节点负责过滤、转换、聚合、落库每个Bolt干一件事多个Bolt串在一起就组成了一条流式处理管道。这里最值得记住的是StreamGrouping也就是tuple往下游分发时的分组策略。按字段分组fieldsGrouping会把相同字段值的tuple稳定地发给同一个Bolt实例比如按userId分组就能保证同一个用户的事件都进入同一个机器上的同一个Bolt这样在Bolt内部维护用户状态才靠谱。随机分组shuffleGrouping则用于负载均衡类的场景。这个模型的好处是纯粹、直观。一个大型Topology可以被拆成很多个Bolt每个Bolt只做一件事后续升级或者加并行度只动局部节点。坏处是需要自己管理生命周期尤其是状态、窗口和容错不像Flink内置了比较完善的时间窗口和状态管理。所以实际用Storm做项目时代码里会有一堆自定义的缓存、定时器、外部存储这部分恰恰是工程师经验的主要体现。1.3 Storm的可靠性语义与后续框架的继承Storm提供了一套acker机制来保证数据不丢大致逻辑是Spout发出去的每个tuple都会被跟踪所有下游Bolt处理完并返回ack之后Spout才确认成功。如果某个Bolt处理失败或者超时Spout会重新发送这个消息。这套机制带来了两个重要的现实后果。第一Storm默认是at-least-once语义也就是消息可能重复处理实际上几乎不可能做到不重不漏。做数据管道时必须在下游加幂等去重的策略比如用唯一业务ID防止重复写入这是Storm项目里最常见的一个坑。第二acker机制本身占用网络和内存资源如果对每条消息都开全链路确认吞吐会明显下降。在日志分析这类允许少量丢数据的场景我一般会把acker数量调低甚至直接关闭在金融风控和账务类场景则老老实实开完整确认。后来的Flink虽然实现了更强的事后状态恢复机制但Storm这套“失败就重发下游自己保证幂等”的思路依然是很多流式系统的运作原型。理解了Storm的acker再去看Kafka的consumer offset管理、Flink的checkpoint含义都会顺畅很多。1.4 十个场景是怎么选出来的Storm在落地时有价值的场景远不止十个比如还有图计算、规则引擎、A/B实验分流等。我挑出来的这十个是同时满足“实际生产用得多”和“能体现Storm模型特点”的数据管道清洗、实时指标聚合、实时数仓加速、点击流漏斗、实时推荐、反作弊风控、业务告警、设备健康监控、网约车热点分析、金融行情聚合。前面几个偏数据工程中间偏互联网业务后面偏垂直行业落地。按这个顺序读下来你会自然地理解一条流式数据从采集到消费再到业务决策和价值交付的完整链路。2. 场景一至三数据管道与数据工程——清洗、聚合、加速2.1 场景一Kafka到存储层的实时日志管道这个场景是Storm在生产环境中最经典、也最适合练手的用法日志从各个服务端不断产生进入Kafka然后由Storm消费、解析、清洗最终写入ES、HBase或者ClickHouse供后面检索和统计。我当时做网约车相关项目时原始日志长得很乱有的字段缺失有的时间戳格式不统一有的JSON直接解析失败。用Storm做清洗时拓扑结构非常清晰KafkaSpout负责消费原始数据配置好Kafka的topic和groupParseBolt做第一层清洗解析JSON字段缺失的补默认值解析失败的进死信队列TransformBolt做第二层处理时间戳统一转成yyyy-MM-dd HH:mm:ss枚举字段转成数字ID经纬度精度截断SinkBolt负责批量写入ES或HBase按积攒条数或者时间间隔批量flush。这套拆法的好处是每个Bolt职责单一后期可以单独提升某个Bolt的并行度比如ParseBolt成了瓶颈就把它的并行度从4调到8拓扑其他部分不用动。这里有个非常容易被忽略的参数叫maxPending它限制了Spout有多少条消息可以处于未确认状态。设得太小会限制吞吐设得太大在下游慢的时候会堆积大量内存。我一般从1000这个值开始压测根据内存占用和Kafka消费延迟反复调。另一个实战点在于幂等。Storm重发消息是常态写ES时用日志原始生成时间加业务ID拼成文档ID写HBase时把业务ID直接作为RowKey这样同一条消息无论被处理几遍最终落库只有一份。做日志管道时我心里始终有一句话处理逻辑可以重复跑但结果不能重复算。2.2 场景二实时指标聚合与可视化大屏第二个高频场景是实时指标聚合典型需求是“每隔一分钟统计全平台过去五分钟的下单量、GMV、活跃用户数然后推到大屏上”。Storm里没有内建窗口算子这是它和Flink最大的区别之一。早期团队只能自己用本地缓存实现窗口在Bolt里维护一个Mapkey是分钟桶value是计数通过定时线程每分钟把上一个完整窗口的结果发到下游然后把旧桶清掉。后来Storm 1.x引入了streams API提供了现成的窗口算子比如windowedCount、窗口聚合等比裸写Bolt方便很多但底层思路依然是时间桶。做UV这类去重类聚合指标时不能把userId存放在JVM内存的Set里因为拓扑一旦重启或者Bolt实例迁移状态全部丢失。我习惯用Redis解决UV用HyperLogLog一个key占12KB左右统计误差在0.8%以内对绝大多数业务报表足够如果是精确去重就用set结构但是要注意key过期时间我一般给半小时TTL因为窗口本身也不长。这里特别想提一句数据可视化。热搜里频繁出现“校园大数据—数据可视化”“echarts数据可视化大屏”这类词说明很多人在做大屏项目。但大屏只是最后一公里它的价值取决于上游计算的准确性和时效性。用Storm把指标算好写入Redis后端接口每秒读一次Redis前端用ECharts刷新整个链路会非常干净也容易排查问题。如果直接在数据库里跑大屏统计SQL数据量一上来查询延迟和数据库压力就完全失控了。2.3 场景三实时数仓加速层与binlog明细同步第三个场景是实时数仓具体来说是用Storm做实时明细的拼接和落库给离线数仓提速。做过数仓的人都知道离线任务T1是常态但运营和业务经常要求看今天截至目前的实时数据。Storm在这里的角色可以理解成一个实时ODS和DWD层的搬运工。我当时见过的一个实际做法是业务库的binlog通过Canal解析后写入KafkaStorm消费这些变更事件做两件事。第一把业务代码翻译成可读字段比如订单状态从数字映射成中文把冗余维表轻度补充进去第二写成明细宽表落到HBase或ClickHouseRowKey用订单ID更新时天然按ID覆盖。这个方案最有技术含量的地方在于更新合并。订单是一条会变化的数据从下单、支付到完成binlog会有多条消息。如果RocketMQ或Kafka分区顺序能保证同一条订单发到同一分区Storm这边按主键做latest-by-update即可。但早期Kafka版本如果没配好partitioner同一条订单的消息可能分散在不同分区就需要在Bolt里做去重合并这会让架构复杂一个量级。所以我的经验是先保证源头消息有序再谈流式拼接顺序不对后续全是补丁。当时Flink CDC还不像今天这么普及Storm加Canal的链路已经是“准实时数仓”的常见组合。放到现在对比Flink CDC确实是更现代的替代方案但Storm这套“事件流进、明细表出”的主键更新思想和Flink CDC的核心思路是一致的。理解了它你基本就理解了实时数仓最底色的一块。3. 场景四至六互联网业务——点击流、推荐和风控3.1 场景四点击流分析和漏斗转化计算点击流是互联网公司的标准菜电商、内容、教育类产品都会做类似的事用户从首页进来浏览了商品加入购物车最后支付中间每一步流失了多少人哪里转化率最低运营要看这个数据做优化。用Storm做漏斗计算时第一个决定是分组策略。漏斗需要按单个用户串起前后行为所以从kafka消费埋点后第一级Bolt就要做字段清洗然后按userId走fieldsGrouping保证同一个用户的所有事件进入同一个Bolt实例。在这个Bolt里每个用户维护一个session状态记录他已经走到了漏斗的第几步以及当前步的事件时间。这里有个常见的坑埋点数据有重复和乱序。比如用户快速点了两次加购或者手机离线一段时间后集中上报事件顺序可能颠倒。我处理的办法是判断“当前事件是否比已记录状态更晚”如果更早直接丢掉不做状态回退如果一个session超过30分钟没有新事件就判定为session结束清理缓存状态。漏斗统计的下游输出一般有两路一路写入Redis供实时看板查询另一路落HDFS或者消息队列供离线分析做完整的转化路径还原。Storm适合做实时分钟级漏斗适合看“此刻的趋势”精细到用户级的长周期路径还原更适合离线数仓。口径选择上埋点本身的字段定义比计算逻辑更容易影响结果同一套代码配两套埋点算出来的转化率可能差好几个百分点所以每接一个新需求先让产品确认清楚“访问、浏览、加购、支付”每一步的事件条件再动手写拓扑。3.2 场景五实时行为特征与个性化推荐触发推荐系统通常不是单独一个Storm拓扑就能完成的但Storm在推荐链路里扮演一个重要角色实时行为特征的计算和触发。一个完整的推荐系统召回阶段通常依赖离线训练好的模型或画像但用户刚刚发生的浏览行为比如最近五分钟看了什么、点了什么、加购了什么这些highly瞬时信号很难等离线任务跑完必须实时算出来。我在实现中把拓扑设计成三层。第一层是预处理Bolt过滤机器人流量、识别session、规范物品ID第二层是特征Bolt对每个用户维护一个最近行为的滑动窗口统计浏览频次、品类偏好、加入购物车的物品列表并把结果写入Rediskey通常是userId加时间片TTL设成十分钟第三层是触发Bolt当用户行为达到某种条件比如短时间内加购超过三个商品或者连续看了同类目物品五次以上就发送一条触发消息到推荐服务推荐服务再读取Redis里的实时特征结合离线候选集做重排。这里最重要的一条经验是不要把复杂的排序模型塞进Storm里跑。Storm擅长的是分布式、低延迟地处理离散事件而不是跑计算密集型的深度学习推理。排序模型放在独立的推荐服务里通过RPC调用效率和可维护性都更高。让Storm做它擅长的“行为计数、偏好统计、条件触发”做完了把结果交给下游这套分工在多个项目里验证都靠谱。3.3 场景六反作弊与交易风控评分风控是实时计算最早的落地领域之一。登录、下单、领券、支付这些敏感操作每秒钟会产生大量事件平台要在几百毫秒内判断这次操作是不是风险操作是放过、弹验证码还是直接拦截。Storm在这个场景里的优势是低延迟加上可以分布式并行跑复杂规则链。常见的做法是把风控拓扑设计成一个流水线式的规则引擎。第一层Bolt做基础信息解析从请求里提取设备指纹、IP、用户ID、操作类型、金额第二层Bolt做频次统计比如“同一个设备号在过去一小时内注册过多少次账号”“同一个IP在五分钟内下单多少次”这类统计用Redis Incr加过期时间实现第三层Bolt做规则匹配规则可以配置在外部规则库中Bolt启动时拉下来缓存在本地最后一层Bolt综合各条规则的得分输出一个风险分值分值超过阈值就标记拦截并写入黑名单消息由风控后台做人工审核。做这个场景时我被坑过最狠的一次是把频次统计存在了JVM本地Map里。拓扑正常运行没问题一rebalance或者某台机器重启统计值全部清零风控直接失效了半小时。从那以后我就立了个规矩凡是要跨Bolt实例共享的计数类状态一律放Redis等外部存储本地只放那些允许丢失的临时状态。另外有些风控场景对延迟要求极高比如支付环节要求200毫秒内返回决策这时要把Redis访问尽可能合并成pipeline减少网络往返。其实这套“先统计、再规则打分、再综合决策”的思路后来很多实时风控平台也依然在用Storm只是其中一个比较早的实现载体。4. 场景七至八可观测性——指标告警和集群健康监控4.1 场景七业务级告警计算与降噪推送告警监控可能是Storm场景里性价比最高的一个。业务系统通常已经有日志和埋点如果只靠人工盯监控面板眼睛会瞎所以我们希望系统能在指标异常时主动通知人。过去的做法是用定时任务每分钟跑SQL去查最近五分钟的指标如果异常就发告警。但这种做法的痛点很明显数据实时性差、数据库压力大、告警延迟导致故障已经影响了用户才通知。用Storm之后链路会简洁很多日志和业务埋点实时进入KafkaStorm负责持续统计成功率、响应耗时、订单量等指标按一分钟粒度聚合滑动窗口超过阈值就发告警。告警拓扑需要专门设计“降噪”能力这是我觉得最值得分享的细节。直接对每个窗口超阈值就报警高峰期的一个抖动可能触发几十条告警把人炸得麻木。我采用的做法有三层第一连续三个窗口超阈值才触发单窗口毛刺忽略第二同一个业务同一个告警类型在十分钟内只发一条后续告警合并进同一条消息第三告警消息里带上当前指标值、对比基线、触发时间方便值班人员直接判断严重程度。这和Prometheus等监控系统的关系也值得一提。Prometheus擅长基础设施指标基于拉取模式采集CPU、内存、磁盘这些固定指标Storm更适合做业务级的复杂计算比如需要跨多个数据源关联、需要做过滤转换汇总之后才知道是否异常的指标。两套体系可以共存前者管机器后者管业务。4.2 场景八主机和设备健康度实时监控第八个场景偏基础设施和物联网本质上是把心跳和指标数据变成实时判定信号。比如设备每小时会上报心跳如果连续十分钟没收到心跳就要判定设备离线并生成工单或者大数据集群里每台机器定期上报CPU、磁盘、内存使用率需要实时感知集群健康状态。这类场景的拓扑结构通常是Spout消费设备上报的消息Bolt A解析消息并提取设备ID和上报时间Bolt B按设备ID做fieldsGrouping在本地维护一个“最近收到心跳时间”的缓冲表定时任务周期性扫描缓冲表发现超过阈值的设备就发给告警Bolt。这里要注意一个规模问题。如果只有几千台设备用定时任务扫数据库完全够用没必要上Storm。真正需要Storm的时候是设备量到了几十万甚至上百万奥斯陆心跳频率高单台机器统计不过来而且希望把设备监控和大数据集群的统一监控整合到一条流式管道里。所以这个场景的判断依据不是“能不能做”而是“数据量级和集群现状是否匹配”。这种情况还经常牵出一个很现实的话题大数据集群本身怎么部署、怎么保证高可用。Storm集群至少三个ZooKeeper节点Nimbus和Supervisor分开部署消息被消费后要关注堆积量。把一个实时任务跑在单台服务器上调试和跑在完整分布式集群里完全是两个难度级别。做毕设或者学习时建议大家至少在虚拟机或者容器环境里搭一套三节点的集群把Nimbus、Supervisor、ZooKeeper的角色分工跑一遍这个经验非常值钱。5. 场景九至十垂直行业的硬核落地——网约车热点分析与行情计算5.1 场景九网约车热点区域与运力调度网约车是我见过最适合用来串联整个大数据学习路径的业务场景从采集、清洗、存储、计算到可视化一条线非常完整。热搜里频繁出现“网约车大数据综合项目——基于Spark的数据清洗”“网约车大数据综合项目——数据可视化flaskecharts”说明很多人在拿它做毕业设计。这个方向很好但我想多说一句完整的网约车项目里离线计算只能回答“昨天哪块区域订单多”而网约车的调度本质上需要实时知道“此刻哪个区域有大量订单没人接”。用Storm来实现热点区域分析时流程大概是这样的车辆GPS和用户订单实时上报到KafkaStorm消费后把经纬度换算成网格ID。换算逻辑很直接比如以500米为边长对经纬度做整数除法得到gridX和gridY作为网格编号同一网格下所有订单进入同一个Bolt实例做聚合统计最近十五分钟的订单量、平均接单时长、完成率再结合司机在线数估算供求比。热点数据最终有三类去向一是写入Redis供ECharts大屏做热力图展示这个基本是毕设标配二是写入HBase或ClickHouse做历史回溯和供需分析三是直接发冷却运力调度服务让调度中心在某个网格供不应求时往那个方向调车。这里最值得注意的性能点是网格编号设计。直接用浮点数经纬度做分组字段会导致同一个网格的数据被分散到不同节点聚合就完全错了。所以我坚持在Bolt里先完成经纬度转网格编号把网格ID输出成一个整型字符串再用fieldsGrouping按网格ID分组。这一行设计是整个拓扑正确性的基石。另外GPS数据本身噪声很大有的车停在车库不动也会周期性上报在实时计算之前先用速度、状态位等字段做一次过滤能显著减少无效数据。5.2 场景十金融行情聚合与异动识别第十个场景来自金融领域比如交易所行情、期货指数、外汇报价类的实时数据处理。这类数据的特征是事件频率高、延迟要求严、对计算结果准确性要求高。Storm在这类场景中不是高频交易柜台里那种微秒级的直连系统它更适合做中低延迟的行情分析、指标计算和风控监测。行情数据一般是tick级的每个交易标的每一笔成交都会产生一条数据。Storm的拓扑可以做这样几件事按标的ID分组维护最近N根K线的窗口状态实时计算涨跌幅、成交量、价格均值、以及相对历史波动率的偏离程度当某个标的出现连续快速上涨或下跌时触发异动消息发送给行情监测服务由人工或者自动程序进一步处置。相比前几个场景金融行情场景对拓扑结构的精细度要求更高。首先是序列化开销这个场景下我一般会关闭Java原生序列化改用Kyro并配置好对象注册否则吞吐会掉一个档次。其次是GC停顿Bolt里的缓存对象如果频繁创建会造成明显延迟尖刺所以对象尽量复用避免在process方法里new大对象。最后是结果输出高频中间结果不要直接落库先输出到Kafka由下游独立消费者做落库避免行情峰值时把存储系统压垮。对正在做毕业设计的同学我建议拿“行情数据模拟器加Storm聚合加Redis大屏”来做这个组合比纯静态数据展示更能体现实时计算的核心价值。但做的时候要有合规意识使用公开模拟数据或者自己生成的样例数据就好不要涉及真实交易敏感数据。6. 聊几个真正踩过的坑和选型上的一点个人建议把十个场景过完之后我特别想再集中分享几个问题这些问题不是拓扑设计层面的理论问题而是真跑生产时才会遇到的细节。第一个坑是关于topology的并行度和资源预估。很多人一开始把每个Bolt的并行度都调得很高结果集群并行度加起来远大于机器核数单机负载直接拉满系统频繁超时。我后来学乖了先按数据量估算每秒钟需要处理多少条消息再按单线程处理能力估算需要多少个并行度再留出30%到50%的余量而不是盲目堆并行度。第二个坑是拓扑升级和rebalance。Storm的Topology是常驻运行的改代码后不能像离线任务一样直接重跑需要重新打包并执行storm jar提交。rebalance过程中如果拓扑里还持有本地状态状态会丢失。所以我的建议是一开始就把需要持久化的状态放到Redis或外部存储里结构上做到“无状态Bolt”拓扑才能随时重启、随时迁移。第三个坑是反压。Storm没有Flink那种非常完善的反压传播机制当下游Bolt处理不过来时消息会在内存队列里堆积最终引发内存溢出。务实做法是控制Spout的maxPending同时监控Kafka的消费延迟一发现延迟持续上涨就得考虑加并行度而不是靠Spout无限拉数据。第四个坑是调试体验。Storm在本地调试其实挺方便的可以直接用一个进程模拟完整集群一条命令跑起来就能在日志里看到Spout和Bolt的输出。建议在做毕设或者学习阶段先把拓扑放在本地模式里跑通确认每个Bolt的输入输出正确之后再部署到多节点集群。直接在三节点集群上调试流水线光是看日志定位数据流就已经很折磨人了。最后说点大实话。如果你现在才刚开始学实时计算我不建议把Storm作为唯一的学习对象Flink的窗口、状态、容错机制确实更完善更接近现在工业界的默认选择。但Storm的价值在于它的模型足够简单和清晰你能用一个周末就理解流式处理的全部核心环节。理解透Storm之后再看Flink的checkpoint、watermark、状态后端你会觉得很多东西似曾相识只不过Flink把它做得更系统、更省心。所以我的建议是新手可以把Storm当成理解流式处理的入门课用两个小场景练手比如做一个日志清洗管道跑通Kafka到Storm到Redis的完整链路然后立刻转去熟悉Flink的窗口和状态机制因为目前真正招聘市场的主流是它。而如果你是在维护老系统或者在网约车、车联网、金融行情这类平台工作那Storm这套东西不白学你每天对付的Topology就是这些场景在真实世界里运行的方式。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

NG-ZORRO 输入框自定义计数能力完整指南:nzShowCount 与 nzCount 的配置、策略与源码原理 2026/9/26 15:46:08

NG-ZORRO 输入框自定义计数能力完整指南:nzShowCount 与 nzCount 的配置、策略与源码原理

UI组件前端 【免费下载链接】ng-zorro-antd Angular UI Component Library based on Ant Design 项目地址: https://gitcode.com/gh_mirrors/ng/ng-zorro-antd 点击查看 免费下载 在表单场景中,输入框的字数统计并不总是"数 JavaScript 字符串的 l…

阅读更多 →
Bandit B105 硬编码密码字符串检测插件(hardcoded_password_string)全面解析 2026/9/26 15:46:08

Bandit B105 硬编码密码字符串检测插件(hardcoded_password_string)全面解析

SAST应用安全 【免费下载链接】bandit Bandit is a tool designed to find common security issues in Python code. 项目地址: https://gitcode.com/gh_mirrors/ba/bandit 点击查看 免费下载 导读 B105(hardcoded_password_string)是 Band…

阅读更多 →
C# 中用 winrar 和 winzip 解压缩 zip 文件:TaoToken 统一 Key 配置与验证 2026/9/26 15:46:08

C# 中用 winrar 和 winzip 解压缩 zip 文件:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Windows-universal-samples 的 MessageDialog 示例:UWP 消息对话框、命令回调与默认按钮实战指南 2026/9/26 15:46:08

Windows-universal-samples 的 MessageDialog 示例:UWP 消息对话框、命令回调与默认按钮实战指南

示例工程 【免费下载链接】Windows-universal-samples API samples for the Universal Windows Platform. 项目地址: https://gitcode.com/gh_mirrors/wi/Windows-universal-samples 点击查看 免费下载 本篇技术指南以 Windows-universal-samples 仓库中 archived/…

阅读更多 →
浏览器里的图片修复:擦掉瑕疵、4倍超分,3步出图 2026/9/26 15:46:08

浏览器里的图片修复:擦掉瑕疵、4倍超分,3步出图

浏览器里的图片修复:擦掉瑕疵、4倍超分,3步出图 【免费下载链接】inpaint-web A free and open-source inpainting & image-upscaling tool powered by webgpu and wasm on the browser。| 基于 Webgpu 技术和 wasm 技术的免费开源 inpainting &…

阅读更多 →
OSRM 路由服务 osrm-routed 运行时环境变量深度解析:共享内存锁目录、就绪信号与访问日志控制 2026/9/26 15:46:02

OSRM 路由服务 osrm-routed 运行时环境变量深度解析:共享内存锁目录、就绪信号与访问日志控制

后端GIS图计算 【免费下载链接】osrm-backend Open Source Routing Machine - C backend 项目地址: https://gitcode.com/gh_mirrors/os/osrm-backend 点击查看 免费下载 导读 osrm-routed 是 OSRM(Open Source Routing Machine)C 后端的核…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉