为什么订餐不会凉凉和牛顿发现万有引力有关

简介: 希望通过本次课题,与大家探讨订餐系统的技术难点及提出解决方案。

分享人:Digoal,阿里云数据库产品经理

正文:

本篇内容将从5个部分为读者介绍订餐系统为什么不会凉凉,分析这其中的技术手段及技术难点并提出解决方案。

Ÿ 为什么要讨论这个问题?

Ÿ 牛顿告诉我们为什么真相离我们越来越远

Ÿ 懒人改变历史 - 网上订餐凉凉史

Ÿ 牛顿给了饿了么什么启发?

Ÿ 如何利用MyBase PG解决问题


这次的话题依旧和日常生活息息相关,同样也会引申到数据库里面,在技术层面也是非常有挑战性的。在网上订餐系统中,牛顿起什么作用呢?这两者之间到底存在什么关系?这背后的技术方案又是什么样的呢?

一、为什么要讨论这个问题?

民以食为天的中国,一日三餐是我们每天都要思考的问题。今天吃什么,什么时候能吃得上,这是生活的必要元素。如果吃不好会影响了生活工作,通过网上订餐,拿到手上依然是热腾腾的,那么网上订餐有什么技术来保障呢?


二、牛顿告诉我们为什么真相离我们越来越远

牛顿因为被一颗苹果砸到头上进而想到万有引力,也是因为他的发散性思考才会想到的。我们再来看看网络订餐平台,在这个产品刚刚上线的是时候肯定会遇到很多技术的瓶颈。我们应该发挥自己的想象力,多去看看别人家的产品,了解一下这些瓶颈怎么突破怎么解决。


三、懒人改变历史 - 网上订餐凉凉史

接下来我们讲一下网上订餐的凉凉史。为什么会凉凉首先是骑手没钱赚骑手调度算法不够优 导致人不够调度算法有问题,导致骑手接的单与单之间距离过远;调度算法错误导致派送订单时间过短,保温箱容量有限;骑手薪资与配送时间限制、单数不挂钩, 无保障配送时长等问题导致凉凉。最主要的还是与调度算法的技术相关。


四、牛顿给了饿了么什么启发?

网上订餐平台可以从缩短配送时间、降低“单数/骑手”比例两个核心指标提高效能那么怎样让骑手的多单配送目的地就近?其实这也是pgrouting – 图算法, 商旅问题;怎样避免或减少骑手有未完成的单就安排下一单?怎样避免保温箱超载?怎样避免呼叫远离卖家的骑手?

初步的解决方法就是通过频繁更新的骑手位置、查询范围、数组、其他in查询、距离排序(GIS, 距离排序)  限制返回N条、其他优先级排序返回等手段解决。

图片.png 

但也有几个痛点,只能用1个条件进行索引过滤、其他条件需要回表后再过滤、需要额外对空间进行排序过滤。这几个痛点也导致了整个性能并不好用。当然费用也相对比较高。


五、如何利用MyBase PG解决问题

经过独立思考之后,我们想到了另一个方案:购买集群后选择pg 引擎创建实例,创建实例后还需要创建create extension gano(阿里云空天数据库模块)、create extension btree_gist( 空间、普通类型组合通用索引模块)、create extension intarray(数组组合通用索引模块)这三个模块。结构设计为:

create table tbl_pos    (id int primary key,

        att1 int, att2 int, att3 int, att4 int[],

        mod_time timestamp, pos geometry);  

图片.png 

大家可以看下图,我们把问题拆成三个子查询,每个子查询的条件、空间排序不一样,最终把耗时6秒的查询降到10毫秒。

图片.png 

 

图片.png 

最后,我们来看一下指标怎么样。一是机器数26核;二是数据量是2000万。最终更新速度达9.6万/s、骑手调度查询达 5000/s, RT 11毫秒。通过利用MyBase达到500倍的性能提升。

 

 

