SlideShare una empresa de Scribd logo
1 de 67
Descargar para leer sin conexión
github.com/rfyiamcool
xiaorui.cc
Golang ⾼高性能实战
CDN 刷新系统 是一个高性能、可扩
展的分布式系统.
支持全网刷新及预缓存业务.
架构及框架
⽬目录
Contents
1
调优2
深度排雷雷3
上线部署4
总结5
架构及框架设计1
架构设计
EngingSrv
SLBClient
EngingSrv
Proxy
Proxy
Proxy
HA
http
rpc
框架设计
Poller Pusher Notify Saver TimerRester
RingBuffer
Chan Chan Chan Chan
disPatcher
DelayCtl
EventBus
ChanChan
框架设计
• 模块之间解耦
• 复⽤用性强
• ⽅方便便监控
• 分布式扩展
• 读写⾼高的场景
• 使⽤用ringbuffer避免chan的锁消耗
• EventBus
• 控制功能worker池的start / stop
技术选型
语⾔言: Golang
框架: Gin
压缩: Snappy
序列列化: Json-iterator
ORM: Gorm
客户端: imroc/req
⽇日志: Logrus
配置: Toml
缓存: Redis
持久化: Mysql
设计调优2
基本优化
提前预估size, make 之
临时的map, slice,可采⽤用sync.pool
⼤大于32kb,也可使⽤用 sync.pool
基本优化
不不要滥⽤用time.After,多⽤用事件通知
不不要滥⽤用goroutine, 减少gc压⼒力力
不不要滥⽤用锁, 引起runtime上下⽂文切换
使⽤用unsafe装换类型
不不要总是[]byte、String转换.
基本优化
减少使⽤用reflect反射使⽤用
减少不不必要的defer调⽤用
使⽤用atomic实现⽆无锁逻辑
业务调优
减少⽹网络io的消耗
批量量接⼝口
缩减⽹网络调⽤用链
使⽤用连接池
缓存内存化
减少同步逻辑
使⽤用压缩, 节省带宽
通信协议更更换
HTTP vs RPC
全局任务状态
Map
Syncer
Rwlock
Map
Rwlock
Caller
CRC32
&mod
. . . . .
64 region in Pool各种嵌套
MAP
全局任务状态-code
缓存多副本
Caller
Buffer
Syncer
RR Sched
Rwlock
Buffer
Rwlock
Buffer
Rwlock
操作顺序排队
MysqlDB
Channel
Poller
Channel
Channel
Pusher
CRC32
&mod
insert !
Update !
Poller
Poller
Pusher
Pusher
Saver
Saver
Saver
如果update先被插⼊入?
操作顺序排队-CODE
时间轮设计
struct timerEntry {
heap
cas
}
Ticker
callBack callBack
小顶堆
最大程度减少
锁冲突 !!!
回调队列
callercallBack
按照刻度扫描
分布式选主
Engine Engine
set key hostname
ex 10
nx
set
ex 过期
nx 原⼦子
for{
if set(key, nx, ex) {
expire(10)
}
time.Sleep(n)
}
区分快慢队列列
Fast Queue
Slow Queue
Worker
Worker
Worker
Worker
• 避免单⼀一队列列因慢任务阻塞
• 排队执⾏行行慢任务, 减少后端压⼒力力
提⾼高吞吐 !
设备下线延迟队列列
queue

