很多人一直再困惑 C++ 是否能开发 App 后台服务器,答案是肯定的。在这里简单归纳下简单的App后台服务器架构策略,供大家参考。

编程语言:

  • 开发语言有很多python、php、perl、C++、java等;
  • 基本上大部分语言都可以开发后台,每种语言都有自己的特点与框架。

操作系统:

  • 操作系统现在的情况是三分天下:Unix、Linux、Windows。建议学习Linux,主要是掌握基本的服务器管理与配置命令,能够编写shell脚本进行部署以及自动化管理等。

主服务器(HTTP服务器):

  • HTTP框架可以使用C++基于开源的libevent库的evhttp服务器。使用多线程,每个线程都可以单独处理一个 HTTP 请求。
  • 使用基于libevent的开源库libevhtp,支持多线程,简单强大。

数据库:

  • 数据库有Mysql、Oracle、SQL Server等关系型数据库;
  • 还有非关系型数据库:memcached、mongodb、redis等;
  • 建议了解各种数据库的特点,根据自己的业务模型,选择最优的搭配。

分布式文件系统:

  • FastDFS分布式文件系统,存储大量图片、小文件,可扩展。
  • TFS,淘宝针对海量非结构化数据存储设计的分布式系统;
  • 还有Ceph、GlusterFS、MongoDB以及MooseFS等。
  • TFS有点复杂,MooseFS不适合小文件。

通讯协议:

  • TCP/IP协议;
  • HTTP协议。

数据交换格式:

  • protobuf、JSON、XML等;
  • 这里面最节约空间与速度最快的是protobuf,一般使用JSON就好了,JSON的在空间与速度上都优于XML。如果是特别追求节约空间与速度就使用protobuf。

API:

  • 使用OAuth2.0实现REST API。

缓存:

  1. Redis(NoSQL),既可以做缓存数据库也可以做持久化;
  2. 还有FastDB、Memcached等。

服务器负载均衡:

  • Nginx、Apache都是常见的服务器。这两个服务器各有各的特点,网上也有很多对这两个服务性能的对比与讨论可供参考。
  • 使用ZeroMQ开发负载均衡GateWay。

标签: App, 服务器

仅有一条评论

  1. CJX

    接口实现起来其实难度不大,最主要的细节的处理。尽量把所有的if...else和try...catch都判断到,尽量考虑到所有的可能遇到的异常情况。
    网页的使用者是用户,接口的使用者是开发人员和用户,参数的数据更是五花八门,这就有很大的不确定性因素,所以应该尽量把可能遇到的情况考虑到。
    不能期望使用者传输的参数都是正确的,后台不能相信前台传过来的数据时正确的,一般情况下都需要进行参数判断。
    为了前台开发人员能准确分析并友好的显示错误,尽量不要返回html 500、404等错误页。

添加新评论