SlideShare a Scribd company logo
1 of 31
Download to read offline
柔性接口的设计与实现
微信CMDB
ottocho
2015.08.21
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
大纲
● 什么是 CMDB
● 设计要点
● 成果展示
● 设计与实现
● 经验总结
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
CMDB
● 什么是 CMDB
● 设计要点
● 成果展示
● 设计与实现
● 经验总结
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
CMDB
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
CMDB
百度给的定义:
CMDB 配置管理数据库
Configuration Management Database
CMDB 存储与管理企业IT架构中设备的各种
配置信息,它与所有服务支持和服务交付流
程都紧密相联,支持这些流程的运转、发挥配
置信息的价值,同时依赖于相关流程保证数
据的准确性。在实际的项目中,CMDB 常常
被认为是构建其它 ITIL 流程的基础而优先考
虑,ITIL 项目的成败与是否成功建立 CMDB
有非常大的关系。
这些都是废话!
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
CMDB
CMDB
Configuration Management Database
• 运营的工程管理角度
• 以管理对象为配置个体
• 统一归类、抽象、管理
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
CMDB
我来举个栗子…
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
CMDB
• 模块、模块程序
• 以运营配置对象管理
• 存储在 CMDB
• 与 CMDB 的交互
• 统一管理
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
CMDB
目标
如部署系统、新服务上线系统
与 CMDB 的配合,达成了系统间
合作、运营信息收集结合。
CMDB 支持这些流程的运转、发
挥配置信息的价值,同时依赖于相
关流程保证数据的准确性。
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
大纲
● 什么是 CMDB
● 设计要点
● 成果展示
● 设计与实现
● 经验总结
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
设计要点
设计要点
• 业务目标
• 配置粒度
• 维护方式
• 服务情况
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
大纲
● 什么是 CMDB
● 设计要点
● 成果展示
● 设计与实现
● 经验总结
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
成果展示
文档首页
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
成果展示
文档目录
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
成果展示
资源定义
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
成果展示
/api/GetDevices?
fields=id,system_name,inner_ip&
where_inner_ip=10.20.30.40
cmdbclient.GetDevices(
fields = ['id', 'system_name', 'inner_ip'],
where = { 'inner_ip': '10.20.30.40' },
)
所见即所得、简单快速接入
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
成果展示
信息详尽完备
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
大纲
● 什么是 CMDB
● 设计要点
● 成果展示
● 设计与实现
● 经验总结
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
设计实现
技术小结
• tornado
• peewee
• pypy
• sphinx
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
设计实现
请求内容
client 请求:
cmdbclient.GetDevices(
fields = ['id', 'system_name', 'inner_ip'],
where = { 'inner_ip': '10.20.30.40' },
)
HTTP 请求:
/api/GetDevices?
fields=id,system_name,inner_ip&
where_inner_ip=10.20.30.40
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
设计实现
格式化请求处理
HTTP param:
fields=id,system_name,inner_ip&where_inner_ip=10.20.30.40
dict data:
dict(
fields = ['id', 'system_name', 'inner_ip'],
where = { 'inner_ip': '10.20.30.40' },
)
Peewee Query:
fields = (Device.id, System.name, Device.inner_ip)
where = Device.inner_ip << ('10.20.30.40',)
result = Device.select(*fields).where(where)
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
设计实现
处理流程
# 从域列表获取到涉及到的 model
related_models = get_related_models(model_fields)
# 生成 query_obj
query_obj = model_class.select(*model_fields)
# 加上 where 的条件检索
query_obj = where_condition_query(query_obj, where_logic,
where, model_field_map)
# 自动 join 表
query_obj = join_table(query_obj, related_models, addition_fields)
# 返回结果
return fetch_query_result(query_obj, args)
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
设计实现
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
大纲
● 什么是 CMDB
● 设计要点
● 成果展示
● 设计与实现
● 经验总结
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
经验总结
维护
• 限制
• 规则
• 简单
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
业务价值
经验总结
技术创造价值
业务体现价值
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
经验总结
合作
• 对接
• 接口 ?
• 服务 ?
• 文档
• wiki ?
• html ?
• blog ?
以提高他人的效率
来提高自己的工作效率!
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
感谢大家
Q & A
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
感谢大家
谢谢您
北京/上海/广州 0xFF Life's pathetic, go Pythonic!
联系方式
卓振杰
ottocho
ottozhuo@tencent.com
北京/上海/广州 0xFF Life's pathetic, go Pythonic!

