写点什么

eBay Cloud 基于 MongoDB 的 CMDB 经验分享

  • 2014-09-02
  • 本文字数:2086 字

    阅读完需:约 7 分钟

2011 年,eBay 启动了私有云项目 eBay Cloud,并于 2012 启动其管理系统 Configuration Management Service(CMS)的研发。根据其团队描述,CMS 是一个高性能的配置管理服务,对配置元数据进行持久化,支持 RESTful API 以及 Java 和 Python 的客户端库。

CMS 的研发和运维团队有部分成员在上海研发中心。近日,InfoQ 中文站与 eBay Cloud Service 团队资深软件开发工程师苏良飞进行了沟通,了解该团队最近的发展情况。

嘉宾简介

苏良飞,现在 eBay Cloud Service 团队工作。开发了 eBay Cloud Service 的 Configuration Management Service(CMDB) 和 Load Balancer Management Service。主要关注 Java 服务器端开发和分布式系统开发。

InfoQ:先介绍一下您所在的 eBay Cloud Service 团队吧。

苏良飞:我目前所在的团队属于 eBay Cloud Service 里的 Cloud Foundation。我们团队目前在上海有 5 个研发人员,都是开发 Java 服务器端程序(Core Java SE),另外数据库知识(SQL database、MongoDB、Cassandra)以及服务器的运维也是我们所必须的技能。

我们团队现在主要职责是 CMS(Configuration Management Service)系统的开发和运维。KPI 的设置与产品的发展是一致的,主要包括:

  • 产品新功能的开发和改进
  • 线上 CMS 的整合(CMS 在各个组的采纳率是我们的目标之一)
  • 线上 CMS 可用性的监控和维护
  • 基于 CMS 数据的报表和监控

CMS 这个项目是在 12 年中启动,原型系统在 13 年初线上部署。在 2013 年里我们开始进行线上数据的整合(包括和不同部门间的整合),对不同部门的实施访问控制,对代码进行了一次较大规模的调整,在 2013 年还开始了基于 CMS 数据的 validation,目标是对 eBay site 上的环境进行冗余和风险的监控(一些服务在部署时因为缺少整体的数据视图,导致缺乏必要的冗余或者是不充分冗余),还对 CMDB 的数据修改实现了基于 Cassandra 的 audit。

目前 CMS 项目工作重点是:

  • 核心系统新功能:
    • 新的查询功能的上线
    • 多 mongo repl-set 的分片实现
  • 整合
    • 与更多的内部工具整合,目前还只有 eBay 的 cloud 服务在 CMS 上运行。eBay 网站的实时监控正在和 CMS 做整合
  • 系统运维
    • CMS 有 5 个 9 的可用性要求
  • 周边系统开发:
    • audit 的 snapshot 功能
    • 基于 CMS 的 JSON data 进行数据的分析(上述的 site 环境监控)

InfoQ:CMDB 作为 Cloud 系统中的统一数据存储,在设计的时候主要关注哪些能力?

苏良飞:CMDB 在设计中的一些主要考虑点是:

  1. 读写不均衡,典型的读大于写的用例
  2. 配置系统的数据量不算太大,可以尽量的使用 memory
  3. CMDB 的表结构的改动比较频繁,系统要能提供尽量平滑的表结构改动
  4. 对于日常的查询,CMDB 应该能提供方便的查询语言

前三点是我们采用 MongoDB 的出发点,而对于第四点我们实现了自己的查询语言来提供跨表的查询功能。

InfoQ:从 CMDB 上线运作之后,你评估这套系统设计的好的地方在哪里,又有哪些地方是一开始没有考虑到的?遇到的最大的挑战是什么,又是如何解决的?

苏良飞:上线之后,从用户的角度,看到了读写的消耗时间的下降,CMS 的查询语言提供了方便的数据查询能力,权限控制使得不同组的权限更加明确,这些都是和已有系统相比的带来的好处。

CMS 的查询语言是为了提供用户在 MongoDB 做跨表查询和提供更方便的数据查询功能而实现的,上线后用户提了很多查询需求,比如对于对象图中的反向查询,树形查询,子查询,这几个功能都是一开始没考虑到的。

遇到的比较大挑战主要有:

  1. 数据量增加后的查询分页处理。现在的 NoSQL 查询系统一般要求做多表链接时至少其中的一个表能够完全导入到服务器的内存中。而我们通过转移部分工作到客户端,解除了这个限制,实现了一个 iterator 模式的数据分页。
  2. 系统可用性的挑战: MongoDB 的一些限制,比如 MongoDB 在比较大的数组建索引时会出现数据写操作很慢的情况,因为 MongoDB 是数据库级别的读写锁,这样的一个写操作会使得整个的系统延迟变的很高。为此,我们加入用户控制(rate limit)、模型修改(避免大数组索引,把引用关系存到多端)、以及基于内存的节流阀(throttling)来控制用户的行为和保证系统的可用性。

