SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Erlang开发实践
淘宝核心系统资深专家 余锋
http://yufeng.info
@淘宝褚霸
2013-05-25
平台架构
工程实践
讨论
UMP整体架构
UMP核心挑战
• 平台对外保持单一入口,对内维护单一的资源池
。
• 保证服务的高可用性,消除单点故障
• 保证系统是弹性可伸缩的,可以动态的增加、删
减计算与存储节点。
• 保证分配给用户的资源也是弹性可伸缩的,资源
之间相互隔离。
统一
平台
统一 资源
申请入口
统一数据
服务入口
统一Portal
入口
UMP经验
• 开放的平台,方便用户扩展
• 采用开放成熟的第三方部件的好处
• 热部署和升级对不停机维护的意义
• 容错系统设计的重要性
为什么要用Erlang实现
• 高并发、高性能、集群易扩展
• 时间检验的高可靠
• 强大的管理功能,方便的问题定位支持
• 强大的交互性,与其他系统整合能力
• Erlang独特的世界观
– 世界是并行的
– 万物皆独善其身
– 万物皆通讯
– 天有不测风云
UMP内部组件图
平台架构
工程实践
讨论
设计
• 哲学
– 小而美
– 细节是魔鬼
– fail fast
• 三高
– HIGH cost performance
– HIGH Reliability
– HIGH Scalability
9
设计—典型三层
10
实现
• 三化
– rebar化
– application化
– 插件化
• 代码组织
– api化
– rpc松散化
– 接口平民化
• 代码质量
– 警告零容忍
– dialyzer
– tidier
11
实现—功臣
12
实现—rebar化
13
$ ls -l deps/ump_controller/
include
priv
README.md
rebar
rebar.config
src
THANKS
…
实现—以app为单位扁平组织
$ tree -L 1 deps
deps
├── …
├── ump
├── ump_agent
├── ump_alarm
├── ump_bs
├── ump_freakout
├── ump_la
├── ump_tc
└──... 14
实现—功能api化
$ ls -al deps/ump_controller/src
...
ump_instance_job.erl
ump_job_clone.erl
ump_job_delete_share_user.erl
ump_metastore.erl
ump_metastore_instance.erl
ump_mnesia_monitor.erl
ump_monitor_node_api.erl
ump_monitor_resource_api.erl
15
实现—rpc化
$ cat ump_diag_nodes.erl
…
get_nodes() ->
case ump_diag_rpc:call(ump_monitor_node_api,
registered_node, []) of
{badrpc, _Reason} ->
[];
Nodes ->
Nodes
end.
16
实现—Makefile最小化
$ cat deps/ump_diag/Makefile
all: compile escriptize
compile:
./rebar get-deps compile
escriptize:
./rebar escriptize
17
实现—dialyzer警告零容忍
$ dialyzer ebin
Checking whether the PLT
/home/chuba/.dialyzer_plt is up-to-date...
yes
Proceeding with analysis... done in 0m5.67s
done (passed successfully)
18
部署
• reltool 和 release_handler <=> 打包和热部
署
• ssh/sftp <=> 安装和升级包传递
• ump_bootstrap <=>大规模自动部署
19
测试
• 白盒 <=> eunit 覆盖率 <=> cover
• 黑盒 <=> common test
• 压力测试 <=> tsung
– api
– mysql
– console
20
诊断
• VM层面信息 <=> observer
– crashdump
– etop
• 业务信息<=> console/portal
• 主动诊断 <=> ump_diagnostic
• 主动破坏 <=> ump_freakout
21
运维
• 热更新 <=> 不停机
• snmp监控 <=> 方便对接现有监控系统
• 节点管理 <=> 随时添加、移除、启停结点
• 集群安全 <=> 审计
22
调优
• 消息流动 <=> dbg
• 函数级别 <=> eprof
• 驱动层面 <=> dtrace
• 锁竞争 <=> lcnt
• 角色协作 <=> percept
23
平台架构
工程实践
讨论
存在问题
• 集群规模和安全
• mnesia brain split
• 节点间rpc通道压力
• 小众语言
25
讨论时间
谢谢大家!
26
@淘宝褚霸
备用-Portal界面
27
备用-Portal界面
28
备用-Portal界面
29
备用-Portal界面
30
备用-Portal界面
31
备用-Portal界面
32
备用-Portal界面
33
备用-Portal界面
34
备用-Portal界面
35
备用-Portal界面
36
备用-Portal界面
37
备用-Portal界面
38
备用-Portal界面
39
备用-Portal界面
40

Weitere ähnliche Inhalte

Was ist angesagt?

众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍mysqlops
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术团队
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)Feng Yu
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术团队
 
MySQL的并发线程性能问题
MySQL的并发线程性能问题MySQL的并发线程性能问题
MySQL的并发线程性能问题Hui Liu
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版XiaoJun Hong
 
