百度应用开发引擎肖伟(xiaowei@baidu.com)百度应用开发引擎(BAE)–面向开发者的单机环境–面向程序执行的分布式环境–面向运维的自动化工具链–统一管理百度所有分布式资源–面向分布式的多语言编程框架类比百度互联网服务Windows单机程序功能典型产品开发技巧开发工具运行环境定位兼容性为互联网用户提供在线服务的开发运行平台为单机用户提供软件开发运行平台知道,百科Office,firefox使用程序语言(c/c++,java,php…),面向多线程多进程的编程模型。使用程序语言(c/c++,java,php,c#...)面向多线程多进程和网络的编程模型。编译、调试器,BAE开发库。编译、调试器,.net等其它SDKBAE集群,天然分布式单机网络操作系统,对分布式资源(软硬件)的管理和调度操作系统,对硬件资源的管理和调度支持百度老服务的迁移支持windows老版本的程序统一集群多产品使用每个产品账号拥有独立的资源–CPU、带宽、内存容量、存储容量资源根据服务热度,动态调整支持传统服务的移植–直接移植–少量修改移植指标\产品AWSBAEGAE支持的数据量分布式支持运维灵活性复杂运用开发支持学习成本安全性成熟度基础设施(比如IDC)评价海量(S3,simpledb)无,需要开发者考虑强强低好成熟亚马逊部署,灵活性不佳开发相对复杂运用海量(百度云存储和分布式数据库)多进程模型,进程通讯优化强强低一般不成熟配合产品需求统筹考虑开发企业级复杂运用海量(Blob存储,GQL)对等服务部署,简单分布式支持弱弱中好成熟没这个概念简单个人运用开发所有云服务资源化,支持多账号限额访问提供管理这些资源的平台提供用户使用这些资源的程序运行环境其它辅助工具触发式更新信息服务变更反馈7层负载均衡计算结点(集群)关系数据存储系统分布式文件存储系统其它运服务定位服务器管理程序启动的进程组,这些进程有可能在本机,有可能在其他机器上管理进程组下每个进程的状态和配置动态监控进程组下进程的变化能将进程变化信息实时推送给监听者计划提供DNS服务用户进程执行的环境多语言支持–对于c语言就是虚拟机–对于php就是php解释器分布式化支持–对虚拟机进程和镜像的调度–对php解释器进程(fastcgi)和php代码的调度下面主要介绍php语言的支持–php简单,好阐述–每个php进程都是对等结点,容易做分布式7层负载均衡定位服务器Fastcgi池(分布式环境)静态文件服务(云存储的特例)FastcgiFastcgiFastcgiFastcgiFastcgiFastcgi获取需要失效缓存的机器缓存失效在一台机器上能够同时分配1000个进程,为1000个小网站提供php服务能够在1千台机器上起1万个进程为一个大网站提供php服务资源的扩容是动态的限制每个进程–可访问目录–使用内存容量–使用cpu时间–使用磁盘容量–使用网卡分布式数据库分布式kv存储消息队列缓存服务crontab服务外网代理支持linux老服务迁移C语言分布式开发框架与php架构的区别–虚拟机进程取代fastcgi进程说明fastcgi虚拟机系统内部进程数进程通讯程序大小php解释器固定的几个fastcgi进程,相互独立Php的代码相互之间不直接通讯Php代码体积比较大(夹杂着flash等数据)linux根据用户的程序,启动多进程多线程的c程序存在大量的进程通讯需求小,程序和数据是分开的7层负载均衡定位服务器虚拟机资源池其他云虚拟机虚拟机虚拟机虚拟机虚拟机虚拟机服务组名资源不够资源池分配虚拟机通知资源变更成功通知负载均衡资源更新服务组名进程进程进程进程进程进程定位服务器管理服务进程进程通讯统一通讯方式代码发布管理平台进程通讯虚拟机(1)虚拟机(2)虚拟机(3)通讯速度优化–IPC优化成共享内存通讯–RPC用tpc通讯进程间有效连接数的优化–主机间建立一条管道–同主机下的多进程远程通讯时候共享管道百度基础架构部(inf)–在线服务统一架构组(IIS)–邮件:iis@baidu.com