18
Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有 VinyStorage @ 葡萄藤 网络游戏数据存储的终极解决方案

Viny storage—网络游戏数据存储的终极解决方案

  • Upload
    tencent

  • View
    1.792

  • Download
    1

Embed Size (px)

DESCRIPTION

by 周迁 sztechparty 20130317

Citation preview

Page 1: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

VinyStorage

周迁@葡萄藤

网络游戏数据存储的终极解决方案

Page 2: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

VinyStorage的 高性能极

高性能

•比 Memcached 快上千倍

•比 MySQL 快十万倍

• 数据 份实时 热备

•每服 器支持十万务 IOPS

Page 3: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

网游来 ,好的存 怎 ?对 说 储层应该 样

• 数据实时 访问

• 安全性( safety)

• 健壮性

• 分布式

• API易用性

Page 4: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

网游来 ,好的存 怎 ?对 说 储层应该 样

• 数据 ? 实时 访问 差

• 安全性? 好

• 健壮性? 差

• 分布式? 复杂 (分 分表)库

• API易用性? 差

网页架构MYSQL/CDB

Page 5: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

网游来 ,好的存 怎 ?对 说 储层应该 样

• 数据 ? 实时 访问 以内存 代价为

• 安全性? 一般 (双机热备 )

• 健壮性? 好

• 分布式? 复杂 (需 移数据迁 )

• API易用性? 一般

网页架构REDIS/CMEM

Page 6: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

网游来 ,好的存 怎 ?对 说 储层应该 样

• 数据 ? 实时 访问 好

• 安全性? 差

• 健壮性? 一般

• 分布式? 不支持

• API 易用性? 一般

网游架构梦幻西游

Page 7: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

网游来 ,好的存 怎 ?对 说 储层应该 样

• 数据 ? 实时 访问

• 安全性?

• 健壮性?

• 分布式?

• API 易用性?

viny-storge

Page 8: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

viny-storage

• key-value

• 持久化• 游 定制为 戏

Page 9: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

viny-storage

底 技 层 术ScalaJava NIO.2Commons-continuations https://github.com/Atry/commons-continuations

Page 10: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

viny-storage

数据实时 访问区分冷 数据热数据以内存 中心 以持久化的日志为 辅 不是持久化的数据 以内存 存库辅 缓

与 同 程业务逻辑 进 90% 以上数据 操作是同 程的内存操作库 进

Page 11: Viny storage—网络游戏数据存储的终极解决方案

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—网络游戏数据存储的终极解决方案

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—网络游戏数据存储的终极解决方案

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—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

viny-storage

API 易用性API

open,release,add,delete,touch,read,update

flushAll

合操作组 (otrr,atur,otur)

Page 15: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

viny-storage

安全性 写日志实时 ( 不包含 操作读 )

日志内容为 command, 可根据 command 恢 数复据

独 程, 序写单 线 顺提供日志 看和数据恢 工具查 复

Page 16: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

viny-storage

分布式LocalStorageVspServerVspClient

Page 17: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

网游来 ,好的存 怎 ?对 说 储层应该 样

viny-storage

• 数据 ?实时 访问

• 安全性?

• 健壮性?

• 分布式?

• API易用性?

Page 18: Viny storage—网络游戏数据存储的终极解决方案

Copyright © 2013 深圳市葡萄藤网络科技有限公司 版权所有

Thanks!