Golang在BFE的应用 ;内容提要 ?后台程序开发的需求和难点 一 C, Python and Go 对比 ?采用Go语言重构BFE -背景和技术路线 -GC问题 -协议一致性 -分布式架构;后台程序开发的需求(1);后台程序开发的需求(2);后台程序开发的需求(3);后台程序编程的难点;C vs Python (1);C vs Python (2);C vs Python (3);Golang (1);Golang (2);Golang(3);BFE(Baidu Front End);BFE(Baidu Front End);为什么重写BFE;技术选型:Go vs Nginx;几个问题;GC带来的问题 —GC是个好东西,但也有问题 -难以避免的延迟(几十到几百ms) ?经验公式:10万对象1ms扫描时间 -1个tcp连接,约10个对象=> 1万连接,1ms gc延迟 ? GO-BFE的实时需求 -请求的处理延迟平均1ms以内,最大10ms ?实测 -100万连接,400ms gc延迟;GC优化思路;通过Array减少引用计数;困境;车轮大战!;轮转GC方案;GC优化-多进程配合;技术细节;技术细节 ?服务态 -调用Accept,获取新的请求 ?等待态 一不调用Accept,已经连接的client,可以继续收发 -等待这些已有的连接关闭 ?垃圾收集态 —王幼调用GC;GC优化-补充分析;多说一句Go 1.5/1.6:没有银弹;协议一致性问题;协议一致性;分布式架构;总结