一起来聊聊虚拟红包的技术实现

2017年1月20日,腾讯发布消息称将推出Q-Glass,除了一般VR眼镜的标配功能外,Q-Glass还能实现眨眼抢红包。听起来是不是很酷炫?上市时间可要在10年后。不过,2016年底支付宝首推AR实景红包,QQ也紧随其后,一场AR实景红包大战悄然打响。

作为最近两年比较热门的技术,VR技术悄然成为移动技术之后有一大竞相追逐的技术,目前市面上比较成熟和出名的VR开发商,诸如:Google VROculusHTC Vivi。而已Google VR最为成功并商业化。关于这个可以参考我之前的介绍Google VR实践

不过今天我要说的是VR在我们生活中的应用,并且是大家已经用过的,相信大家在2017年年底的时候,一定玩过支付宝/qq(AR虚拟现实)藏红包、找红包吧,想象一下,你可以把你的红包藏在世界各地的任意角落,让全世界的人通过扫描来找红包,是不是觉得很酷,那么要实现这种功能,怎么做呢?

相信大家都玩过AR红包,这里就不介绍如何玩了。

AR红包技术实现分析

其实AR红包综合了GIS(LBS)、图像识别与秒杀技术等技术:

藏红包

  1. 藏红包的地点,即地球坐标(经纬度),在藏红包时会记录下这个红包的经纬度。
  2. 藏红包的标识(图片),即藏红包现场拍的照片,在藏红包时,会存下这张图。
  3. 藏好红包后,将生成的红包数据打包到服务器

找红包

  1. 将你附近的红包展示出来,比如方圆2公里有哪些人藏了红包,并且把他们的坐标信息也在地图上展示出来,方便你前往找红包
  2. 当你抵达红包坐标附近(比如50米内)时,你就可以拿起手机,根据红包提供的模糊化图片线索,扫描物体(即藏红包的图片),当你扫描的图片和藏红包时拍的图片完全匹配时,找红包成功。

当就这两个功能来说,主要涉及到以下技术:

  1. 地理位置信息的处理:红包位置的展示(将你的位置以及附近藏的红包位置分别在地图上展示出来),近邻查询(根据你所在的经纬度,查找你附近的红包)
  2. 图片相似度识别:找红包的人拍的照片 与 藏红包时拍下的照片 进行比对,相似度达到一定程度时,表示红包被找到了。
  3. 秒杀特性:例如你在一处藏了一个红包,那么可能有很多人同时在抢(不过这个秒杀应该比不上双十一,因为是小范围秒杀)。

不过,这几个功能在PostgreSQL数据库中都可以高效的实现,是不是很棒?那么接下来我们来看看PostgreSQL如何处理这两项需求的吧,顺便看看性能如何?

PostGIS插件

在AR红包的业务中,地理位置信息的处理主要包括以下两个方面:

  1. 根据你的位置,搜索附近的红包。即KNN搜索(如 select * from table where loc <-> poc<1公里orderbyloc<?>poc<1公里orderbyloc<?>poc)
  2. 根据用户的位置,红包的位置,计算用户与红包的距离。而在这个模型中,有个最常见的外围插件–PostGIS

PostGIS在军工、科研、民用场景都非常的流行,包括我们常见的精细地表raster探测,天文研究、地图、路径规划等应用中都可以看到PostGIS的影子,本文只用到了PostGIS的一小部分功能:GIS数据类型、GIST索引、近邻查询。

来看一张PostGIS在实际应用的图解:

详细的用法和测试方法参考

《PostgreSQL 百亿地理位置数据 近邻查询性能》

更多文章和详细的PostGIS功能可以参考

《如何建立GIS测试环境 - 将openstreetmap的样本数据导入PostgreSQL PostGIS库》

《聊一聊双十一背后的技术 - 物流、动态路径规划》

图像近似度处理

在PostgreSQL的的生态圈中,有很多这样的插件来满足图片搜索的需求,同时也支持图像相似度值的计算

1,使用Haar wavelet算法的imgsmlr插件

https://github.com/postgrespro/imgsmlr

2,使用图片RGB点阵组成的数组来计算相似度的插件-smlar

《从相似度算法谈起 - Effective similarity search in PostgreSQL》

参考

《从相似度算法谈起 - Effective similarity search in PostgreSQL》

《PostgreSQL 在视频、图片去重,图像搜索业务中的应用》

