我正在研究开发一个订单管理系统和订单发送给快递员,这是一个个人项目,以学习为目的。
关于送货员的一些要点,他们是骑自行车的,他们在街上,移动,想象一些像Uber司机一样的东西,所以有必要接收到他们的地理位置,最大的差别是10。
然后,创建一个订单来收集地理位置"40.414449537495564,-79.98827788162178",一个细节,有可能在同一个地理位置上有N个命令。
运送订单的规则很简单,最接近的送货人将收到取货和送货的订单。
假设系统将管理来自世界各地的订单和送货员,因此系统需要能够管理所有这些信息,并且非常快,因此,当订单创建时,我需要最快的方法来识别在半径最大为2km (120万)范围内与订单最接近的送货人。
我对地理空间(或支持的)数据库做了一些研究,如PostGIS、H3等。使用PostGIS,在创建10万份订单和50万名托运人时,我在识别接近订单的发货人方面出现了严重的性能损失。另一个关键点是,随着快递员的移动,数据库更新需要非常快,当我试图更新数据库时,在一个只包含信使ID +他的地理位置的表中,从许多快递员到同一时间,更新花费了很长时间,为此,我以多线程的方式进行了测试,数据库在服务器上与我的计算机分离,在配置良好的机器上运行。我试过使用不同的索引,比如k树。
我考虑过使用“内存中的数据库”,但由于我考虑在Kubernet的N个吊舱上运行该系统,它不起作用。
至于H3,这是我发现的最有趣的东西,但我无法确定如何将它与我正在研究创建的这个系统一起使用。
所以我想要的是如何更好地开发这个系统,技术,数据结构,简而言之,如何更好地架构这个系统,包括数据库,快速访问的REDIS等等。
谢谢!!
发布于 2021-12-05 06:19:03
你们没有50万名托运人和10万份订单。不要为你不会遇到的情况进行优化。如果你把真实的数字放进去,你的表现可能会很好。
更重要的是,考虑好的算法来调度发货人,因为您的简单规则是行不通的。
https://softwareengineering.stackexchange.com/questions/434076
复制相似问题