腾讯大讲堂45 解剖ttc

18
腾讯大讲堂 第四十五期 研发管理部 大讲堂主页: http://km.oa.com/class 与讲师互动: http://km.oa.com/group/class

description

腾讯大讲堂45 解剖ttc

Transcript of 腾讯大讲堂45 解剖ttc

Page 1: 腾讯大讲堂45 解剖ttc

腾 讯 大 讲 堂

第四十五期

研发管理部

大讲堂主页: http://km.oa.com/class 与讲师互动: http://km.oa.com/group/class

Page 2: 腾讯大讲堂45 解剖ttc

Tencent Table Cache

互联网业务系统平台架构组

Page 3: 腾讯大讲堂45 解剖ttc

分享主题

背景

功能特点

架构原理

内存管理

未来…

QA

Page 4: 腾讯大讲堂45 解剖ttc

背景

互联网应用的数据访问特点 海量 并发 热点

存储系统的性能瓶颈

Tencent Table Cache TTC 是提供高速数据访问服务的通用 cache server 。特点是采用

epoll 和异步状态机模式提高并发能力。

Page 5: 腾讯大讲堂45 解剖ttc

功能特点

更加安全的数据操作

更为紧凑的内存存储

更加高效的数据访问(批量)

强大的异步处理机制

支持多种数据源离散存储

高效的网络接入能力

Page 6: 腾讯大讲堂45 解剖ttc

架构原理 1

Inco

min

g

Cach

e

DataS

ource

ttcd

Cach

e

HelperHelper

HelperHelper

HelperHelper

helperd

task unix socket tcp

Page 7: 腾讯大讲堂45 解剖ttc

架构原理 2

处理单元TimerTimeNotify

InputNotify OutputNotify

处理单元

InputNotify OutputNotify

task

Page 8: 腾讯大讲堂45 解剖ttc

架构原理 3

处理路径的抽象允许随时 attach 新的处理单元,扩展程序功能

Cache 系统和数据访问 helper 分离,使得系统支持多种数据源

datasource 分发允许后端数据离散分布

Page 9: 腾讯大讲堂45 解剖ttc

内存管理 1 设计思路

不固化存储结构,允许内存块大小可变,位置可移动

不固定索引节点属性,随时允许动态增加

Page 10: 腾讯大讲堂45 解剖ttc

内存管理 2 特性

Hash Bucket Node Index Node Group Virtual Node LRU List

Page 11: 腾讯大讲堂45 解剖ttc

内存管理 3 特性抽象

众多的实现特性如何去管理?

Feature-descriptor 对外提供统一接口

Page 12: 腾讯大讲堂45 解剖ttc

内存管理 4 属性聚合

属性聚合使得紧密存储成为可能,能大幅提高内存利用率

属性聚合方便动态增加新属性

Node 聚合

属性集1

2

3

Node

属性集1

2

3

1

1

2

2

3

3

Node

1

2

3

1 类属性

重组

Page 13: 腾讯大讲堂45 解剖ttc

内存管理 5 多级索引

Key

DataType

RowCount

Root

HND1,0 HND1,1 HND1,2 HND1,.. HND1,nLeft Right

IDX1,2

DataType

RowCount

Root

HND1,0 HND1,1 HND1,2 HND1,.. HND1,nLeft Right HND1,0 HND1,1 HND1,2 HND1,.. HND1,nLeft Right

HND2,0 HND2,1 HND2,2 HND2,.. HND2,nLeft Right

HND2,0 HND2,1 HND2,2 HND2,.. HND2,nLeft Right HND2,0 HND2,1 HND2,2 HND2,.. HND2,nLeft Right

IDX2,1

DataType

RowCount

Root

IDX2,1

DataSize

RowCount

Row0

DataType

Row1

CRootData

CRawFormat

CTtreeNode

CRootData

Page 14: 腾讯大讲堂45 解剖ttc

内存管理 6 变长分配器

摈弃老的定长数据chunk 概念,不再采用定长存储结构,转而采用变长分配机制

变长分配采用类似ptmalloc 的 bins 分配策略,使得内存分配、释放非常高效

16 24 32 ... 512 576 640 ...

Small Bins Large Bins

Sorted Bins

2 64index

size

chunks

12765

Pre_size

size P

FrontChunk

BackChunk

size

User data

P

Free Chunk

Used Chunk

Head Info

Sorted Bins

Fast Bins

Unsorted Bins

Free Mem

Allocated Mem

Bottom

Top

Page 15: 腾讯大讲堂45 解剖ttc

内存管理 7 总体视图

Cache_Info

Feature_Info

Mem_Info

Extend_Info

Hash Bucket

NG_Info

System NG

Node Group

Node Group

Next Group

Attribute1[N]

Attribute2[N]

AttributeM[N]

F_id F_attr F_handler

F_id F_attr F_handler

F_id F_attr F_handler

F_id F_attr F_handler

Hash

Node Group

Node_Index

Table_Info

Node Group

Page 16: 腾讯大讲堂45 解剖ttc

内存管理 8 位图存储结构

Page 17: 腾讯大讲堂45 解剖ttc

未来…

集中部署、统一运营

备份、容灾

跨 IDC 分布

Page 18: 腾讯大讲堂45 解剖ttc

Q&A

THE END