https://github.com/postgrespro/imgsmlr

3,使用图片RGB点阵组成的数组转成tsvector来计算相似度的插件-RUM

RUM计算相似度时带上了位置信息,精确度更高。比如(0,1,2,3,4,5与0,0,2,3,4,5与5,1,4,2,3,0与2,3,4,5,0,1)。其中0,1,2,3,4,5是原始点阵的值,那么0,0,2,3,4,5可能是有一定误差的值(因为依旧是线性相关的),而2,3,4,5,0,1出现了角度偏差(可以通过技术手段比如rum,把数据拉成环状修正),可能是图片拍摄角度造成的。但是5,1,4,2,3,0可能就不是那个图像了。

参考:

《从难缠的模糊查询聊开 - PostgreSQL独门绝招之一 GIN , GiST , SP-GiST , RUM 索引原理与技术背景》

AR 藏红包如何计算图片匹配

我们在AR藏红包的业务中,只需要用到计算近似值的功能即可,以上两个插件都可以很好的满足。比如使用RGB点阵时,在应用程序端生成RGB点阵,发送给数据库,与存储在数据库中的点阵进行相似度计算即可。

藏红包时的图像数字化流程如下:

  1. 拍照,点阵RGB串成数组或转换为tsvector(带距离计算,相似度更加准确),将红包的位置信息、图片RGB点阵存储到数据库中

找红包,匹配图像时的流程如下:

  1. 拍照,生成点阵,提交给服务端,进行图像匹配,匹配方法参考前面的三种方法之一即可,当然也可以考虑更高效的方法,搞进PostgreSQL的插件里面来。

注意,如果从服务端提取点阵,在客户端比对,这种做法虽然节省了服务端开销,但是这种做法可能存在漏洞,客户端可以被HACK,直接匹配上。

秒杀

目前业务层面只支持近距离找红包,所以通常来说,抢一个红包的人群不会太多。并且我们肯定会对操作数量限制的做淘汰操作。那么如果有上亿人同时秒杀一个红包怎么做呢?PostgreSQL同样有独门秘技来支持秒杀。

参考:

《聊一聊双十一背后的技术 - 不一样的秒杀技术, 裸秒》

《PostgreSQL 使用advisory lock或skip locked消除行锁冲突, 提高几十倍并发更新效率》

总结

随着AR的技术越来越流行,地理位置、图像、视频、声音等特殊数据类型的处理会越来越常见,数据库应该与时俱进,不能再仅仅存储和处理文本、数字这么简单的功能,其综合技术的发展将日新月异。

而另一方面,PostgreSQL的高扩展能力,为AR提供了坚实的技术基础,不仅能存,更能高效处理。

时间: 2024-12-12 11:34:44

一起来聊聊虚拟红包的技术实现的相关文章

扫福得福背后,支付宝 AR 红包的技术创新与故事

春节期间,支付宝的「扫福得福」活动火爆异常.AR 是一种新的交互方式,与传统营销方式相比,可以使用户更深入地参与互动,给用户带来新体验.而支付宝红包,寄托着用户对未来的期盼,因此其团队就考虑将 AR 与红包相结合,探索一种新的玩法.在 AR 领域走在前面的支付宝,其 AR 红包的技术选型.技术架构及其背后的技术故事都有哪些? 写在前面 2004 年 12 月 12 日,我加入雅虎中国,也加入了互联网大军.至今,我还依稀记得,当时心中那种对互联网的敬畏之情.2009 年,在雅虎的四年外企生活一晃而

2017年VR全景大热 虚拟看房技术成主流

互联网在我们的生活中无所不在,衣.食.住.行样样都离不开,2017年VR火了,随之而来的相关产业也相应的火了起来,360度全景技术的出现,无论是对人们的衣食住行都具有展示的创新,以往我们看房,都是跑到售楼中心去看样本房,而360度全景技术将颠覆这一模式. 360度全景技术可以很好的帮助每个客户找到自己需求,360度实景展示,客户远在家中就能身临其境体验.虽然现在找房子一定要经过实地考察,客户对房子的感觉也不容忽视,搞网恋的同学知道,网恋就怕见光死,但如果见面之前看过照片,通过电话或者视频就会完全

VMware发布Linux虚拟桌面技术预览版

