SlideShare ist ein Scribd-Unternehmen logo
1 von 24
了解应用服务器

核心系统数据库组 余锋
  http://yufeng.info
     @淘宝褚霸
     2012-08-15
C10K问题

• http://www.kegel.com/c10k.html
• 提出时间是2001年,10年过去了
• 挑战还在:
  – 用户对服务响应时间和可靠性要求越来越高。
  – 没有革命性的技术改进,算法和操作系统和库变化不
    大。
  – 硬件,操作系统,库,平台,应用的层次越来越深。




                                   2
应用服务器关键



           开发
• 度量            • 稳定
• 平衡    • 简单
                • 调整
        • 主流
   设计              运维


                        3
硬件的选择

•   切合业务的需求
•   系统平衡
•   可靠性
•   性价比




                      4
平台的选择

•   白盒子还是黑盒子
•   最大程度的挖掘硬件与系统的潜力
•   应用系统最大的框
•   平台的生命力




                      5
并行化

• 理论依据
 – 新硬件趋向幵行化
 – 软件需要提高幵行度
• 解决
 – CPU计算力过剩
 – 适应NUMA架构下大内存
 – 设备IO能力过剩
• 多实例还是虚拟化


                        6
进程模型的选择

• 单线程多进程
 – 极大避免进程上下文切换的影响
 – 编程模型复杂
• 单进程多线程
 – 编程模型简单
 – 如有可能不要尝试多线程,实在不行用原语高级点的
   库
 – 很难调试 做好诊断设施



                             7
通讯模型的选择

• Don't communicate by sharing memory
• share memory by communicating
• 进程间通信(IPC)




                                        8
IO模型的选择

•   阻塞I/O
•   非阻塞I/O
•   I/O多路复用
•   事件驱动 I/O (SIGIO)
•   异步I/O (POSIX aio_函数和native aio)




                                      9
IO模型的差别




          10
语言的选择

• 语言成熟度
 – 开发人员成本
 – 社区经验
• 涉及面广
 –   习惯
 –   性能
 –   库
 –   运行期
 –   维护期

                    11
业务逻辑

•   整个业务就是一个大的状态变迁图
•   一个外部对象对于一组状态机
•   状态的变化是消息引起的
•   消息是可以跟踪的




                      12
库的选择

•   语言的延伸
•   简单够用,业界主流时间验证过
•   抵制重复造轮子
•   一次做一件事,做深做透




                     13
协议选择

•   业界主流,方便对接
•   文本协议
•   二进制协议
•   基于规则自动解析
•   手动解析




                       14
基础数据结构的选择

• 简单就是美
• 压缩数据集,避免数据搬动
•   除非必要不要用非常复杂的数据结构
•   数组、 链表解决大部分事情
•   数组方便利用硬件cache
•   不需要为未来的东西付出代价




                       15
可扩展设计

•   方便业务扩展
•   方便团队参与
•   接口要足够简单
•   可以考虑用脚本
•   形成生态系统




                      16
可配置

• 适应经常性的变化和个性化需求
• Unix .conf或者.ini格式
• 可以用类似Lua等高级语言来描述




                       17
稳定性

•   稳定压倒一切
•   资源预分配
•   不可以发生泄漏,堆积
•   不可使用过多资源
•   避免频繁的分配/释放内存(内存碎片)




                         18
制约性能的杀手

• 数据拷贝
 – 4K数据拷贝的开销1us
• 上下文切换
 – 考虑到缓存践踏,开销20-30us
• 内存分配
 – 不可再生资源,倒腾代价巨大
• 锁竞争
 – 最快的锁也要0.1us
• 昂贵的系统调用
                       19
性能可微调

• 提供简单的接口动态改变服务器关键数据
• 自动根据系统的资源情况来决定默认值
• 有统计模块做微调依据




                       20
移植性

• 平台移植
• 硬件移植
• 最小化特性
• ANSI C代码,最大可移植性




                    21
工程实践的考虑

•   严谨的错误处理
•   为易诊断而编码
•   完善的日志系统
•   健康监控




                        22
总结

•   充分利用软硬件特性
•   简单就是美
•   不造轮子
•   开放融入主流社区
•   稳定压倒一切
•   为运维而准备




                     23
提问时间




谢谢大家!


         24

Weitere ähnliche Inhalte

Was ist angesagt?

利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能Feng Yu
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术团队
 
高级服务器设计和实现2
高级服务器设计和实现2高级服务器设计和实现2
高级服务器设计和实现2Feng Yu
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术团队
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosqlknuthocean
 
高性能数据库
高性能数据库高性能数据库
高性能数据库dhlzj
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践Feng Yu
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践jackbillow
 
MySQL的并发线程性能问题
MySQL的并发线程性能问题MySQL的并发线程性能问题
MySQL的并发线程性能问题Hui Liu
 
美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团点评技术团队
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验Jinrong Ye
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版XiaoJun Hong
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化XiaoJun Hong
 
Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Jinrong Ye
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践孙立
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构XiaoJun Hong
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
如何针对业务做DB优化
如何针对业务做DB优化如何针对业务做DB优化
如何针对业务做DB优化Jinrong Ye
 

Was ist angesagt? (20)

利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
 
