后台开发技术(1)--概述

说到后台开发,首选就有一个问题:什么是后台开发。就我理解,就是作服务器端开发。在服务器端运行着不一样功能的服务,有直接与客户端链接的,有实现某一特定业务的好比用户注册登陆,有数据存储的如基于mysql,memcached,redis等作的存储系统,除此以外还有一些知足运维监控系统,运营统计系统等。mysql

那么后台开发须要哪些技术呢?回答这个问题以前先来看看通常的后台系统架构,以下图所示:ios

 

后台系统通常分为接入层,业务逻辑层和数据存储层,它们各自有不一样的职责:redis

接入层主要负责客户端接入把用户请求分发到业务逻辑层,客户端不管是什么是浏览器仍是APP类型的首先都要链接到接入层,任何请求都是经过接入层转发,客户端不用户关心功能具体有哪一个服务实现的。接入层主要解决跟用户的链接问题。算法

业务逻辑层负责实现具体的业务功能,知足业务需求。好比在微信中你输入手机号码和登录密码进入微信,跟好友聊天发消息都是业务层中不一样的业务模块完成的。从产品的角度看它是整个后台的核心,不管是接入层仍是数据存储层都是为它作支撑的。sql

数据存储层负责保存业务所需的数据,提供业务数据的读写支撑。数据库

后台系统的三层架构须要根据具体状况动态调整,而不是一成不变的。具体须要怎样调整须要看具体的业务场景。首先要分析出系统的瓶颈在哪里,重点投入提升供瓶颈,其余地方则能够作的粗糙一些,样能够避免过分设计,提升效率。编程

好比开发一个新的产品时,这个产品是没什么用户的,可能就有几百个种子用户。功能上也不知道用户喜欢什么功能。这个时候基本没什么瓶颈的,这个时候就要遵循简单原则,架构上尽量精简,只作最核心的一些功能,目的是要尽快上线验证。这个时候接入层和业务逻辑层能够合并,直连数据库就好了。设计模式

随着用户量增长,产品功能愈来愈复杂,就会遇到第一个瓶颈,不一样的业务场景瓶颈也不一样。好比视频的瓶颈通常在网卡I/O上,实时语音瓶颈通常在接入层上,电商类网站瓶颈通常在图片存储上即磁盘I/O,须要加密压缩的瓶颈通常在CPU上。数组

分析瓶颈并优化是后台开发的核心能力,它须要如下几个方面的技术支撑:浏览器

 基础:

1.服务器硬件硬件的性能,网卡性能,磁盘I/O性能,CUP性能。

2.经常使用系统调用和库函数的性能,如read,write, memcpy,gettimeofday。

3.经常使用户数据结构和算法的性能,如数组,队列,二叉树,hash表。

4.了解操做系统内存操做机制,熟悉内存分配算法,能够根据须要本身设计内存分配算法变体。

网络:

  1. 精通Socket网络编程,对TCP/IP协议要很是熟悉。
  2. 熟悉经常使用的应层协议如http, ftp, smpt, pop3。
  3. 可以根据须要设计专用应用层协议。
  4. 可以根据业务场景调整操做系统或开源工具的的网络参数。
  5. 可以根据产品运行的局域网和广域网环境优化接入机制。

并发:

  1. 熟练应用操做系统提供的进程间通讯机制。
  2. 清楚地知道多线程与多进程成各自的优缺点以及它们的应用场景。
  3. 数据并发访问机制。
  4. 无锁编程技术。
  5. 并发设计模式。
  6. 同步异步程序设计,了解他们的优缺点,根据具体场景灵活使用。

分布式:

  1. 数据同步的算法。
  2. 数据/服务分片算法。
  3. 负载均衡的设计方案。
  4. 客户端接入设计。
  5. 可用性设计。
  6. 扩展性设计。

数据存储:

  1. mysql数据库运行机制,清楚各类存储引擎的特色
  2. 了解mysql的索引设计机制,知道基本的优化方法。
  3. 可以使用各类nosql数据库。
  4. 数据主备方案设计
  5. 数据cache设计

安全:

  1. 对称加密算法,非对称加密算法,摘要算法。
  2. SQL注入,跨站攻击,内存溢出防范方法。
  3. 了解https原理,可以根据状况设计安全方案。
  4. 容错设计。
  5. 容灾设计。

故障定位:

静态代码分析工具

运行时故障定位工具top,free,iostat,mpstat,

相关文章
相关标签/搜索