More Related Content

Viewers also liked

Media Action Roadshow
Media Action RoadshowMedia Action Roadshow
Media Action RoadshowJack Fookes
 
Big Data Malaysia - A Primer on Deep Learning
Big Data Malaysia - A Primer on Deep LearningBig Data Malaysia - A Primer on Deep Learning
Big Data Malaysia - A Primer on Deep LearningPoo Kuan Hoong
 
KERALA TOWN AND COUNTRY PLANNING ACT, 2016
KERALA TOWN AND COUNTRY PLANNING ACT, 2016KERALA TOWN AND COUNTRY PLANNING ACT, 2016
KERALA TOWN AND COUNTRY PLANNING ACT, 2016Tulika Kumar
 
Stephen Hawking
Stephen Hawking Stephen Hawking
Stephen Hawking Casa
 
Workshop #7: Get Strategic: Learn To Embed UX More Deeply Into Your Organizat...
Workshop #7: Get Strategic: Learn To Embed UX More Deeply Into Your Organizat...Workshop #7: Get Strategic: Learn To Embed UX More Deeply Into Your Organizat...
Workshop #7: Get Strategic: Learn To Embed UX More Deeply Into Your Organizat...ux singapore
 

Viewers also liked (11)

Agricultura
AgriculturaAgricultura
Agricultura
 
Barbara mcClintock
Barbara mcClintockBarbara mcClintock
Barbara mcClintock
 
Media Action Roadshow
Media Action RoadshowMedia Action Roadshow
Media Action Roadshow
 
Big Data Malaysia - A Primer on Deep Learning
Big Data Malaysia - A Primer on Deep LearningBig Data Malaysia - A Primer on Deep Learning
Big Data Malaysia - A Primer on Deep Learning
 
Advert track april_2016
Advert track april_2016Advert track april_2016
Advert track april_2016
 
Cuadro de necesidades
Cuadro de necesidadesCuadro de necesidades
Cuadro de necesidades
 
KERALA TOWN AND COUNTRY PLANNING ACT, 2016
KERALA TOWN AND COUNTRY PLANNING ACT, 2016KERALA TOWN AND COUNTRY PLANNING ACT, 2016
KERALA TOWN AND COUNTRY PLANNING ACT, 2016
 
Stephen Hawking
Stephen Hawking Stephen Hawking
Stephen Hawking
 
Workshop #7: Get Strategic: Learn To Embed UX More Deeply Into Your Organizat...
Workshop #7: Get Strategic: Learn To Embed UX More Deeply Into Your Organizat...Workshop #7: Get Strategic: Learn To Embed UX More Deeply Into Your Organizat...
Workshop #7: Get Strategic: Learn To Embed UX More Deeply Into Your Organizat...
 
Image of city
Image of cityImage of city
Image of city
 
Trend reportnewsmedia16
Trend reportnewsmedia16Trend reportnewsmedia16
Trend reportnewsmedia16
 

Similar to 柔性数据接口的设计与实现

淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座NTC.im(Notch Training Center)
 
自下而上的数据仓库构建方法
自下而上的数据仓库构建方法自下而上的数据仓库构建方法
自下而上的数据仓库构建方法tongxiaojun
 
高性能远程调用解决方案
高性能远程调用解决方案高性能远程调用解决方案
高性能远程调用解决方案Ady Liu
 
学习 CodeIgniter
学习 CodeIgniter学习 CodeIgniter
学习 CodeIgniterBruceWolf
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境drewz lin
 
Se shang hai_04_cloudybi
Se shang hai_04_cloudybiSe shang hai_04_cloudybi
Se shang hai_04_cloudybiTech2IPO
 
