17173对象存储与云处理系统解密

peyf

贡献于2014-12-09

字数:0 关键词: 分布式/云计算/大数据

17173对象存储与云处理系统解密 李明庆 2014-10-18 个人简介 李明庆 运维开发工程师 golang、hadoop mingqing@henji.org 大纲 ■17173 私有云存储介绍 ■ 为什么需要私有云存储 ■ 部分架构解析 ■ 图片数据云处理 ■下一步,还需完善 ■上线时间:2013年10月 ■接入项目数(Appid):88个 ■对象总数量: 399897079 ■对象日增长:200G(包含一副本) ■对象总空间:25TB ■PUT请求数:100W~500W 17173私有云存储介绍 一些项目 某时刻的部分上传量 历史上传趋势 支持的SDK以及函数 • SDK的支持 S3官方:Java、PHP 阿里云:Python • 函数支持 S3 API 函数 状态 List Objects 非完整支持 Delete Bucket 不支持,其他实现 Create Bucket 不支持,其他实现 Bucket Lifecycle 不支持 Policy (Buckets, Objects) 不支持 Bucket ACLs (Get, Put) 不支持 Bucket Location 支持 Bucket Object Versions 不支持 Put Object 支持 Delete Object 支持 Get Object 支持 Object ACLs (Get, Put) 不支持 Get Object Info (HEAD) 支持 POST Object 大文件存储支持 Copy Object 支持 Multipart Uploads 大文件存储支持 上传文件(Put Object)示例 ByteArrayInputStream input = new ByteArrayInputStream("hello, 17173 ds".getBytes()); conn.putObject(appid, "dir1/dir2/object-name.txt", input, new ObjectMetadata()); $conn->putObject(array( "Bucket" => $appid, "Key" => "dir1/dir2/object-name.txt ", "Body" => "hello, 17173 ds" )); S3 JAVA SDK S3 PHP SDK conn.put_object_from_string(appid, "dir1/dir2/object-name.txt", "hello, 17173 ds") OSS Python SDK 相关概念 ■ 17173 Data Server (DS): 统一接口,海量健值存储 ■ 对存储进行分类,四大类: 图片:10KB – 3MB 附件:1MB – 10MB HTML:10B – 10KB 大文件:64MB以上 ■数据处理: 图片实时处理、数据分析和挖掘 一些名词 ■ 项目ID\桶(Appid\Bucket): 命名空间,唯一标识,随机生成,如:sdnsoe ■ 端点(Endpoint): 每种存储类型一个端点,与Appid合成存储源空间 如:sdnsoe.ds.internal.17173.com ■ 区域ID(RegionId): 标识当前数据存储地区、非所有类型拥有区域ID ■ CDN域名: 对外提供访问地址,用于全球访问加速 大纲 ■17173 私有云存储介绍 ■ 为什么需要云存储 ■ 部分架构解析 ■ 图片数据云处理 ■下一步,还需完善 为什么需要云存储 ■ 新项目的申请 独立的存储空间 CDN支持配置繁琐 ■ 移动互联网的发展 数据爆炸式增长 多种终端设备的普及 ■ 运维可能会碰到 数据的备份、权限的控制 业务的迁移、空间的扩容 … ... 最好这样 ■ 统一存储,分配接口 ■ 无限空间,维护简单 技术实现 ■ 开源项目的选择 Ceph、TFS、 Swift、Glusterfs、 FastDFS等 ■ 还是自主研发 Nginx Socket 与 Luajit 当前,一键 开通 ■ 无限空间 ■ CDN加速 ■ 图片处理 … ... 大纲 ■17173 私有云存储介绍 ■ 为什么需要云存储 ■ 部分架构解析 ■ 图片数据云处理 ■下一步,还需完善 小文件存储 架构图 1 fztec bjcnc **** 小文件存储 架构图 2 17173 CDN 一 级缓存 17173 CDN 二 级缓存 17173 DS 业务服务器 (java/php/python) Client 数据处理 1)基本对象操作 2)内部数据处理 3)CDN动态数据处理 1 2 3 分布式理论 • CAP原则 Consistency(一致性) Availability(可用性) Partition tolerance(分区容错性) 只能满足其二 小文件存储 架构图3-1 17173 DS KeepalivedNgx+Lua Ngx+Lua 元数据 主节点 备节点 接口层 认证层 存储层 接口层 认证层 存储层 read write 1:1镜像关键技术 ■元数据调度 ■Ngx高效Socket ■Lua快速开发 AP 旧版 一致性哈希介绍 ■ 长度 0 ~ 2^32-1 ■ 键以顺时针寻址 如何使用 ■ 存储节点数少 数据倾斜问题 A B 该怎么办 ■ 虚拟节点 A B A’ B’A B 这么解决 ■ 长度 16,为 0 ~ f ■ 相邻节点互为备份 ■ 寻址一次即可定位 .. .. 8 f 0 1 .. .. 哈希表 0 1 2 3 4 . . . . f 00 01 .. .. ff .. .. .. .. HASH(string)=2/08 0 | HOST 1 | HOST 2 | HOST … … 哈希函数 (固定) 路由表 哈希值 (保留) RAID与副本选择 RAID类型 副本数 总空间 副本空间 可用空间 无 3 36T 24T 12T RAID5 3 30T 20T 10T RAID5 2 30T 15T 15T RAID10 2 18T 9T 9T 以 R720XD 3T*12 为例: 小文件存储 架构图3-2 17173 DS 编号说明 1)认证层、接口层、调度层 2)存储层 3)索引文件(listObjects) 4)配置中心、实时、离线分析 索引文件 Keepalived S3 DHT Ngx S3 DHT Ngx Config Report 数据节点 一次扩容 Ngx 实时统计 1 2 3 4 SA 当前 CP 列出桶内对象 (listObjects) ■ 通过检索条件,返回对象列表 ■ 从扁平结构转化为树状形式 17173/news/1.html 17173/news/2.html 17173/games/3.html 17173/games/4.html shouyou/news/5.html shouyou/news/6.html yeyou/news/7.html yeyou/games/8.html . |--17173 | |--news | | |--1.html | | |--2.html | ` --games | |--3.html | |--4.html ` --shouyou | |--news | | |--5.html | | |--6.html ListObjects 大纲 ■17173 私有云存储介绍 ■ 为什么需要云存储 ■ 部分架构解析 ■ 图片数据云处理 ■下一步,还需完善 17173 CDN 一 级缓存 17173 CDN 二 级缓存 17173 DS 业务服务器 (java/php/python) Client 数据处理 1)基本对象操作 2)内部数据处理 3)CDN动态数据处理 针对图片的 数据处理 — 魔图 17173DS 魔图 图片操作 缩小 放大 裁剪 水印 旋转 类型转换 … … 对象操作 增加 删除 更改 查询 Appid授权 增加 查询 http://uptime.mi.test.17173.com/car.jpg?imageView/2/w/180 http://uptime.mi.test.17173.com/car.jpg?imageView/2/w/180|imageMogr/v1/rotate/-30 http://uptime.mi.test.17173.com/car.jpg?watermark/1/gravity/West/dx/50/dy/50 魔图API示例 如何在CDN中使用魔图 CDN请求: http://i1.17173cdn.com/uptime/demo2.jpg!a-3-240x.jpg 魔图API: http://uptime.mi.test.17173.com/demo2.jpg?imageView/2/w/240 魔图缓存层、调度层解析 魔图是什么 ■ 提供实时处理图片 缩小、放大、水印(图片,文字)、图片EXIF、旋转等 ■ 丰富的格式支持 JPEG、PNG、BMP、GIF等 ■ 友好API支持 提供rest api,语言无关 ■ 管道支持 cat /etc/passwd | grep /bin/bash 简单架构图 数据处理 LVSNginx Nginx 17173DS或 互联网资源 缓存层 调度层 业务服务器 (java/php/python) 转码层 转码 服务 器 转码 服务 器 编号说明 1)统一配置管理中心 2)缓存层、调度层 3)转码层 魔图 Config SA 关键技术 ■ GraphicsMagick Wand C API http://www.graphicsmagick.org/wand/wand.html ■ Ngx Luajit http://luajit.org/ http://wiki.nginx.org/HttpLuaModule os.execte(“gm convert xx.jpg xx.jpg”) HTML文件与附件 ■ 附件存储 上传后不在更新 ■ HTML文件存储 数据小、文件多、频繁更新、总空间不大、强一致性 大纲 ■ 问题的产生 ■ 对象存储介绍 ■ 部分架构解析 ■ 图片数据云处理 ■ 下一步,还需完善 大文件存储 ■ Golang S3接口(sa4hdfs) ■ Hadoop HDFS、HIVE、HBASE Client HDFSsa4hdfs HIVE HBASE API & WEB 日 志 分 析 | 全 国 范例 1 日志分析 - 城市 Docker 镜像存储中心 ■ Docker Registry Registry server for Docker 范例 2 s3: &s3 s3: &s3 <<: *common storage: s3 s3_region: _env:AWS_REGION s3_bucket: _env:AWS_BUCKET:docker boto_bucket: _env:AWS_BUCKET:docker storage_path: _env:STORAGE_PATH:/ s3_encrypt: _env:AWS_ENCRYPT:false s3_secure: _env:AWS_SECURE:false s3_access_key: _env:AWS_KEY:docker s3_secret_key: _env:AWS_SECRET:testkey 小文件存储优化 ■ 纠删码(erasure coding,EC)的研究 ■ 去除RAID,增大磁盘利用率 ■ 一致性哈希与元数据相结合 ■ Web应用防护系统(WAF)的开发 预计在12月份我们还有一场技术分享,内容涵盖系统运维、数据库、运维开发、大数据等等领域 如果你对我们有什么意见或者建议可以在这里留言,我们会第一时间回复您 http://17173ops.com/about-17173ops 感谢 华章计算机、IT168 提供的赞助 Thanks, Q & A

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 6 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档