(task)
queue queue
set(host)
Control
下线/ 上线
proxy
proxy
proxypipeline push
• redis pipeline 减少RTT消耗
• lua 保证组合命令的原⼦子性
bulk put
吞吐提升
30%
排查死锁技巧
Acquie()Caller
Caller
⽅方便便调试, 抽象锁⽅方法.
加⼊入 代码⾏行行 及 随机id
acquie加⼊入, release删除.
单⼀一的就是死锁了了Release()
排查OOM
fatal error: runtime: out of memory
runtime stack:
runtime.throw(0x665297, 0x16)
/usr/local/go/src/runtime/panic.go:596 +0x95
runtime.sysMap(0xc4a0200000, 0x80000000, 0x0, 0x79f638)
/usr/local/go/src/runtime/mem_linux.go:216 +0x1d0
runtime.(*mheap).sysAlloc(0x786b20, 0x80000000, 0x0)
/usr/local/go/src/runtime/malloc.go:440 +0x374
追踪内存泄露露点 OR 增⻓长点
开放stats状态接⼝口
{
"alert_queue": 30,
"input_task_queue": 400,
"notify_queue": 1092,
"pushing_queue": 311,
"reporting_queue": 612,
"saver_queue": 3197,
"tasks_in_cache": 13189,
"timer_tasks": 13189,
"timestamp": 1521682815
"qps_proxy": {
"15m": 9031,
"1m": 10221,
"5m": 11005,
"avg": 91110,
"count": 897811
},
"qps_boss": {
"15m": 5113,
"1m": 5200,
"5m": 5300,
"avg": 5001,
"count": 297811
},
}
加⼊入分布式限频
Engine
counter
INCRBY()
SYNC()
RESET()
Engine
全局计数
异步同步
5s sync incr
counter
INCRBY()
SYNC()
RESET()
5s sync
lua解决并发修正的计数的问题 !
深度排雷雷3
SystemTool
perf top
go tool pprof
iostat、vmstat、top
strace
lsof、netstat、sar
wrk
Established 暴暴增问题
Established 暴暴增问题
net/http 连接池的维度是 http.Transport.
问题代码出在, 不不断的实例例化 http.Transport
TimeWait 暴增到 4W …
连接池引起的TimeWait暴暴增
TimeWait 暴增到 3W …
TimeWait 暴增到 3.5W … TimeWait 暴增到 5W …
TimeWait 暴增到 4W …TimeWait 暴增到 3W …
TimeWait 暴增到 3.5W … TimeWait 暴增到 5W …
http.DefaultTransport.(*http.Transport).MaxIdleConnsPerHost = 200
const DefaultMaxIdleConnsPerHost = 2
t := &http.Transport{
…
DialContext: (&net.Dialer{
….
}).DialContext,
MaxIdleConnsPerHost: 200,
MaxIdleConns: 1000,
…
连接池引起的TimeWait暴暴增
系统线程暴暴涨
系统线程暴暴涨
strace -fp pid -s 512
write(8, ……
mmap(NULL, 10489856, PROT_READ|PROT_…
mprotect(0x7f04d1e6d000, 4096,…
clone(child_stack=0x7f04d286cff0,
…
clone(child_stack=0x7f04d286cff0,
lsof -P -p pid -n
refresh_master 2184 root 8u REG … refresh_master/logs/http.log
• 线程不会被回收
• 每个线程8M内存
• 增加调度消耗
• cpu cache miss
• more
忙轮询
...
for {
select {
case res = <-dataQueue:
retrun res
case <-done:
return res
default:
// do something
}
return res
}
...
• perf top 可以看出 select chan奇⾼
• strace ⼏乎⽆调⽤, 单纯cpu指令
• top 直接 100%
忙轮询
• perf top 可以看出 select chan奇⾼
• strace ⼏乎⽆调⽤
• top 直接 100%
定时器器 | 断续器器
空跑 1000个协程,sleep 100ms的⽕火焰图表现
定时器器 | 断续器器
futex、pselect6 syscall 出奇的⾼高 !
定时器器 | 断续器器
解决⽅方法:
• ⾃自定义定时器器
• 减少select的超时逻辑
• sleep 时间周期放⼤大
time.After time.NewTicker
Nginx的time_wait问题
Nginx的time_wait问题
upstream ats{
server 127.0.0.1:8080;
…
keepalive 100;
}
location / {
proxy_set_header Host $host;
proxy_pass http://ats;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
defer的消耗
go 1.10
汇编:
call runtime.deferreturn,
add xx SP
return
Json性能问题
Json 性能问题
• 上层代码
• 直接替换
• 第三⽅库修改⽅法
• 修改Vendor相关库的引⽤ .
• 使⽤Monkey的替换标准库 .
• 固定数据结构
• json-iterator/go
• 不固定数据结构
• buger/jsonparser
减少反射, 减少对象创建 !!!
logrus json ( map vs struct )
struct > map
cost 9.27s
logrus json ( map vs struct )
cost 4.09s
GC 耗时调优
压测环境下, GC占⽐比⾼高达16%
GC的STW时间也会暴暴到⼏几秒 !!!
GODEBUG=gctrace=1
GC 耗时调优
通过Heap确定, io.copyBuffer逻辑导致的问题 !
业务代码是通过io.Copy来调⽤用的copyBuffer !
GC 耗时调优
当为nil的时候, copyBuffer会new⼀一个对象
使⽤用sync.pool来复⽤用[]byte对象
GC 耗时调优
已经压缩到 1%, gc的次数明显减少 !
GC 性能对⽐比
在我们的项⽬目⾥里里
go 1.10 > go 1.9 > go 1.8
sync.pool 效果明显
主动介⼊入runtime调度调度
P
M M M
G
G
G
G
G
P
G
G
G
G
G
P
G
G
G
G
G
Runtime
Accept
M
recv
• LockOSThread
• 增加 P 队列列
• CPU 亲和性
• 压测⼯工具
• wrk > ab > golang
• 不不要本地环路路测试
• 多源压⼒力力
• 注意带宽问题
• 注意内核的种种error
• more…
压测
Mar 15 16:56:55 xxx kernel: nf_conntrack: table full, dropping packet.
Mar 15 16:56:55 xxx kernel: nf_conntrack: table full, dropping packet.
Mar 15 16:56:55 xxx kernel: nf_conntrack: table full, dropping packet.
Mar 10 13:45:11 xxxx kernel: TCP: time wait bucket table overflow
Mar 10 13:45:11 xxxx kernel: TCP: time wait bucket table overflow
Mar 10 13:45:11 xxxx kernel: TCP: time wait bucket table overflow
more ….
wrk -t8 -c800 -d100s -T10s --script=js --latency http://xxxxx:9181/v1/engine/task
thread addr: xxxxx
…
8 threads and 800 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 19.60ms 11.97ms 144.14ms 73.42%
Req/Sec 23.73k 2784.29 29.85k 79.29%
Latency Distribution
50% 17.90ms
75% 24.92ms
90% 34.63ms
…
Requests/sec: 23189.11
Transfer/sec: 5.06MB
Wrk
上线部署4
打包⽅方法
Engine端
• build
• pack
• repo
• salt
• unpack
• reload
Proxy端, 封装RPM包上线 .
go build -ldflags "-X main.Version=V0.1.10" main.go
EngingSrv
SLBMGR
EngingSrv
Proxy
Proxy
灰度平滑迁移-SLB层
• 通过SLB删除主机
• Engine不不接受新任务
• Engine正常处理理回报
• client需要有重试机制
权重及删除主机的区别
http
rpc
灰度平滑迁移-框架层
ChannelPoller
Pusher
push
Push
Pull
Pull
# 伪代码
recvAndSetExit(signal)
publishSigWorerks()
if globalExited && len(queue) == 0 && pushExit {
return
}
wait(saveQueueExit)
wait(eventBus)
• 从调⽤用链最前端开始顺序关闭.
• 持久化的数据要优先保证
• join住所有的业务协程.
收集分布式⽇日志
Producter
• 追踪所有调⽤用链
• 计算耗时
• 排查问题
Kafka
tcp/udp
inotify
Rsyslog
Producter
File
ElasticSearch
comsumer
如何报警通知
ChannelPoller
Pusher
push
Push
Pull
AlertMan
服务本身主动去上报异常 !
异步去上报 !
异常抽样报警 !
状态监控⻚页⾯面
总结5
性能演进
1w 1.5w 2w 3w +
QPS
GC 还需优化
协程太多
Q & A

Más contenido relacionado

La actualidad más candente

Apache doris (incubating) introduction
Apache doris (incubating) introductionApache doris (incubating) introduction
Apache doris (incubating) introductionleanderlee2
 
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...Edureka!
 
Building an analytics workflow using Apache Airflow
Building an analytics workflow using Apache AirflowBuilding an analytics workflow using Apache Airflow
Building an analytics workflow using Apache AirflowYohei Onishi
 
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...Severalnines
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxNeoClova
 
Patroni - HA PostgreSQL made easy
Patroni - HA PostgreSQL made easyPatroni - HA PostgreSQL made easy
Patroni - HA PostgreSQL made easyAlexander Kukushkin
 
Distributed Locking in Kubernetes
Distributed Locking in KubernetesDistributed Locking in Kubernetes
Distributed Locking in KubernetesRafał Leszko
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL AdministrationEDB
 
InnoDB Internal
InnoDB InternalInnoDB Internal
InnoDB Internalmysqlops
 
RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesYoshinori Matsunobu
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)Jean-François Gagné
 
Using eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumUsing eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumScyllaDB
 
PostgreSQL continuous backup and PITR with Barman
 PostgreSQL continuous backup and PITR with Barman PostgreSQL continuous backup and PITR with Barman
PostgreSQL continuous backup and PITR with BarmanEDB
 
Oracle MAA (Maximum Availability Architecture) 18c - An Overview
Oracle MAA (Maximum Availability Architecture) 18c - An OverviewOracle MAA (Maximum Availability Architecture) 18c - An Overview
Oracle MAA (Maximum Availability Architecture) 18c - An OverviewMarkus Michalewicz
 
MySQL Connectors 8.0.19 & DNS SRV
MySQL Connectors 8.0.19 & DNS SRVMySQL Connectors 8.0.19 & DNS SRV
MySQL Connectors 8.0.19 & DNS SRVKenny Gryp
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)Altinity Ltd
 
DB12c: All You Need to Know About the Resource Manager
DB12c: All You Need to Know About the Resource ManagerDB12c: All You Need to Know About the Resource Manager
DB12c: All You Need to Know About the Resource ManagerAndrejs Vorobjovs
 
Introduction to Spark (Intern Event Presentation)
Introduction to Spark (Intern Event Presentation)Introduction to Spark (Intern Event Presentation)
Introduction to Spark (Intern Event Presentation)Databricks
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 

La actualidad más candente (20)

Apache doris (incubating) introduction
Apache doris (incubating) introductionApache doris (incubating) introduction
Apache doris (incubating) introduction
 
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
Spark Hadoop Tutorial | Spark Hadoop Example on NBA | Apache Spark Training |...
 
Building an analytics workflow using Apache Airflow
Building an analytics workflow using Apache AirflowBuilding an analytics workflow using Apache Airflow
Building an analytics workflow using Apache Airflow
 
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
MySQL Load Balancers - Maxscale, ProxySQL, HAProxy, MySQL Router & nginx - A ...
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
Patroni - HA PostgreSQL made easy
Patroni - HA PostgreSQL made easyPatroni - HA PostgreSQL made easy
Patroni - HA PostgreSQL made easy
 
Distributed Locking in Kubernetes
Distributed Locking in KubernetesDistributed Locking in Kubernetes
Distributed Locking in Kubernetes
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL Administration
 
InnoDB Internal
InnoDB InternalInnoDB Internal
InnoDB Internal
 
RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability Practices
 
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
MySQL Parallel Replication: All the 5.7 and 8.0 Details (LOGICAL_CLOCK)
 
Using eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumUsing eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in Cilium
 
One PDB to go, please!
One PDB to go, please!One PDB to go, please!
One PDB to go, please!
 
PostgreSQL continuous backup and PITR with Barman
 PostgreSQL continuous backup and PITR with Barman PostgreSQL continuous backup and PITR with Barman
PostgreSQL continuous backup and PITR with Barman
 
Oracle MAA (Maximum Availability Architecture) 18c - An Overview
Oracle MAA (Maximum Availability Architecture) 18c - An OverviewOracle MAA (Maximum Availability Architecture) 18c - An Overview
Oracle MAA (Maximum Availability Architecture) 18c - An Overview
 
MySQL Connectors 8.0.19 & DNS SRV
MySQL Connectors 8.0.19 & DNS SRVMySQL Connectors 8.0.19 & DNS SRV
MySQL Connectors 8.0.19 & DNS SRV
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
 
DB12c: All You Need to Know About the Resource Manager
DB12c: All You Need to Know About the Resource ManagerDB12c: All You Need to Know About the Resource Manager
DB12c: All You Need to Know About the Resource Manager
 
Introduction to Spark (Intern Event Presentation)
Introduction to Spark (Intern Event Presentation)Introduction to Spark (Intern Event Presentation)
Introduction to Spark (Intern Event Presentation)
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 

Similar a Golang 高性能实战

Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲84zhu
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践丁 宇
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化丁 宇
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at TaobaoJoshua Zhu
 
快速搭建高性能服务端
快速搭建高性能服务端快速搭建高性能服务端
快速搭建高性能服务端moonbingbing
 
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB
 
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)涛 吴
 
Lamp优化实践
Lamp优化实践Lamp优化实践
Lamp优化实践zhliji2
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
Apache trafficserver
Apache trafficserverApache trafficserver
Apache trafficserverDin Dindin
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
Kafka cluster best practices
Kafka cluster best practicesKafka cluster best practices
Kafka cluster best practicesRico Chen
 
大型互联网站性能优化
大型互联网站性能优化大型互联网站性能优化
大型互联网站性能优化丁 宇
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLei (Harry) Zhang
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践mysqlops
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updatedPaul Chao
 
高性能LAMP程序设计
高性能LAMP程序设计高性能LAMP程序设计
高性能LAMP程序设计fuchaoqun
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践孙立
 

Similar a Golang 高性能实战 (20)

Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
Hacking Nginx at Taobao
Hacking Nginx at TaobaoHacking Nginx at Taobao
Hacking Nginx at Taobao
 
Kafka in Depth
Kafka in DepthKafka in Depth
Kafka in Depth
 
快速搭建高性能服务端
快速搭建高性能服务端快速搭建高性能服务端
快速搭建高性能服务端
 
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360
 
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
Pegasus: Designing a Distributed Key Value System (Arch summit beijing-2016)
 
Lamp优化实践
Lamp优化实践Lamp优化实践
Lamp优化实践
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
Apache trafficserver
Apache trafficserverApache trafficserver
Apache trafficserver
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Kafka cluster best practices
Kafka cluster best practicesKafka cluster best practices
Kafka cluster best practices
 
大型互联网站性能优化
大型互联网站性能优化大型互联网站性能优化
大型互联网站性能优化
 
Large-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The HoodLarge-Scale Cluster Mangement & Kubernetes Under The Hood
Large-Scale Cluster Mangement & Kubernetes Under The Hood
 
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
Web请求异步处理和海量数据即时分析在淘宝开放平台的实践
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
企業導入微服務實戰 - updated
企業導入微服務實戰 - updated企業導入微服務實戰 - updated
企業導入微服務實戰 - updated
 
高性能LAMP程序设计
高性能LAMP程序设计高性能LAMP程序设计
高性能LAMP程序设计
 
高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践高性能队列Fqueue的设计和使用实践
高性能队列Fqueue的设计和使用实践
 

Más de rfyiamcool

Redis cluster那些事儿
Redis cluster那些事儿Redis cluster那些事儿
Redis cluster那些事儿rfyiamcool
 
Golang advance
Golang advanceGolang advance
Golang advancerfyiamcool
 
Mysql fast share
Mysql fast shareMysql fast share
Mysql fast sharerfyiamcool
 
python高级内存管理
python高级内存管理python高级内存管理
python高级内存管理rfyiamcool
 
分析mysql acid 设计实现
分析mysql acid 设计实现分析mysql acid 设计实现
分析mysql acid 设计实现rfyiamcool
 
cdn的那些事儿
cdn的那些事儿cdn的那些事儿
cdn的那些事儿rfyiamcool
 
大话redis设计实现
大话redis设计实现大话redis设计实现
大话redis设计实现rfyiamcool
 
async io frame
async io frameasync io frame
async io framerfyiamcool
 
异步io框架的实现
异步io框架的实现异步io框架的实现
异步io框架的实现rfyiamcool
 
美妙的多进程管理
美妙的多进程管理美妙的多进程管理
美妙的多进程管理rfyiamcool
 
聊聊我接触的集群管理
聊聊我接触的集群管理聊聊我接触的集群管理
聊聊我接触的集群管理rfyiamcool
 

Más de rfyiamcool (14)

Redis cluster那些事儿
Redis cluster那些事儿Redis cluster那些事儿
Redis cluster那些事儿
 
Golang advance
Golang advanceGolang advance
Golang advance
 
Mysql fast share
Mysql fast shareMysql fast share
Mysql fast share
 
python高级内存管理
python高级内存管理python高级内存管理
python高级内存管理
 
Micro service
Micro serviceMicro service
Micro service
 
分析mysql acid 设计实现
分析mysql acid 设计实现分析mysql acid 设计实现
分析mysql acid 设计实现
 
Raft
Raft Raft
Raft
 
cdn的那些事儿
cdn的那些事儿cdn的那些事儿
cdn的那些事儿
 
大话redis设计实现
大话redis设计实现大话redis设计实现
大话redis设计实现
 
python gil
python gilpython gil
python gil
 
async io frame
async io frameasync io frame
async io frame
 
异步io框架的实现
异步io框架的实现异步io框架的实现
异步io框架的实现
 
美妙的多进程管理
美妙的多进程管理美妙的多进程管理
美妙的多进程管理
 
聊聊我接触的集群管理
聊聊我接触的集群管理聊聊我接触的集群管理
聊聊我接触的集群管理
 

Golang 高性能实战