app 后端技术

app 后端技术

一直以来工作的方向是web server,对app server没有什么了解。虽然没有接触过移动app开发,但对app后端技术还是挺有探索欲望的,app应用和web应用在前端的用户习惯不同,相信后端也会有很多不太一样的地方。开此文记录一些网上收集到的app后端技术体系,以备了解。

下面就app server在业务设计上通常需要考虑的几个方面:

1、api风格

如何设计一套合理且优雅的api接口集,可以参考Restful分格:

  • api采用http(s)协议与前端通信;
  • 每个uri代表一种资源(resource),对于资源的操作类型,由HTTP方法表示(如GET、POST、PUT等)。例如:
GET /zoos:            列出所有动物园
POST /zoos:           新建一个动物园
GET /zoos/ID:          获取某个指定动物园的信息
PUT /zoos/ID:               更新某个指定动物园的信息(提供该动物园的全部信息)
DELETE /zoos/ID:            删除某个动物园
GET /zoos/ID/animals:       列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID: 删除某个指定动物园的指定动物    
  • 通过参数过滤结果,例如
?limit=10:         指定返回记录的数量
?offset=10:        指定返回记录的开始位置。
?sortby=name&order=asc: 指定返回结果按照哪个属性排序,以及排序顺序。
?animal_type_id=1:    指定筛选条件
  • 服务器返回的数据格式尽量采用json;
  • API身份认证key采用OAuth 2.0框架;
  • 返回错误码和错误消息,方便前端进行错误处理和异常保护;

2、聊天服务

聊天服务端选用openfile,这是一个基于xmpp协议的聊天服务器。
xmpp除了提供聊天服务外,还可以充当消息服务器。

3、短信、邮件、推送服务

首先,各种消息推送一定要放在队列中处理,不然会严重影响api的响应时间。

手机短信方面:

通常要使用一些第三方短信服务平台提供的接口,这个没什么好说的;

email方面:

要考虑邮件发送失败的重发问题,所以不再在服务器上搭建sendmail服务发送,选择了邮件服务商mailgun。mailgun还提供每个账号每月1万封邮件的免费额度,很适合创业团队。

消息推送方面:

1、apns是iphone推送的不二选择。但如果自身开发apns的服务,会遇到无效token而需要重发,这样需要维护一个队列并建立重发机制。

当用户在iphone上卸载了app后,device token会失效,所以应该定期访问苹果的feedback服务器,把无效的token去掉。

2、android方面,有google的C2DM平台,但C2DM服务器在国外,国内用起来好像不太可用;

4、LBS

在LBS的应用中,一个基本的需求是查找附近的用户(或商户),现在有两种做法:

1. 使用mysql的空间数据库,具体做法参考:http://blog.sina.com.cn/s/blog_a48af8c001018q1p.html 。

2. 使用geohash编码。

关于geohash编码,它把球面上的经纬度转换成一个值,简单点来说就是把二维坐标转换成一维坐标。查找附近的时候,非常方便,用SQL中,LIKE ‘w23yr3%’可查询附近的所有地点。

当检索数据量特别大的时候,采用 coreseek+redis+mysql 可以解决查询慢的问题;

PS:coreseek是一个基于Sphinx的全文检索引擎。

5、动态通知

通常很多app的右上角能看到一个小红圈,圈里面有一个数字,表示有多少条新消息到达,借此唤醒用户的打开欲望。

在app端,怎么才能知道有多少条新通知呢?实现的技术有两种:

1. polling:app定时查询

2. push:服务器实时推送给app

相对来说,push的方式更高效,避免app频繁去查询服务器,既增加了服务器的压力,又多消耗了自己的流量和电量。

6、数据增量更新

7、安全性

用户和后端服务器通信的数据不要采用明文传输,尤其是涉及用户的帐号、密码这些敏感信息。

比如用户登录过程可以使用ssl 协议交换数据。

之前我自己在港交所的行情接收项目中采用过 Diffie-Hellman 算法,就是一种不错的密钥交换算法:

参考文档:

1、曾健生, 《app后端》 http://blog.csdn.net/newjueqi/article/category/1743543

2、阮一峰,《RESTful API设计指南》 http://www.ruanyifeng.com/blog/2014/05/restful_api.html

3、《查找附近的xxx 球面距离以及Geohash方案探讨》 http://www.wubiao.info/372

4、《XMPP协议实现原理介绍》  http://www.cnblogs.com/hanyonglu/archive/2012/03/04/2378956.html

时间: 2024-10-05 04:19:14

app 后端技术的相关文章

app后端设计(12)--图片的处理