高级服务器设计和实现2
高级服务器设计和实现2高级服务器设计和实现2
高级服务器设计和实现2
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
 
“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql“云存储系统”赏析系列分享三:Sql与nosql
“云存储系统”赏析系列分享三:Sql与nosql
 
高性能数据库
高性能数据库高性能数据库
高性能数据库
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
MySQL的并发线程性能问题
MySQL的并发线程性能问题MySQL的并发线程性能问题
MySQL的并发线程性能问题
 
美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise 美团技术沙龙04 - Kv Tair best practise
美团技术沙龙04 - Kv Tair best practise
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
 
Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用Cgroup lxc在17173 iaas应用池中应用
Cgroup lxc在17173 iaas应用池中应用
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 
新浪微博Feed服务架构
新浪微博Feed服务架构新浪微博Feed服务架构
新浪微博Feed服务架构
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
mercury
mercurymercury
mercury
 
如何针对业务做DB优化
如何针对业务做DB优化如何针对业务做DB优化
如何针对业务做DB优化
 

Andere mochten auch

MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)Feng Yu
 
了解IO设备
了解IO设备了解IO设备
了解IO设备Feng Yu
 
了解内存
了解内存了解内存
了解内存Feng Yu
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈Feng Yu
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Feng Yu
 
了解网络
了解网络了解网络
了解网络Feng Yu
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)Feng Yu
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述Feng Yu
 

Andere mochten auch (8)

MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)
 
了解IO设备
了解IO设备了解IO设备
了解IO设备
 
了解内存
了解内存了解内存
了解内存
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
了解网络
了解网络了解网络
了解网络
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述
 

Ähnlich wie 了解应用服务器

Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconYiwei Ma
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 Chao Zhu
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构Sky Jian
 
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多ITband
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略linhaicaoyuan
 
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统美团点评技术团队
 
WychERP 业务管理解决方案
WychERP 业务管理解决方案WychERP 业务管理解决方案
WychERP 业务管理解决方案Sandwych Consulting
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
有道云笔记架构简介
有道云笔记架构简介有道云笔记架构简介
有道云笔记架构简介drewz lin
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构n716
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
辽宁大学私有云项目分析
辽宁大学私有云项目分析辽宁大学私有云项目分析
辽宁大学私有云项目分析博 孟
 
Mysql调优
Mysql调优Mysql调优
Mysql调优ken shin
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08drewz lin
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰Paul Chao
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updatedPaul Chao
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性Xuefeng Zhang
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open CampAndrew Wu
 
04.web sphere培训 应用websphere优化
04.web sphere培训 应用websphere优化04.web sphere培训 应用websphere优化
04.web sphere培训 应用websphere优化littlecong
 

Ähnlich wie 了解应用服务器 (20)

Taobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qconTaobao casestudy-yufeng-qcon
Taobao casestudy-yufeng-qcon
 
大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点 大型电商的数据服务的要点和难点
大型电商的数据服务的要点和难点
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
 
利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多利用统一存储获得无与伦比的速度,简化系统,并节省更多
利用统一存储获得无与伦比的速度,简化系统,并节省更多
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略
 
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
 
WychERP 业务管理解决方案
WychERP 业务管理解决方案WychERP 业务管理解决方案
WychERP 业务管理解决方案
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
有道云笔记架构简介
有道云笔记架构简介有道云笔记架构简介
有道云笔记架构简介
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
辽宁大学私有云项目分析
辽宁大学私有云项目分析辽宁大学私有云项目分析
辽宁大学私有云项目分析
 
Mysql调优
Mysql调优Mysql调优
Mysql调优
 
张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08张松国 腾讯微博架构介绍08
张松国 腾讯微博架构介绍08
 
廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰廣宣學堂: 企業導入微服務實戰
廣宣學堂: 企業導入微服務實戰
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性浅谈电商网站数据访问层(DAL)与 ORM 之适用性
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
04.web sphere培训 应用websphere优化
04.web sphere培训 应用websphere优化04.web sphere培训 应用websphere优化
04.web sphere培训 应用websphere优化
 

Mehr von Feng Yu

Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术Feng Yu
 
了解Cpu
了解Cpu了解Cpu
了解CpuFeng Yu
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)Feng Yu
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computingFeng Yu
 
Systemtap
SystemtapSystemtap
SystemtapFeng Yu
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linuxFeng Yu
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术Feng Yu
 
Erlang全接触
Erlang全接触Erlang全接触
Erlang全接触Feng Yu
 
Tsung 压力测试工具
Tsung 压力测试工具Tsung 压力测试工具
Tsung 压力测试工具Feng Yu
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm IIFeng Yu
 

Mehr von Feng Yu (12)

Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术
 
了解Cpu
了解Cpu了解Cpu
了解Cpu
 
开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computing
 
Systemtap
SystemtapSystemtap
Systemtap
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linux
 
Go
GoGo
Go
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术
 
Erlang全接触
Erlang全接触Erlang全接触
Erlang全接触
 
Tsung 压力测试工具
Tsung 压力测试工具Tsung 压力测试工具
Tsung 压力测试工具
 
Inside Erlang Vm II
Inside Erlang Vm IIInside Erlang Vm II
Inside Erlang Vm II
 
Go Lang
Go LangGo Lang
Go Lang
 

了解应用服务器