Viny storage—网络游戏数据存储的终极解决方案
-
Upload
tencent -
Category
Technology
-
view
1.793 -
download
1
description
Transcript of Viny storage—网络游戏数据存储的终极解决方案
![Page 1: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/1.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
VinyStorage
周迁@葡萄藤
网络游戏数据存储的终极解决方案
![Page 2: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/2.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
VinyStorage的 高性能极
高性能
•比 Memcached 快上千倍
•比 MySQL 快十万倍
• 数据 份实时 热备
•每服 器支持十万务 IOPS
![Page 3: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/3.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
网游来 ,好的存 怎 ?对 说 储层应该 样
• 数据实时 访问
• 安全性( safety)
• 健壮性
• 分布式
• API易用性
![Page 4: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/4.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
网游来 ,好的存 怎 ?对 说 储层应该 样
• 数据 ? 实时 访问 差
• 安全性? 好
• 健壮性? 差
• 分布式? 复杂 (分 分表)库
• API易用性? 差
网页架构MYSQL/CDB
![Page 5: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/5.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
网游来 ,好的存 怎 ?对 说 储层应该 样
• 数据 ? 实时 访问 以内存 代价为
• 安全性? 一般 (双机热备 )
• 健壮性? 好
• 分布式? 复杂 (需 移数据迁 )
• API易用性? 一般
网页架构REDIS/CMEM
![Page 6: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/6.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
网游来 ,好的存 怎 ?对 说 储层应该 样
• 数据 ? 实时 访问 好
• 安全性? 差
• 健壮性? 一般
• 分布式? 不支持
• API 易用性? 一般
网游架构梦幻西游
![Page 7: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/7.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
网游来 ,好的存 怎 ?对 说 储层应该 样
• 数据 ? 实时 访问
• 安全性?
• 健壮性?
• 分布式?
• API 易用性?
viny-storge
![Page 8: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/8.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
• key-value
• 持久化• 游 定制为 戏
![Page 9: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/9.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
底 技 层 术ScalaJava NIO.2Commons-continuations https://github.com/Atry/commons-continuations
![Page 10: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/10.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
数据实时 访问区分冷 数据热数据以内存 中心 以持久化的日志为 辅 不是持久化的数据 以内存 存库辅 缓
与 同 程业务逻辑 进 90% 以上数据 操作是同 程的内存操作库 进
![Page 11: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/11.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
健壮性KEY,VALUE 均静态检查
KEYtrait Accessor[Value] extends Serializable { def read(inputStream: InputStream): Value def newInstance: Value def write(outputStream: OutputStream, value: Value); def key: Array[Byte]}
VALUEmessage Player { required string nickname = 1; required bool is_male = 2 [default = false];}
![Page 12: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/12.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
API 易用性 Accessor final case class Player(id: UserId) extends BuilderAccessor[
Storage.Player, Storage.Player.Builder] {
override final def key: Array[Byte] = {
(id.toHexString + ".Player").getBytes
}
}
![Page 13: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/13.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
API 易用性Command final case object GetPlayerCommand extends Command[Storage.Player.Builder, Storage.Player] { def apply(origin: Storage.Player.Builder): Storage.Player = { origin.clone.build } }
final case class UpdateSleepTimeCommand(sleepTime: Long) extends Command[Storage.Player.Builder, Unit] { override def apply(origin: Storage.Player.Builder): Unit = { origin.setSleepTime(sleepTime) } }
![Page 14: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/14.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
API 易用性API
open,release,add,delete,touch,read,update
flushAll
合操作组 (otrr,atur,otur)
![Page 15: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/15.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
安全性 写日志实时 ( 不包含 操作读 )
日志内容为 command, 可根据 command 恢 数复据
独 程, 序写单 线 顺提供日志 看和数据恢 工具查 复
![Page 16: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/16.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
viny-storage
分布式LocalStorageVspServerVspClient
![Page 17: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/17.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
网游来 ,好的存 怎 ?对 说 储层应该 样
viny-storage
• 数据 ?实时 访问
• 安全性?
• 健壮性?
• 分布式?
• API易用性?
![Page 18: Viny storage—网络游戏数据存储的终极解决方案](https://reader033.fdocument.pub/reader033/viewer/2022061500/55985ba61a28ab55768b46ec/html5/thumbnails/18.jpg)
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有
Thanks!