人臉辨識考勤系統Face Recognition Based Attendance System
人臉辨識考勤系統Face Recognition Based Attendance System人臉辨識考勤系統Face Recognition Based Attendance System
人臉辨識考勤系統Face Recognition Based Attendance SystemIttrainingIttraining
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseJack Gao
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardJui An Huang (黃瑞安)
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)vanadies10
 
廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416Paul Chao
 
99 第六屆國際健康資訊管理研討會簡報botnet
99 第六屆國際健康資訊管理研討會簡報botnet99 第六屆國際健康資訊管理研討會簡報botnet
99 第六屆國際健康資訊管理研討會簡報botnetShi-Hwao Wang
 
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术团队
 
面向数据流的软件设计方法
面向数据流的软件设计方法面向数据流的软件设计方法
面向数据流的软件设计方法happyjin2010
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconYiwei Ma
 
腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析George Ang
 
部門會議 960625 Leon
部門會議 960625 Leon部門會議 960625 Leon
部門會議 960625 LeonLeon Chuang
 
淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展taobao.com
 
聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevices聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevicesDuran Hsieh
 

Similar to 柔性数据接口的设计与实现 (20)

淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
淺談物聯網巨量資料挑戰 - Jazz 王耀聰 (2016/3/17 於鴻海內湖) 免費講座
 
自下而上的数据仓库构建方法
自下而上的数据仓库构建方法自下而上的数据仓库构建方法
自下而上的数据仓库构建方法
 
高性能远程调用解决方案
高性能远程调用解决方案高性能远程调用解决方案
高性能远程调用解决方案
 
学习 CodeIgniter
学习 CodeIgniter学习 CodeIgniter
学习 CodeIgniter
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
 
Se shang hai_04_cloudybi
Se shang hai_04_cloudybiSe shang hai_04_cloudybi
Se shang hai_04_cloudybi
 
人臉辨識考勤系統Face Recognition Based Attendance System
人臉辨識考勤系統Face Recognition Based Attendance System人臉辨識考勤系統Face Recognition Based Attendance System
人臉辨識考勤系統Face Recognition Based Attendance System
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
 
Scaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ DcardScaling Offline Database Usage On GCP @ Dcard
Scaling Offline Database Usage On GCP @ Dcard
 
淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)
 
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
 
廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416廣宣學堂Python金融爬蟲原理班 20170416
廣宣學堂Python金融爬蟲原理班 20170416
 
99 第六屆國際健康資訊管理研討會簡報botnet
99 第六屆國際健康資訊管理研討會簡報botnet99 第六屆國際健康資訊管理研討會簡報botnet
99 第六屆國際健康資訊管理研討會簡報botnet
 
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍美团点评技术沙龙13-前端工程化开发方案app-proto介绍
美团点评技术沙龙13-前端工程化开发方案app-proto介绍
 
面向数据流的软件设计方法
面向数据流的软件设计方法面向数据流的软件设计方法
面向数据流的软件设计方法
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
 
腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析腾讯大讲堂42 数据库内核设计思路浅析
腾讯大讲堂42 数据库内核设计思路浅析
 
部門會議 960625 Leon
部門會議 960625 Leon部門會議 960625 Leon
部門會議 960625 Leon
 
淘宝网前端应用与发展
淘宝网前端应用与发展淘宝网前端应用与发展
淘宝网前端应用与发展
 
聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevices聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevices
 

More from Leo Zhou

第三名 3rd zhyict
第三名 3rd zhyict第三名 3rd zhyict
第三名 3rd zhyictLeo Zhou
 
异常检测在苏宁的实践
异常检测在苏宁的实践异常检测在苏宁的实践
异常检测在苏宁的实践Leo Zhou
 
第二名 2nd 火眼金睛
第二名 2nd 火眼金睛第二名 2nd 火眼金睛
第二名 2nd 火眼金睛Leo Zhou
 