虎扑基础设施架构探讨
虎扑基础设施架构探讨虎扑基础设施架构探讨
虎扑基础设施架构探讨hoopchina
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Tim Y
 
辽宁大学私有云项目分析
辽宁大学私有云项目分析辽宁大学私有云项目分析
辽宁大学私有云项目分析博 孟
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化XiaoJun Hong
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践jackbillow
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Feng Yu
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列XiaoJun Hong
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验Jinrong Ye
 
新浪微博redis技术演化
新浪微博redis技术演化新浪微博redis技术演化
新浪微博redis技术演化XiaoJun Hong
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案XiaoJun Hong
 

Was ist angesagt? (20)

众行业公司系统架构案例介绍
众行业公司系统架构案例介绍众行业公司系统架构案例介绍
众行业公司系统架构案例介绍
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍美团点评技术沙龙010-点评RDS系统介绍
美团点评技术沙龙010-点评RDS系统介绍
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统美团点评技术沙龙14:美团云对象存储系统
美团点评技术沙龙14:美团云对象存储系统
 
MySQL的并发线程性能问题
MySQL的并发线程性能问题MySQL的并发线程性能问题
MySQL的并发线程性能问题
 
新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版新浪微博分布式缓存与队列-2013版
新浪微博分布式缓存与队列-2013版
 
A
AA
A
 
虎扑基础设施架构探讨
虎扑基础设施架构探讨虎扑基础设施架构探讨
虎扑基础设施架构探讨
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010
 
java title
java titlejava title
java title
 
辽宁大学私有云项目分析
辽宁大学私有云项目分析辽宁大学私有云项目分析
辽宁大学私有云项目分析
 
大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化大型系统的缓存标准化之路—从主从多级重client到一体化
大型系统的缓存标准化之路—从主从多级重client到一体化
 
基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践基于MySQL的分布式数据库实践
基于MySQL的分布式数据库实践
 
Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践Flash存储设备在淘宝的应用实践
Flash存储设备在淘宝的应用实践
 
内存数据库[1]
内存数据库[1]内存数据库[1]
内存数据库[1]
 
分布式缓存与队列
分布式缓存与队列分布式缓存与队列
分布式缓存与队列
 
mercury
mercurymercury
mercury
 
MySQL压力测试经验
MySQL压力测试经验MySQL压力测试经验
MySQL压力测试经验
 
新浪微博redis技术演化
新浪微博redis技术演化新浪微博redis技术演化
新浪微博redis技术演化
 
大规模数据库存储方案
大规模数据库存储方案大规模数据库存储方案
大规模数据库存储方案
 

Andere mochten auch

了解内存
了解内存了解内存
了解内存Feng Yu
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述Feng Yu
 
Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术Feng Yu
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈Feng Yu
 
Systemtap
SystemtapSystemtap
SystemtapFeng Yu
 
了解IO设备
了解IO设备了解IO设备
了解IO设备Feng Yu
 
了解网络
了解网络了解网络
了解网络Feng Yu
 
了解Cpu
了解Cpu了解Cpu
了解CpuFeng Yu
 
Cap 理论与实践
Cap 理论与实践Cap 理论与实践
Cap 理论与实践james tong
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)Feng Yu
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Feng Yu
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能Feng Yu
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)Feng Yu
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践Feng Yu
 
Performance Analysis: The USE Method
Performance Analysis: The USE MethodPerformance Analysis: The USE Method
Performance Analysis: The USE MethodBrendan Gregg
 
Netflix: From Clouds to Roots
Netflix: From Clouds to RootsNetflix: From Clouds to Roots
Netflix: From Clouds to RootsBrendan Gregg
 
Linux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF SuperpowersLinux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF SuperpowersBrendan Gregg
 

Andere mochten auch (19)

Go
GoGo
Go
 
了解内存
了解内存了解内存
了解内存
 
mnesia脑裂问题综述
mnesia脑裂问题综述mnesia脑裂问题综述
mnesia脑裂问题综述
 
Cpu高效编程技术
Cpu高效编程技术Cpu高效编程技术
Cpu高效编程技术
 
了解IO协议栈
了解IO协议栈了解IO协议栈
了解IO协议栈
 
Systemtap
SystemtapSystemtap
Systemtap
 
了解IO设备
了解IO设备了解IO设备
了解IO设备
 
了解网络
了解网络了解网络
了解网络
 
了解Cpu
了解Cpu了解Cpu
了解Cpu
 
Go Lang
Go LangGo Lang
Go Lang
 
Cap 理论与实践
Cap 理论与实践Cap 理论与实践
Cap 理论与实践
 
高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)高性能集群服务器(Erlang解决方案)
高性能集群服务器(Erlang解决方案)
 
Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告Rethink db&tokudb调研测试报告
Rethink db&tokudb调研测试报告
 
