SlideShare une entreprise Scribd logo
1  sur  67
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

NATS - A new nervous system for distributed cloud platforms
NATS - A new nervous system for distributed cloud platformsNATS - A new nervous system for distributed cloud platforms
NATS - A new nervous system for distributed cloud platformsDerek Collison
 
The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS NATS
 
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...NGINX, Inc.
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservicesBilgin Ibryam
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersJavan Rasokat
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해중선 곽
 
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...Altinity Ltd
 
How to Get Started With NGINX
How to Get Started With NGINXHow to Get Started With NGINX
How to Get Started With NGINXNGINX, Inc.
 
Cross Site Request Forgery Vulnerabilities
Cross Site Request Forgery VulnerabilitiesCross Site Request Forgery Vulnerabilities
Cross Site Request Forgery VulnerabilitiesMarco Morana
 
NGINX: Basics and Best Practices
NGINX: Basics and Best PracticesNGINX: Basics and Best Practices
NGINX: Basics and Best PracticesNGINX, Inc.
 
Getting Started with Amazon ElastiCache
Getting Started with Amazon ElastiCacheGetting Started with Amazon ElastiCache
Getting Started with Amazon ElastiCacheAmazon Web Services
 
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersThe Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersSATOSHI TAGOMORI
 
RethinkConn 2022!
RethinkConn 2022!RethinkConn 2022!
RethinkConn 2022!NATS
 
Parallel Replication in MySQL and MariaDB
Parallel Replication in MySQL and MariaDBParallel Replication in MySQL and MariaDB
Parallel Replication in MySQL and MariaDBMydbops
 
Lightweight Transactions in Scylla versus Apache Cassandra
Lightweight Transactions in Scylla versus Apache CassandraLightweight Transactions in Scylla versus Apache Cassandra
Lightweight Transactions in Scylla versus Apache CassandraScyllaDB
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesEberhard Wolff
 

Tendances (20)

NATS - A new nervous system for distributed cloud platforms
NATS - A new nervous system for distributed cloud platformsNATS - A new nervous system for distributed cloud platforms
NATS - A new nervous system for distributed cloud platforms
 
The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS The Zen of High Performance Messaging with NATS
The Zen of High Performance Messaging with NATS
 
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
Install and Configure NGINX Unit, the Universal Application, Web, and Proxy S...
 
Dual write strategies for microservices
Dual write strategies for microservicesDual write strategies for microservices
Dual write strategies for microservices
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...HTTP Analytics for 6M requests per second using ClickHouse, by  Alexander Boc...
HTTP Analytics for 6M requests per second using ClickHouse, by Alexander Boc...
 
How to Get Started With NGINX
How to Get Started With NGINXHow to Get Started With NGINX
How to Get Started With NGINX
 
Cross Site Request Forgery Vulnerabilities
Cross Site Request Forgery VulnerabilitiesCross Site Request Forgery Vulnerabilities
Cross Site Request Forgery Vulnerabilities
 
WebAssembly Overview
WebAssembly OverviewWebAssembly Overview
WebAssembly Overview
 
NGINX: Basics and Best Practices
NGINX: Basics and Best PracticesNGINX: Basics and Best Practices
NGINX: Basics and Best Practices
 
Getting Started with Amazon ElastiCache
Getting Started with Amazon ElastiCacheGetting Started with Amazon ElastiCache
Getting Started with Amazon ElastiCache
 
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersThe Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and Containers
 
RethinkConn 2022!
RethinkConn 2022!RethinkConn 2022!
RethinkConn 2022!
 
Parallel Replication in MySQL and MariaDB
Parallel Replication in MySQL and MariaDBParallel Replication in MySQL and MariaDB
Parallel Replication in MySQL and MariaDB
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Lightweight Transactions in Scylla versus Apache Cassandra
Lightweight Transactions in Scylla versus Apache CassandraLightweight Transactions in Scylla versus Apache Cassandra
Lightweight Transactions in Scylla versus Apache Cassandra
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For Microservices
 

Similaire à 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的设计和使用实践孙立
 

Similaire à 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的设计和使用实践
 

Plus 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
 

Plus 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 高性能实战