第四名 4th H3C AI Institute
第四名 4th H3C AI Institute第四名 4th H3C AI Institute
第四名 4th H3C AI InstituteLeo Zhou
 
第一名 1st Bocoiops
第一名 1st Bocoiops第一名 1st Bocoiops
第一名 1st BocoiopsLeo Zhou
 
第六名 6th Aurora
第六名 6th Aurora第六名 6th Aurora
第六名 6th AuroraLeo Zhou
 
AI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving NetworkAI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving NetworkLeo Zhou
 
2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用Leo Zhou
 
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb1.6 米嘉 gobuildweb
1.6 米嘉 gobuildwebLeo Zhou
 
1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑Leo Zhou
 
1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用Leo Zhou
 
Protocol libraries the right way
Protocol libraries the right wayProtocol libraries the right way
Protocol libraries the right wayLeo Zhou
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍Leo Zhou
 
特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践Leo Zhou
 
我的互联网运维理论与实践
我的互联网运维理论与实践我的互联网运维理论与实践
我的互联网运维理论与实践Leo Zhou
 
如何选择 Docker 监控方案
如何选择 Docker 监控方案如何选择 Docker 监控方案
如何选择 Docker 监控方案Leo Zhou
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍Leo Zhou
 
The net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James BennettThe net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James BennettLeo Zhou
 
Hypothesis randomised testing for django
Hypothesis randomised testing for djangoHypothesis randomised testing for django
Hypothesis randomised testing for djangoLeo Zhou
 
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享Leo Zhou
 

More from Leo Zhou (20)

第三名 3rd zhyict
第三名 3rd zhyict第三名 3rd zhyict
第三名 3rd zhyict
 
异常检测在苏宁的实践
异常检测在苏宁的实践异常检测在苏宁的实践
异常检测在苏宁的实践
 
第二名 2nd 火眼金睛
第二名 2nd 火眼金睛第二名 2nd 火眼金睛
第二名 2nd 火眼金睛
 
第四名 4th H3C AI Institute
第四名 4th H3C AI Institute第四名 4th H3C AI Institute
第四名 4th H3C AI Institute
 
第一名 1st Bocoiops
第一名 1st Bocoiops第一名 1st Bocoiops
第一名 1st Bocoiops
 
第六名 6th Aurora
第六名 6th Aurora第六名 6th Aurora
第六名 6th Aurora
 
AI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving NetworkAI使能网络自动驾驶 AI Building Autonomous Driving Network
AI使能网络自动驾驶 AI Building Autonomous Driving Network
 
2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用2.2 go在阿里云cdn系统的应用
2.2 go在阿里云cdn系统的应用
 
1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb1.6 米嘉 gobuildweb
1.6 米嘉 gobuildweb
 
1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑1.4 go在数据存储上面的应用—毛剑
1.4 go在数据存储上面的应用—毛剑
 
1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用1.2 刘奇 go在分布式数据库中的应用
1.2 刘奇 go在分布式数据库中的应用
 
Protocol libraries the right way
Protocol libraries the right wayProtocol libraries the right way
Protocol libraries the right way
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍
 
特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践特卖场景下的大数据平台和机器学习实践
特卖场景下的大数据平台和机器学习实践
 
我的互联网运维理论与实践
我的互联网运维理论与实践我的互联网运维理论与实践
我的互联网运维理论与实践
 
如何选择 Docker 监控方案
如何选择 Docker 监控方案如何选择 Docker 监控方案
如何选择 Docker 监控方案
 
美团数据库运维平台介绍
美团数据库运维平台介绍美团数据库运维平台介绍
美团数据库运维平台介绍
 
The net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James BennettThe net is dark and full of terrors - James Bennett
The net is dark and full of terrors - James Bennett
 
Hypothesis randomised testing for django
Hypothesis randomised testing for djangoHypothesis randomised testing for django
Hypothesis randomised testing for django
 
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
 