VMware发布Linux虚拟桌面技术预览版 在众多客户的一片呼吁声中,VMware在3月中旬发布了Linux虚拟桌面的技术预览版.从此,用户可以通过VMware Horizon View来建立.发布并管理Linux虚拟桌面了.抢鲜尝试连接: http://www.surveymethods.com/EndUser.aspx?DFFB978FDE988B88D4 (注意:如果直接点击上面的连接出错,可将其拷贝到浏览器里再打开) 本篇博客将讨论以下三点: 一.    VMware Linux虚拟桌

一张图概括互联网公司的标准技术架构

大部分人对于BAT的技术有一种莫名的崇拜感,觉得只有非常牛逼和天才才能做出现在的这些系统,但经过前面两篇博文的分析,我们可以看到其实并没有什么神秘的力量和魔力融合在技术里面,而是业务的不断发展推动技术的不断发展,一步一个脚印,持续几年甚至十几年的发展,才能达到当前技术复杂度.先进性.牛逼度. BAT解密(一):聊聊技术发展的驱动力 BAT解密(二):聊聊业务如何驱动技术发展 抛开BAT各自差异很大的业务,站在技术的角度来看,其实BAT的技术架构基本是一样的,再将视角放大,你会发现整个互联网行业的

交换机的VLAN技术

交换机在以太网中的应用,解决了集线器所不能解决的冲突域的问题,但传统的交换技术并不能有效的抑制广播帧,即当接入交换机的一台设备向交换机发送了广播帧后,交换机将会把收到的广播帧转发到所有交换机其它端口相连的设备上,造成网络上通信流量剧增,甚至导致网络崩溃. 此外,在传统网络中,由于用户能够访问网络上的所有设备,所以网络的安全性得不到保障. 为此,20世纪90年代中期出现了交换机VLAN技术来解决上述两个问题. 疑问:为什么不用路由器解决上述两个问题?事实上我们的确可以使用路由器解决上述两个问题,但

微软ASP.NET技术“乱谈”

微软ASP.NET技术“乱谈” 2014新年了,顺手写的一点文字,主要谈谈我对当前微软ASP.NET技术的看法,比较随意,大伙儿随便看看吧. 1 当前微软Web平台技术全貌 从2002年发布.NET 1.0和Visual Studio.NET,到2013年.NET 4.5.1和Visual Studio 2013发布时,微软.NET平台己有11年的历史,其Web技术几经变迁,当前演化为以下的主要技术子领域: 一张图了解微软Web平台技术全貌 时至今日, ASP.NET底层的基础架构基本没太大变化

技术的思考

反思 刚写完velocity入门指南,其实就是照着官方指南翻译了一遍,当然了,由于自己英语不好,翻译的不是很好,很多技术单词总是翻译的不到位,而且翻译到后面 说实话,自己已经没啥乐趣了,草草了事.想到自己学习技术总是半途而废,不经有感而发,大半夜的就聊聊自己对学习技术的理解 学习的重点是什么 我们为什么要学习?学习的重点是什么?学习当然是为了丰富自己的技术技能,提高自己的开发技术,然而,无目的的以及三天大于四天晒网的学习只是浪费自己的时间,如何高效的学习呢 我个人认为学习技术的重点就是打好基础学

读书笔记--大规模web服务开发技术

总评   这本书是日本一个叫hatena的大型网站的CTO写的,通过hatena网站从小到大的演进来反应一个web系统从小到大过程中的各种系统和技术架构变迁,比较接地气. 书的内容不是很难,所以总的来说比较容易阅读,不需要特别累的啃,可想而知,不是非常深入的,更多的还是把作者的一些经验写出来,hatena这种量级的在国内应该是一个中型网站的水平,作者基本把这个量级web服务的运维的方方面面都讲了一遍,看完可以对这个这种量级网站有一个总体的了解,个人认为还是值得一读的. 逐章读书笔记: 第一章 大

当我们在谈论技术时,技术的本质和价值究竟是什么?

过去几年,硅谷最喜欢的口号悄悄地从"不创新,毋宁死!"换成了"不改良,毋宁死!". 湾区文化中,改良意味着全套的技术解决方案,它兜售着一种人类理想主义,从而让这里的极客们更有抱负.更愿意相信一己之力可以推动经验创新.社会发展.这就好比鉴赏者和艺术家,二者对"结构性颠覆和改革"有着截然不同的认知感及行动力. 如今这种对"改革"的认知变化,也发生在最近一年的中国互联网公司身上.这篇文章,要讲的就是"改革背后的力量&quo