intuitive understanding of backend dev
Post on 21-Jan-2017
140 Views
Preview:
TRANSCRIPT
关于后端的⼀一些事情Intuitive Understanding of Backend Dev
⼩小拿@果壳2016.01.07
切⼊入点
⼀一、在做什么——解决什么问题 ⼆二、要怎么做——如何解决问题
Python、MySQL、ORM、MVC、RESTful、API、Shell、HTTP、TCP/IP、算法、
MongoDB、Flask、Socket、多线程、Docker、Vim......
⼀一、做什么
前提
语⾔言——个体的知识与经验积累
信息
⽂文字、印刷术、书籍——持久保存、跨越时间与空间的限制
信息
互联⺴⽹网——极⼤大地提⾼高了知识保存和获取的效率
信息
时间维度
空间维度
获取效率
互联⺴⽹网是什么
后端做什么:在互联⺴⽹网范围,实现信息⾼高效的存储与获取
⼤大脑延伸(⼈人——知识)
新的维度(⼈人——⼈人)
信息⾰革命的载体
⼆二、怎么做
三层结构
系统架构
编程
语⾔言⼯工具
设计图
施⼯工
建筑材料
Web系统 建筑⼯工程
实体
过程
思想
编程
• 什么是程序
• 什么是编程
程序是实体
程序 = 算法 + 数据结构
类⽐比
拼乐⾼高 = 图纸 + 积⽊木
写程序 = 算法 + 数据结构
编程是过程
⽰示例
排序 5,3,12,8,1,9
1,3,5,8,9,12
某个过程
系统架构• 特点
• ⺫⽬目标
• 模式
• ⽰示例
• 业务与权衡
• ⾼高并发、⼤大流量
• ⾼高可⽤用
• 海量数据
• ⽤用户分布⼲⼴广泛、⺴⽹网络情况复杂
• 需求快速变更、版本发布频繁
• 渐进式发展
特点
• 性能
• 可⽤用性(99.99%)
• 伸缩性
• 扩展性
• 安全性
⺫⽬目标
• 分层
• 分割
• 分布式
• 集群
• 缓存
• 异步
• 冗余
模式
⺴⽹网站架构演化
初始阶段
⺴⽹网站架构演化
应⽤用服务和数据服务分离
⺴⽹网站架构演化
加缓存
⺴⽹网站架构演化
使⽤用应⽤用服务器集群改善⺴⽹网站的并发处理能⼒力
⺴⽹网站架构演化
数据库读写分离
⺴⽹网站架构演化
使⽤用反向代理和CDN
⺴⽹网站架构演化
使⽤用分布式⽂文件系统和分布式数据库系统
⺴⽹网站架构演化
使⽤用NoSQL和搜索引擎
⺴⽹网站架构演化
业务拆分
业务与权衡
分布式酒店预订系统
语⾔言与⼯工具
• 后端技术栈
• 基于Python的Web技术栈
• 职位描述
技术栈• 语⾔言:C/C++/Python/PHP…
• ⺴⽹网络:TCP/IP/HTTP/socket/select/epoll/ …
• Linux:Shell/Vim/gcc/makefile/进程线程/IPC …
• Web服务器:Apache/Nginx …
• 数据存储:Mysql/Redis/Memcache/MongoDB …
• 质量控制:编码规范/单元测试/版本控制 …
• … …
Python的Web技术栈
职位描述(C++)
职位描述(Python)
三、区别
区别移动端 前端 后端
交互流程对象 ⽤用户 ⽤用户 数据
⽣生命周期 使⽤用⼀一次APP 使⽤用⼀一次Web ⼀一直运⾏行
运⾏行主体 ⽤用户端(⼿手机) ⽤用户端(PC) 服务器
⽤用户规模与程序复杂度 的关系
基本⽆无关 基本⽆无关 线性相关(乐观情况)
END
top related