相关文章
|
JavaScript 前端开发 测试技术
移动端(APP)自动化脚本工具详细列举(autojs、easyclick、hamibot、ctrljs ...)
移动端(APP)自动化脚本工具详细列举(autojs、easyclick、hamibot、ctrljs ...)
6350 0
|
5月前
|
SQL 数据可视化 开发者
Dataphin功能Tips系列(90)告别“查无数据”,行级权限自助申请功能上线
Dataphin推出行级权限可视化提示与自助申请功能,帮助分析师快速识别“无数据”原因(如被自动过滤),并一键提交权限申请。审批通过后即可查询全量数据,大幅降低沟通成本,提升分析效率。
232 8
|
监控 供应链 Java
【PMO项目管理】深入了解项目管理 | Stakeholder 利益相关者 | 利益相关者之间的立场差异
【PMO项目管理】深入了解项目管理 | Stakeholder 利益相关者 | 利益相关者之间的立场差异
883 0
|
3月前
|
机器学习/深度学习 数据采集 人工智能
建筑玻璃缺陷目标检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含3000张真实场景建筑玻璃图像,标注5类缺陷(破裂、打胶、起霜、污染、未加工),采用标准YOLO格式,含train/val/test划分及data.yaml配置,专为YOLO系列模型训练优化,助力幕墙质检与工业AI检测。(239字)
326 0
建筑玻璃缺陷目标检测数据集分享(适用于YOLO系列深度学习分类检测任务)
|
4月前
|
人工智能 自然语言处理 算法
AI实现代码开发的核心逻辑(一)
教程来源 https://rvtst.cn/category/software-dev.html 本文深入剖析AI代码开发的底层原理,涵盖数据准备、模型架构、训练策略与推理优化,从GitHub Copilot到大模型Agent,系统揭示AI如何理解与生成正确、高效代码,助你不仅会用,更能懂原理、建系统。
|
8月前
|
SQL 自然语言处理 数据挖掘
没有 GPU 不用 LLM 能把 Text2SQL 做到什么程度?
润乾 NLQ 抛弃大模型与昂贵算力,专注构建规则驱动的 Text2SQL 引擎。通过“业务词典+语法手册”实现自然语言到 SQL 的精准编译,支持复杂多表关联、聚合计算与智能语义解析,在 BI 场景下达成高准确率、可解释、低成本的查询能力,展现确定性智能在企业级应用中的强大潜力。
|
Rust 数据可视化 C++
WASM性能分析-插桩方案
本文结合了代码插桩和性能火焰图的技术,以 WebAssembly 为例介绍了性能分析的方法和相关实现。
1049 13
|
设计模式 人工智能 自然语言处理
AI生成的Logo版权归谁?
AI 生成 Logo 已成为设计领域的重要应用,广泛用于个人品牌和商业场景。本文分析了 AI 生成 Logo 的版权归属问题,结合国内外法律案例指出,用户若深度参与创作,如精心设计提示词、调整参数等,可主张著作权。同时介绍了多个主流 AI Logo 工具的版权规则,并提供确保版权与商用安全的实用技巧,包括审查授权条款、优化创作过程及商标注册建议。
870 5
|
XML 网络协议 程序员
Apipost接口调试全解:从HTTP到gRPC,程序员必备的“协议生存指南
Apipost是一款强大的接口调试工具,支持多种主流API协议。它涵盖HTTP/HTTPS、WebSocket、Socket.IO、gRPC、GraphQL、TCP及ISO8583金融报文等冷门协议。通过Body多样化、全局参数配置、性能分析等功能优化HTTP调试;提供WebSocket多消息存档与事件监听;gRPC支持服务反射和流式调试;GraphQL可自动生成Schema;TCP报文模板专业精准;SSE配置简单。此外,Apipost还具备环境变量、脚本加持和文档生成功能,是提升开发效率的全能工具。
|
人工智能 自然语言处理 JavaScript
通义灵码入选南方日报 2024 数字化年度标杆
通义灵码入选南方日报 2024 数字化年度标杆
通义灵码入选南方日报 2024 数字化年度标杆