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

那么后台开发需要哪些技术呢?回答这个问题之前先来看看一般的后台系统架构,如下图所示:

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

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

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

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

后台系统的三层架构需要根据具体情况动态调整,而不是一成不变的。具体需要怎样调整需要看具体的业务场景。首先要分析出系统的瓶颈在哪里,重点投入提高供瓶颈,其他地方则可以做的粗糙一些,样可以避免过度设计,提高效率。

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

随着用户量增加,产品功能越来越复杂,就会遇到第一个瓶颈,不同的业务场景瓶颈也不同。比如视频的瓶颈一般在网卡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,

后台开发技术(1)--概述相关推荐

  1. mysql过载保护_腾讯后台开发技术总监浅谈过载保护 小心雪崩效应

    摘要: 每个系统,都有自己的最大处理能力,后台技术人员对此必须很清楚,且要注意自我保护,不然就会被雪球压垮,出现雪崩. 雪球: 对于时延敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护, ...

  2. 腾讯后台开发技术总监浅谈过载保护 小心雪崩效应

    摘要: 每个系统,都有自己的最大处理能力,后台技术人员对此必须很清楚,且要注意自我保护,不然就会被雪球压垮,出现雪崩. 雪球: 对于时延敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护, ...

  3. 后台开发技术--接入层设计

    通常把跟客户端直连的服务器称为接入服务器,一个或多个接入服务器构成的接入层.接入层有以下功能: 维护与客户端之间的网络连接,管理客户端的网络状态. 接收客户端请求,将请求转发到业务层,转发业务层发给客 ...

  4. 视频网站的前、后台开发技术主要是哪些?

    前台技术: 1. 视频网站,JAVA或PHP构建 2. 社区或社交 3. Flash播放器及其他客户端 后台技术: 1. 搜索引擎 2. hadoop , 大数据及推荐系统 3. 分布式存储 4. C ...

  5. 使用Ant Design 和Vue,React中后台开发套餐

    2019独角兽企业重金招聘Python工程师标准>>> 前言 目前Ant Design 提供 React 和 Vue 两种整合开发框架,开箱即用的中台前端/设计解决方案,可适合中小公 ...

  6. 美团一面--后台开发

    美团一面 感受 虽然挂了,但是感觉是自己的原因,太菜.美团其实问的并不过分,自己有很多东西没有复习到,之前一直想着TCP/IP是肯定要被问的,http只是了解了一下没有仔细琢磨,http就翻车了,问到 ...

  7. linux操作系统原理_Linux后台开发C++学习路线技能加点,已拿鹅厂offer

    大家好我是lemon,最近在知乎经常被邀请回答类似如何学习C++和C++后台开发应该具体储备哪些基础技能的问题,围观原文链接: 非常详细的 Linux C/C++ 学习路线总结!助我拿下腾讯offer ...

  8. 盘点腾讯后台开发各级工程师(T1-T9)需要具备哪些能力

    作为一个程序员,不管是初入职场的菜鸟还是做开发多年的老鸟,都希望有机会能进大厂,最近有不少小伙伴问腾讯好不好进?需要的技术栈是怎么样的?本文就给大家普及一下腾讯后台开发各级工程师(T1-T9)需要具备 ...

  9. 海思 ISP 3A开发技术

    海思 ISP 3A开发技术 1.概述 1.1 概述 1.2 功能描述 1.2.1 设计思路 1.2.2 文件组织 1.2.3 开发模式 1.2.4 内部流程 2. 使用者指南 2.1 软件流程 2.2 ...

最新文章

  1. 寒门出贵子,传递正能量
  2. 家中电脑无法共享,联通域名解析劫持竟是罪魁
  3. WiFi万能钥匙发布iOS4.0新增骚扰电话拦截功能
  4. Android Socket编程(多线程、双向通信)
  5. 物理层、数据链路层网络设备工作原理
  6. sqlite管理工具_Liquibase 数据库版本管理工具:1.安装
  7. 免费的位图字体制作工具Bitmap Font Generator使用教程
  8. Apollo 配置中心初探
  9. 图形变换之旋转变换公式推导
  10. C/C++中文帮助手册
  11. Maixpy K210图像识别(仅自学笔记)
  12. Linux系统chmod误操作目录权限恢复方法
  13. 亿道丨三防平板丨加固平板丨三防工业平板丨航空航天应用
  14. 人机大战(类和对象)
  15. Mysql慢查询日志的使用 和 Mysql的优化
  16. LeetCode 力扣 算法题解 1109. 航班预订统计(Corporate Flight Bookings) n 个航班,它们分别从 1 到 n 进行编号,请返回每个航班预定的座位总数。
  17. Windbg在软件调试中的应用
  18. 数字图像隐藏图像的两种算法及实现代码
  19. 新版仿58转转闲鱼网站源码+二手商品交易平台系统
  20. 如何在群晖NAS上安装cpolar内网穿透(群晖7.X版)

热门文章

  1. RecyclerView导包
  2. 数字证书KeyTool使用(第二篇)
  3. 《MongoDB权威指南》读书笔记 第一章 简介
  4. word精华样式篇之三使用样式集让所有文档风格统一
  5. 【C/C++】变量做数组长度
  6. TCP三次握手(建立连接)/四次挥手(关闭连接)
  7. How to install python packages
  8. 论文笔记:PointNet
  9. Zedboard学习(八):zedboard移植opencv
  10. are exo exo是什么歌 we_are exo exo是什么歌 we_EXO we are one