利用新硬件提升数据库性能
利用新硬件提升数据库性能利用新硬件提升数据库性能
利用新硬件提升数据库性能
 
MySQL和IO(上)
MySQL和IO(上)MySQL和IO(上)
MySQL和IO(上)
 
SSD在淘宝的应用实践
SSD在淘宝的应用实践SSD在淘宝的应用实践
SSD在淘宝的应用实践
 
Performance Analysis: The USE Method
Performance Analysis: The USE MethodPerformance Analysis: The USE Method
Performance Analysis: The USE Method
 
Netflix: From Clouds to Roots
Netflix: From Clouds to RootsNetflix: From Clouds to Roots
Netflix: From Clouds to Roots
 
Linux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF SuperpowersLinux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF Superpowers
 

Ähnlich wie Erlang开发实践

新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构n716
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构Sky Jian
 
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略linhaicaoyuan
 
蓝鲸平台培训_V1.0.pptx
蓝鲸平台培训_V1.0.pptx蓝鲸平台培训_V1.0.pptx
蓝鲸平台培训_V1.0.pptxssuser693b9a
 
I Sample 20070904
I Sample 20070904I Sample 20070904
I Sample 20070904Shin-Jan Wu
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open CampAndrew Wu
 
IBM PureFlex (Traditional Chinese)
IBM PureFlex (Traditional Chinese)IBM PureFlex (Traditional Chinese)
IBM PureFlex (Traditional Chinese)Jerry Huang
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computingFeng Yu
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平drewz lin
 
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)My own sweet home!
 
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统美团点评技术团队
 
MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例郁萍 王
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
Oracle服务器及存储介绍
Oracle服务器及存储介绍Oracle服务器及存储介绍
Oracle服务器及存储介绍Ethan M. Liu
 
Mobile app的測試v2
Mobile app的測試v2Mobile app的測試v2
Mobile app的測試v2Mr PM
 
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版ITband
 
Zh tw introduction_to_cloud_computing
Zh tw introduction_to_cloud_computingZh tw introduction_to_cloud_computing
Zh tw introduction_to_cloud_computingTrendProgContest13
 
Application express overview_cn_final -v2
Application express overview_cn_final -v2Application express overview_cn_final -v2
Application express overview_cn_final -v2TravelSky
 

Ähnlich wie Erlang开发实践 (20)

新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构
 
基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构基于 MySQL 的B2C电商系统前端数据层架构
基于 MySQL 的B2C电商系统前端数据层架构
 
开源软件营销策略
开源软件营销策略开源软件营销策略
开源软件营销策略
 
蓝鲸平台培训_V1.0.pptx
蓝鲸平台培训_V1.0.pptx蓝鲸平台培训_V1.0.pptx
蓝鲸平台培训_V1.0.pptx
 
I Sample 20070904
I Sample 20070904I Sample 20070904
I Sample 20070904
 
SWsoft_Prim@Telecom
SWsoft_Prim@TelecomSWsoft_Prim@Telecom
SWsoft_Prim@Telecom
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
IBM PureFlex (Traditional Chinese)
IBM PureFlex (Traditional Chinese)IBM PureFlex (Traditional Chinese)
IBM PureFlex (Traditional Chinese)
 
Erlang low cost_clound_computing
Erlang low cost_clound_computingErlang low cost_clound_computing
Erlang low cost_clound_computing
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
 
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)開放原始碼 Ch2.3   app - oss - ui framewoks (ver 1.0)
開放原始碼 Ch2.3 app - oss - ui framewoks (ver 1.0)
 
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
美团点评技术沙龙08 - 分布式服务通信框架及服务治理系统
 
MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例MySQL 高可用方案及成功案例
MySQL 高可用方案及成功案例
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
作業系統概論
作業系統概論作業系統概論
作業系統概論
 
Oracle服务器及存储介绍
Oracle服务器及存储介绍Oracle服务器及存储介绍
Oracle服务器及存储介绍
 
Mobile app的測試v2
Mobile app的測試v2Mobile app的測試v2
Mobile app的測試v2
 
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
分会场六利用赛门铁克的Sort工具降低风险,提高应用的持续运行时间 中文版
 
Zh tw introduction_to_cloud_computing
Zh tw introduction_to_cloud_computingZh tw introduction_to_cloud_computing
Zh tw introduction_to_cloud_computing
 
Application express overview_cn_final -v2
Application express overview_cn_final -v2Application express overview_cn_final -v2
Application express overview_cn_final -v2
 

Mehr von Feng Yu

开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)Feng 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 (6)

开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)开源混合存储方案(Flashcache)
开源混合存储方案(Flashcache)
 
Oprofile linux
Oprofile linuxOprofile linux
Oprofile linux
 
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
 

Erlang开发实践