柔性数据接口的设计与实现

  • 2. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 大纲 ● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结
  • 3. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! CMDB ● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结
  • 4. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! CMDB
  • 5. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! CMDB 百度给的定义: CMDB 配置管理数据库 Configuration Management Database CMDB 存储与管理企业IT架构中设备的各种 配置信息,它与所有服务支持和服务交付流 程都紧密相联,支持这些流程的运转、发挥配 置信息的价值,同时依赖于相关流程保证数 据的准确性。在实际的项目中,CMDB 常常 被认为是构建其它 ITIL 流程的基础而优先考 虑,ITIL 项目的成败与是否成功建立 CMDB 有非常大的关系。 这些都是废话!
  • 6. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! CMDB CMDB Configuration Management Database • 运营的工程管理角度 • 以管理对象为配置个体 • 统一归类、抽象、管理
  • 7. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! CMDB 我来举个栗子…
  • 8. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! CMDB • 模块、模块程序 • 以运营配置对象管理 • 存储在 CMDB • 与 CMDB 的交互 • 统一管理
  • 9. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! CMDB 目标 如部署系统、新服务上线系统 与 CMDB 的配合,达成了系统间 合作、运营信息收集结合。 CMDB 支持这些流程的运转、发 挥配置信息的价值,同时依赖于相 关流程保证数据的准确性。
  • 10. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 大纲 ● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结
  • 11. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 设计要点 设计要点 • 业务目标 • 配置粒度 • 维护方式 • 服务情况
  • 12. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 大纲 ● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结
  • 13. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 成果展示 文档首页
  • 14. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 成果展示 文档目录
  • 15. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 成果展示 资源定义
  • 16. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 成果展示 /api/GetDevices? fields=id,system_name,inner_ip& where_inner_ip=10.20.30.40 cmdbclient.GetDevices( fields = ['id', 'system_name', 'inner_ip'], where = { 'inner_ip': '10.20.30.40' }, ) 所见即所得、简单快速接入
  • 17. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 成果展示 信息详尽完备
  • 18. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 大纲 ● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结
  • 19. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 设计实现 技术小结 • tornado • peewee • pypy • sphinx
  • 20. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 设计实现 请求内容 client 请求: cmdbclient.GetDevices( fields = ['id', 'system_name', 'inner_ip'], where = { 'inner_ip': '10.20.30.40' }, ) HTTP 请求: /api/GetDevices? fields=id,system_name,inner_ip& where_inner_ip=10.20.30.40
  • 21. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 设计实现 格式化请求处理 HTTP param: fields=id,system_name,inner_ip&where_inner_ip=10.20.30.40 dict data: dict( fields = ['id', 'system_name', 'inner_ip'], where = { 'inner_ip': '10.20.30.40' }, ) Peewee Query: fields = (Device.id, System.name, Device.inner_ip) where = Device.inner_ip << ('10.20.30.40',) result = Device.select(*fields).where(where)
  • 22. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 设计实现 处理流程 # 从域列表获取到涉及到的 model related_models = get_related_models(model_fields) # 生成 query_obj query_obj = model_class.select(*model_fields) # 加上 where 的条件检索 query_obj = where_condition_query(query_obj, where_logic, where, model_field_map) # 自动 join 表 query_obj = join_table(query_obj, related_models, addition_fields) # 返回结果 return fetch_query_result(query_obj, args)
  • 23. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 设计实现
  • 24. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 大纲 ● 什么是 CMDB ● 设计要点 ● 成果展示 ● 设计与实现 ● 经验总结
  • 25. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 经验总结 维护 • 限制 • 规则 • 简单
  • 26. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 业务价值 经验总结 技术创造价值 业务体现价值
  • 27. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 经验总结 合作 • 对接 • 接口 ? • 服务 ? • 文档 • wiki ? • html ? • blog ? 以提高他人的效率 来提高自己的工作效率!
  • 28. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 感谢大家 Q & A
  • 29. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 感谢大家 谢谢您
  • 30. 北京/上海/广州 0xFF Life's pathetic, go Pythonic! 联系方式 卓振杰 ottocho ottozhuo@tencent.com
  • 31. 北京/上海/广州 0xFF Life's pathetic, go Pythonic!