美文网首页
PUSHTO.DO开发笔记(一)

PUSHTO.DO开发笔记(一)

作者: skycool | 来源:发表于2013-08-03 15:28 被阅读0次

    自从换了MBP,总感觉不干点事儿值不回价。于是乎和朋友商量着做了一款APP:PUSHTO.DO。从学习到提交版本到APP STORE前后忙乎了三个月(我和朋友都是业余开发,白天上班,还经常加班,只能晚上抓紧时间code)。7月底终于通过审核上市了。没料到效果还不错,得到了36kr最美应用和知乎的宣传。感到很开心,这是对我们第一步的鼓励,以后的工作应该会更带劲了。

    在这儿为开发的过程做个小小的总结:

    • OS/主机

    我们使用的是linode的主机服务,并部署Ubuntu 12.04.2 LTS。linode物美价廉,且无缝升级的服务非常赞。目前部署在日本机房,一般国内访问速度不错,但是免不了偶尔的访问延迟,这是部署国外不可避免的的。选择Ubuntu是因为熟悉它的包管理工具,另外不想太折腾,选择长期技术支持版本。

    • 应用服务器

    后端服务主要是用python编写,web框架采用Django,搭配mod_wsgi和Apache。不得不说python和Django确实是开发效率很高的语言工具。而且特别容易上手,作为一个主要在AIX小型机上写C程序的程序员,真心感到一种被解放的爽感。

    • 数据存储

    大部分的数据存放在MySQL关系数据库中,小部分数据存放在Redis中。其实一开始,我是纯用Redis作为数据存储的,MySQL只做备份数据用。但是Redis吃内存比较凶,出于经济考虑,换回MySQL了。

    • Task Queue和远程推送

    PUSHTO.DO的特色之一在于远程推送,远程推送算是一个典型的异步行为。因此我们采用了异步的方式来处理。选择Gearman异步任务队列的框架,起了5个python编写的worker程序远程推送。Gearman能自动解决负载均衡和failover等问题,而且扩展非常容易。

    远程推送采用pyapsn,这应该是用的最多的远程推送python解决方案了。

    • 小坑

    虽然是第一次使用Python和Django,但是没有遇到大坑,基本是一些小坑,在这里总结一下:

    1. Django内部使用的是Unicode字符集,如果应用需要支持中文,那么MySQL需要调整字符集。有多种方式调整字符集,网络上搜索一大把,我使用的是修改my.conf的方法。

    2. 如果长时间APNS没有发送过远程推送,apple有可能断开与应用的连接。如果应用每次发消息都和APNS新建连接,在推送消息很多的时候,又可能被apple认为是恶意DDOS访问,所以这方面应用需要合理的处理这个问题。

    3. 远程推送的难点是证书制作,这个算是血淋淋的历史啊。请特别小心。

    • 总结

    总而言之,越简单的东西越稳定,所以开发过程中我选择的都是广泛运用的简单玩意。所以即使是第一次使用这些技术,依然效果不错。感谢提供这些开源软件的人们。

    相关文章

      网友评论

          本文标题:PUSHTO.DO开发笔记(一)

          本文链接:https://www.haomeiwen.com/subject/gysftttx.html