InfoQ:eBay Cloud 系统包含哪些组件,各自之间的关系是怎样的,各自是哪个团队在维护?

苏良飞:目前 eBay Cloud 正在迁移往基于 OpenStack 开发的云平台。这一块包含了 OpenStack compute/network/glance/keystong/storage。而 OpenStack 覆盖比较弱的 load balancer / dns 部分,eBay 自己开发并向社区贡献了设计和代码。

OpenStack 对 BareMetal(物理机)的支持还不成熟,eBay 在这块使用了自己开发的 Stratus(由上海的团队负责)。 对 cloud 的 configuration 统一的存储是在 CMS 中,CMS 存储为上层的 PaaS 和 remediation 提供了数据源。在 OpenStack 和 CMS 之间是通过异步的消息队列监听进行数据同步。

InfoQ:整个 eBay Cloud 系统现在的运行情况如何?目前主要的工作重点是什么?

苏良飞:eBay 的 cloud 中跑着 4w+ 的物理机和 6w+ 的虚拟机,大部分流量都跑在 eBay Cloud 提供的虚拟机上。目前的工作重点是 OpenStack cloud 系统的扩展和可靠性:

  1. Nova 扩展性
  2. SDN 的应用
  3. 如上提到的 eBay 自己研发的若干 OpenStack 模块
2014-09-02 20:244567

评论

发布
暂无评论
发现更多内容

如何列举测试点

FunTester

三周年连更活动结果已出炉,快来看看有没有你

InfoQ写作社区官方

热门活动 三周年连更

非常实验——在SSH下通过终端浏览网页

吴脑的键客

浏览器 终端工具

我出版了一本关于TikTok电商运营的书

博文视点Broadview

从热爱到深耕,在开发路上的他们勇敢逐梦

HarmonyOS SDK

HMS Core

Django笔记三十四之分页操作

Hunter熊

Python django 分页

Ribbon默认负载均衡规则替换为NacosRule

越长大越悲伤

Spring Cloud

C语言编程—存储知识

芯动大师

建造者模式:将对象的构建与表示分离,提高程序的可维护性和可扩展性

Jack

golang 设计模式

From Java To Kotlin:空安全、扩展、函数、Lambda很详细,这次终于懂了

Seachal

Java android Lambda kotlin 函数式编程

使用 OpenAPI 构建 API 文档

江湖十年

golang Web 后端 swagger OpenAPI

靠AI自动生成视频撸自媒体收益,月入5000+

派大星

ChatGPT4

抠图党福音:教你一键分割图像

华为云开发者联盟

华为云 华为云开发者联盟 企业号 5 月 PK 榜 人工资高hi嗯呢该 分割图像

为什么MySQL单表不能超过2000万行?

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

2023语言与智能技术竞赛开辟“双赛道”:寻找“全民测评官”,探索AI多模态能力

飞桨PaddlePaddle

深度学习基础入门篇[8]::计算机视觉与卷积神经网络、卷积模型CNN综述、池化讲解、CNN参数计算

汀丶人工智能

人工智能 深度学习 计算机视觉 池化 CNN网络

软件测试/测试开发丨Python基本数据类型之字符串

测试人

Python 软件测试 自动化测试 测试开发

菜单栏应用管理:Bartender 4 激活中文版

真大的脸盆

Mac Mac 软件 菜单栏管理工具 菜单栏软件

HashTable 在蚂蚁转化归因中的极致运用

阿里云大数据AI技术

大数据 开发者 企业号 5 月 PK 榜

2023-05-21:给定一个字符串 s 和一个整数 k 。你可以从 s 的前 k 个字母中选择一个, 并把它加到字符串的末尾。 返回 在应用上述步骤的任意数量的移动后,字典上最小的字符串。 输入:s

福大大架构师每日一题

Go 算法 福大大

国内AI大模型 VS chatgpt (20)-- H265/H264有何不同,h265有什么优势?

福大大架构师每日一题

福大大 ChatGPT 文心一言

如何通过Makefile优化加速编译过程提高开发效率

小万哥

c++ 程序员 面试 后端 开发

面试复盘:哈希冲突的常见解决方案?

javacn.site

如何借助Kafka持久化存储K8S事件数据?

SEAL安全

kafka 云原生 k8s Seal软件 企业号 5 月 PK 榜

三周年主题征文活动结果已出炉,快来看看有没有你

InfoQ写作社区官方

热门活动 三周年征文

敏捷开发:新一代软件开发模式的优越性与挑战

xfgg

Java 架构 开发效率

eBay Cloud基于MongoDB的CMDB经验分享_服务革新_sai_InfoQ精选文章