app上线后,不断接受用户的反馈,于是,反馈非常差的情况下,都会有app的改版. 一旦app的改版,都会有比较大的UI改动,一改动UI,那么图片的尺寸也就必须要改变. 在app后端设计(1)—api(http://blog.csdn.net/newjueqi/article/details/14053733)这篇文章中,我提到过app后台图片处理的一个基本原则,数据库中只保存原图的路径.对于同一张图片来说,针对不同机型,不同app版本所需要的不同尺寸,使用动态生成的策略,大体思路如下: (1) 

app后端设计(13)--IM4JAVA+GraphicsMagick实现中文水印

在app的后台中,有时候为了标示版权,需要给图片加上水印. 在liunx中,IM4JAVA+GraphicsMagick是个高效处理图片的方案,图片的裁剪是使用了这个技术方案,为了减少不必要的开发成本和运维成本,对应水印,我们是打算继续采用这个方案. 但在开发的过程中,发现这个方案对中文水印支持得不好. 根据网上的搜索结果,就算采用了im4java的GMOperation,并将水印的字符串转成GBK的编码,添加中文水印时,对于奇数个数的中文,没问题:但对于偶数个数的中文,就出现乱码了. 试了多次

app后端设计(12)--图片的处理.docx

app上线后,不断接受用户的反馈,于是,反馈非常差的情况下,都会有app的改版. 一旦app的改版,都会有比较大的UI改动,一改动UI,那么图片的尺寸也就必须要改变. 在app后端设计(1)-api(http://blog.csdn.net/newjueqi/article/details/14053733)这篇文章中,我提到过app后台图片处理的一个基本原则,数据库中只保存原图的路径.对于同一张图片来说,针对不同机型,不同app版本所需要的不同尺寸,使用动态生成的策略,大体思路如下: (1) 

app后端设计(php)

来源:http://blog.csdn.net/column/details/mobilebackend.html?page=1 做了3年app相关的系统架构,api设计,先后在3个创业公司中工作,经历过手机网页端,android客户端,iphone客户端,现在从事日pv过5千万的云后端开发.其中的乐与苦,得与失,仰首问天有谁知?我觉得是时候来个总结,把相关的技术和心得记录下来. app后端设计(1)--api app后端设计(2)--xmpp的使用 app后端设计(3)--短信,邮件,推送服务

1.用互联网的产品思维打造一本app后端的书

刚刚接触app后端,是做完adidas中国的官方商城的时候,那时不清楚app后端应该怎么架构,只能摸着石头过河,网络上只有一些零散的资料,遇到问题,只能不断地搜索,思考,务必找到解决问题的方法. 在从事app后端的3年里,亲手打造了两款社交app,现在也在日pv过亿的云端平台里从事研发工作,慢慢地对app后端的架构有了一些体会. 把自己的工作笔记发表在CSDN博客专栏"app后端技术架构"发表后,收到了很多网友的反馈,后来为了方便交流,就创建了"app后端技术"qq

app后端设计(0)--总目录(转)

原文:http://blog.csdn.net/newjueqi/article/details/19003775 做了接近两年app相关的系统架构,api设计,先后在两个创业公司中工作,经历过手机网页端,android客户端,iphone客户端,其中的乐与苦,得与失,仰首问天有谁知?我觉得是时候来个总结,把相关的技术和心得记录下来. 注:这系列文章谈到的经验是根据自身在小型创业团队中总结的,大牛们请飘过^-^ app后端设计(1)--api app后端设计(2)--xmpp的使用 app后端设

27.app后端搭建聊天服务器的经历

现在,聊天功能已经成了社交app的标配了.但是,众多web开发出生的程序员对聊天相关的服务的不了解,带来了很多开发上的困扰.在这篇文章中,根据下面3个方面,谈谈聊天服务. 1.      聊天服务的技术选型 2.      开发社交app中,实现聊天服务踩过的坑 3.      那些著名app的聊天服务 1. 聊天服务的技术选型 需要开发聊天服务,首先要选择用到的协议,现在,常用的聊天协议有: (1)      xmpp,一个基于xml的消息协议,被广泛应用于Gtalk,Facebook,但缺点

26.app后端怎么架设推送服务

推送服务已经是app的标配了.架设推送服务,除了可以使用第三方服务商外,也有大量的开源技术可以选择. 现在推送主要分两块,android推送和ios推送,在下面分别论述: 1.    Android推送 Android手机由于没有系统的限制,当app进入了后台后,也能运行服务,所以android的推送可以基于长连接,这就注定了android的推送服务器和一般的app后端是不一样,技术细节上,架构上也不一样,幸好,现在有大量的开源软件可以轻松地实现推送. 下面深入研究过的开源推送软件:gopush

10.app后端选择什么开发语言

在qq上,经常看到有创业团队的创始人一直都招不到技术人员,除了项目的因素外,很大的原因就是所需要掌握的开发语言偏门.通过阅读本文,详细了解选择开发语言的核心原则,使各位心里对开发语言的选择更加有数. 选择开发语言就一个核心原则:在合适的业务场景的情况下选择最热门的语言. (1)每种语言都有自己擅长的业务场景,根据业务场景来选择 例如,如果需要开发一个聊天服务器,选择了php来开发,那真的醉了.php这种脚本语言怎么适合聊天服务? 例如,如果是开发web网站,php就很合适,比起java,效率提升