后台开发技术(1)--概述
说到后台开发,首选就有一个问题:什么是后台开发。就我理解,就是做服务器端开发。在服务器端运行着不同功能的服务,有直接与客户端连接的,有实现某一特定业务的比如用户注册登录,有数据存储的如基于mysql,memcached,redis等做的存储系统,除此之外还有一些满足运维监控系统,运营统计系统等。
那么后台开发需要哪些技术呢?回答这个问题之前先来看看一般的后台系统架构,如下图所示:
后台系统一般分为接入层,业务逻辑层和数据存储层,它们各自有不同的职责:
接入层主要负责客户端接入把用户请求分发到业务逻辑层,客户端不论是什么是浏览器还是APP类型的首先都要连接到接入层,任何请求都是通过接入层转发,客户端不用户关心功能具体有哪个服务实现的。接入层主要解决跟用户的连接问题。
业务逻辑层负责实现具体的业务功能,满足业务需求。比如在微信中你输入手机号码和登陆密码进入微信,跟好友聊天发消息都是业务层中不同的业务模块完成的。从产品的角度看它是整个后台的核心,不论是接入层还是数据存储层都是为它做支撑的。
数据存储层负责保存业务所需的数据,提供业务数据的读写支撑。
后台系统的三层架构需要根据具体情况动态调整,而不是一成不变的。具体需要怎样调整需要看具体的业务场景。首先要分析出系统的瓶颈在哪里,重点投入提高供瓶颈,其他地方则可以做的粗糙一些,样可以避免过度设计,提高效率。
比如开发一个新的产品时,这个产品是没什么用户的,可能就有几百个种子用户。功能上也不知道用户喜欢什么功能。这个时候基本没什么瓶颈的,这个时候就要遵循简单原则,架构上尽可能精简,只做最核心的一些功能,目的是要尽快上线验证。这个时候接入层和业务逻辑层可以合并,直连数据库就行了。
随着用户量增加,产品功能越来越复杂,就会遇到第一个瓶颈,不同的业务场景瓶颈也不同。比如视频的瓶颈一般在网卡I/O上,实时语音瓶颈一般在接入层上,电商类网站瓶颈一般在图片存储上即磁盘I/O,需要加密压缩的瓶颈一般在CPU上。
分析瓶颈并优化是后台开发的核心能力,它需要以下几个方面的技术支撑:
基础:
1.服务器硬件硬件的性能,网卡性能,磁盘I/O性能,CUP性能。
2.常用系统调用和库函数的性能,如read,write, memcpy,gettimeofday。
3.常用户数据结构和算法的性能,如数组,队列,二叉树,hash表。
4.了解操作系统内存操作机制,熟悉内存分配算法,可以根据需要自己设计内存分配算法变体。
网络:
- 精通Socket网络编程,对TCP/IP协议要非常熟悉。
- 熟悉常用的应层协议如http, ftp, smpt, pop3。
- 能够根据需要设计专用应用层协议。
- 能够根据业务场景调整操作系统或开源工具的的网络参数。
- 能够根据产品运行的局域网和广域网环境优化接入机制。
并发:
- 熟练应用操作系统提供的进程间通信机制。
- 清楚地知道多线程与多进程成各自的优缺点以及它们的应用场景。
- 数据并发访问机制。
- 无锁编程技术。
- 并发设计模式。
- 同步异步程序设计,了解他们的优缺点,根据具体场景灵活使用。
分布式:
- 数据同步的算法。
- 数据/服务分片算法。
- 负载均衡的设计方案。
- 客户端接入设计。
- 可用性设计。
- 扩展性设计。
数据存储:
- mysql数据库运行机制,清楚各种存储引擎的特点
- 了解mysql的索引设计机制,知道基本的优化方法。
- 能够使用各种nosql数据库。
- 数据主备方案设计
- 数据cache设计
安全:
- 对称加密算法,非对称加密算法,摘要算法。
- SQL注入,跨站攻击,内存溢出防范方法。
- 了解https原理,能够根据情况设计安全方案。
- 容错设计。
- 容灾设计。
故障定位:
静态代码分析工具
运行时故障定位工具top,free,iostat,mpstat,
后台开发技术(1)--概述相关推荐
- mysql过载保护_腾讯后台开发技术总监浅谈过载保护 小心雪崩效应
摘要: 每个系统,都有自己的最大处理能力,后台技术人员对此必须很清楚,且要注意自我保护,不然就会被雪球压垮,出现雪崩. 雪球: 对于时延敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护, ...
- 腾讯后台开发技术总监浅谈过载保护 小心雪崩效应
摘要: 每个系统,都有自己的最大处理能力,后台技术人员对此必须很清楚,且要注意自我保护,不然就会被雪球压垮,出现雪崩. 雪球: 对于时延敏感的服务,当外部请求超过系统处理能力,如果系统没有做相应保护, ...
- 后台开发技术--接入层设计
通常把跟客户端直连的服务器称为接入服务器,一个或多个接入服务器构成的接入层.接入层有以下功能: 维护与客户端之间的网络连接,管理客户端的网络状态. 接收客户端请求,将请求转发到业务层,转发业务层发给客 ...
- 视频网站的前、后台开发技术主要是哪些?
前台技术: 1. 视频网站,JAVA或PHP构建 2. 社区或社交 3. Flash播放器及其他客户端 后台技术: 1. 搜索引擎 2. hadoop , 大数据及推荐系统 3. 分布式存储 4. C ...
- 使用Ant Design 和Vue,React中后台开发套餐
2019独角兽企业重金招聘Python工程师标准>>> 前言 目前Ant Design 提供 React 和 Vue 两种整合开发框架,开箱即用的中台前端/设计解决方案,可适合中小公 ...
- 美团一面--后台开发
美团一面 感受 虽然挂了,但是感觉是自己的原因,太菜.美团其实问的并不过分,自己有很多东西没有复习到,之前一直想着TCP/IP是肯定要被问的,http只是了解了一下没有仔细琢磨,http就翻车了,问到 ...
- linux操作系统原理_Linux后台开发C++学习路线技能加点,已拿鹅厂offer
大家好我是lemon,最近在知乎经常被邀请回答类似如何学习C++和C++后台开发应该具体储备哪些基础技能的问题,围观原文链接: 非常详细的 Linux C/C++ 学习路线总结!助我拿下腾讯offer ...
- 盘点腾讯后台开发各级工程师(T1-T9)需要具备哪些能力
作为一个程序员,不管是初入职场的菜鸟还是做开发多年的老鸟,都希望有机会能进大厂,最近有不少小伙伴问腾讯好不好进?需要的技术栈是怎么样的?本文就给大家普及一下腾讯后台开发各级工程师(T1-T9)需要具备 ...
- 海思 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 ...
最新文章
- 寒门出贵子,传递正能量
- 家中电脑无法共享,联通域名解析劫持竟是罪魁
- WiFi万能钥匙发布iOS4.0新增骚扰电话拦截功能
- Android Socket编程(多线程、双向通信)
- 物理层、数据链路层网络设备工作原理
- sqlite管理工具_Liquibase 数据库版本管理工具:1.安装
- 免费的位图字体制作工具Bitmap Font Generator使用教程
- Apollo 配置中心初探
- 图形变换之旋转变换公式推导
- C/C++中文帮助手册
- Maixpy K210图像识别(仅自学笔记)
- Linux系统chmod误操作目录权限恢复方法
- 亿道丨三防平板丨加固平板丨三防工业平板丨航空航天应用
- 人机大战(类和对象)
- Mysql慢查询日志的使用 和 Mysql的优化
- LeetCode 力扣 算法题解 1109. 航班预订统计(Corporate Flight Bookings) n 个航班,它们分别从 1 到 n 进行编号,请返回每个航班预定的座位总数。
- Windbg在软件调试中的应用
- 数字图像隐藏图像的两种算法及实现代码
- 新版仿58转转闲鱼网站源码+二手商品交易平台系统
- 如何在群晖NAS上安装cpolar内网穿透(群晖7.X版)