More Related Content Similar to D baa s_in_xiaomi
Similar to D baa s_in_xiaomi (20) D baa s_in_xiaomi2. About me
• 2008 ~ 2011 就职于百度,负责十分、凤巢、北
斗等核心商业数据库
• 2011 ~ 2012 合伙创业
• 2012 ~ 至今 就职于小米,负责数据库团队建设、
数据库优化等工作,关注自动化运维,云技术等
6. DataBase As A Service
• 把数据库做成标准化服务
目标目标
快 捷快 捷 简 单简 单 高可用高可用 低维护低维护
19. DBaaS MySQL特点
• 快速部署
• 1分钟内完成集群部署
• 单实例 & 多实例
• 可支持单机单实例部署,独占所有资源
• 也可单机多实例部署,提升硬件利用率
• 高可用
• 故障对服务透明
• 从库挂掉,自动重建一个从库实例,不影响访问
• 主库挂掉,1分钟内恢复主库功能
• 自动保持实例数不变
21. MySQL REST API
• POST /v1/mysql
• 创建并启动新的MySQL集群
• GET /v1/mysql/{appId}
• 获取MySQL集群appId的信息
• DELETE /v1/mysql/{appId}
• 删除MySQL集群 appId
• DELETE /v1/mysql/{appId}/tasks/{taskId}
• 删除MySQL集群appId的只读实例taskId
• PUT /v1/mysql/{appId}/scaleout
• 扩容数据库集群appId的只读实例数
22. 创建集群
POST /v1/mysql HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
{
"app_id": "/department/product/service",
"instances":4,
"mem":12000,
"cpus":2,
"disk":0
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "User: dbUser, Pass: dbPass"
}
24. 删除集群
• DELETE /v1/mysql/{appid}
DELETE /v1/mysql/department/product/service HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Delete mysql app successful"
}
25. 增加只读实例
• PUT /v1/mysql/{appId}/scaleout
PUT /v1/mysql/department/product/service/scaleout HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
{
"instances": 6
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "MySQL scale out success"
}
27. Proxy REST API
• POST /v1/proxy
• 创建新的Proxy集群
• GET /v1/proxy/{appId}
• 获取数据库集群appId的Proxy信息
• DELETE /v1/proxy/{appId}
• 删除Proxy集群 appId
• PUT /v1/proxy/{appId}/scaleout
• 扩容ProxyappId的实例数
• DELETE /v1/proxy/{appId}/tasks/{taskId}
• 删除Proxy appId的实例taskId
28. 创建数据库Proxy
POST /v1/proxy HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
{
"app_id": "/department/product/service",
"instances":2,
"mem":120,
"cpus":2,
"disk":0
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Proxy deploy successful"
}
29. 删除Proxy
• DELETE /v1/proxy/{appId}
DELETE /v1/proxy/department/product/service HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Delete proxy app /department/product/service successful"
}
30. 扩容Proxy实例数
• PUT /v1/proxy/{appId}/scaleout
PUT /v1/proxy/department/product/service/scaleout HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
{
"instances": 3
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Proxy scale out success"
}
33. DBaaS Redis特点
• 快速部署
• 1分钟内完成集群部署
• 自动分片
• 主从关系
• 高可用
• 故障对业务透明
• 从实例挂掉,自动重建一个从实例
• 主实例挂掉,秒级完成切换
• 自动保持实例数不变
34. Redis REST API
• POST /v1/redis
• 创建并启动新的Redis cluster集群
• GET /v1/redis/{appId}
• 获取Redis集群appId的信息
• DELETE /v1/redis/{appId}
• 删除Redis集群 appId
• DELETE /v1/redis/{appId}/tasks/{taskId}
• 删除Redis集群appId的实例taskId