InfoQ百度技术沙龙"APP Engine技术应用"主题的总结记录

       [文章作者:孙立 链接:http://www.cnblogs.com/sunli/ 更新时间:2010-12-18]    

       今天去参加了InfoQ举办的百度技术沙龙活动,这次的主题是“APP Engine技术应用”。最近两年“云计算”,“虚拟化”听得很多,但是真正拿出来应用的,技术分享的非常好。这次的主题非常有吸引力,由于现场的wifi有点问题,所以没有做微博的直播,所以就准备写篇博客来总结下。

      首先分享的是来自百度的肖伟的《揭秘百度应用开发引擎(Baidu App Engine)》,肖伟一再强调Baidu App Engine(BAE)不是GAE,在技术上跟GAE不是一个类型的。

       下面是PPT的一些记录:

 BAE是 面向开发者的单机环境

 面向程序执行的分布式环境

 面向运维的自动化工具链

 面向分布式的多语言编程框架 

统一管理百度所有的分布式资源 

BEA是一个面向网络的操作系统,它为互联网用户提供在线服务的开发运行平台

 可以再上面进行编译,调试器,提供BAE开发库 BAE是集群的,

天然分布式的 他是一个网络操作系统,对分布式资源的管理和调度 支持百度老服务的迁移  

统一集群,多产品使用 每个产品账号拥有独立的资源 

--CPU,带宽,内存容量,存储容量 资源根据服务热度,动态调整支持传统服务的移植

--直接移植

--少量移植修改
BAE可以开发复杂企业级应用

 

所有的运服务资源化,支持多账号限额访问
定位服务器管理程序启动的进程组,这些进程可能在本地,也可能在其他机器上管理进程组下每个进程的状态和配置动态监控进程组下进程的变化能将进程变化信息实时推送给监听者计划提供DNS服务
计算节点功能    用户进程执行的环境PHP的支持


动态调度细节1.如何伸缩资源有专门的代码管理服务器
在一台机器能够同时分配1000个进程,为1000个小网站提供服务
不同服务的进程隔离限制每个进程(虚拟容器,虚拟化进程)每个进程访问自己的目录内存容量CPU时间磁盘容量,网卡
内核的时间调度

分布式数据库分布式KV

消息队列缓存服务Crontab

外网代理
目前开展的工作
支持linux老服务的迁移
C语言
用虚拟机来取代fast-cgi进程PHP进程之间几乎不会通信,C语言启动多个进程,存在大量的进程通信.PHP代码比较大(视频,falsh等),c语言进程非常小,程序和数据时分开的


进程通讯的优化

--通讯速度的优化  IPC优化成共享内存通讯                  

RPC用TCP通讯--进程点有效连接数的优化   主机之间建立一套管道   同主机下的进程享受统一管道      

 

百度基础架构部   iis@baidu.com
提高机器的利用率,统一整个公司的开发模式。时机成熟的时候,可能会开放

 

接下来是来自新浪的丛磊(@kobe)的《深入SAE云计算架构》,这是一个以前他没有讲过的主题,而且深入到SEA系统架构的内部,非常的给力。下面是一些ppt的记录:sina appengine

重点介绍以下几点:

1.cload service
2.rdc

3.memcachedx

4.taskqueue

目前SAE使用的服务有:

php  stor  memcachex db ,rdc taskqueue cron defferredjobs fetchurl  tmpfs  appconfig  smail image xhprof

同步计算池,异步计算池

RDC目标:   

1.监控百万级的DB,包括心跳检查,主从同步检查,节点负载   

2.管理百万级的DB,包括启动,停止,迁移,重启,切换   

3.被动复制的HA   

4.支持mysql5通讯协议,代理曾完全透明,代理损耗低   

5.无状态依赖,自身支持水平扩展   

6.提供用户的DB的隔离性,保证整体集群的安全性    

RDC: RDC是mysql的一个子集

 1.多线程VS多进程(RDC是多进程)

 2.SQL解析,词法分析VS语法分析 

3.queryCAche  

rdc不负责用户数据库的水平扩展,所以水平扩展需要用户自己做分表 

rdc自身提供一主多从的DB结构,上层只是读写分离 为了整个数据库平台的安全和可靠,

RDC会根据自身的预判算法预先屏蔽某些SQL语句。

RDC强烈建议用户使用正确的MYSQL调用习惯,对每个MYSQL函数判断返回值  

RDC的预判机制  select update insert **

三条封锁防线,当前SQL, 

SQL并发执行时间和  

水平扩展,

监控和系统结合

   memcachex 

1.low overhead 

2.ha 

3.statics 

4.connections protector 

5.data dump   

taskqueue(回调) 简单的任务离线处理 

deferredjobs(系统级的调用重量级的异步任务,比如数据库的导入导出。)  顺序队列和并发队列  

硬HASH 多进程

非阻塞timeout 

master-slave被动复制,内存级的主从复制 

worker延迟等待时间 

worker死亡唤醒检查                         

InfoQ随后分忧详细的资料放出,请关注:http://www.infoq.com/cn/

总结:

      百度App Engine是内部使用的,目前未开放。BAE更加底层,更加透明化。

      SAE是对用户开放的,所以安全性比百度高,成熟度也得到了用户的验证。SAE的更加靠近应用一点,提供了非常多的服务,这点非常好,相当于帮助用户自然的进行了一个高可靠性的架构。而且也提供了资源的监控,对用户的低效的代码可以进行监控和控制,其实这对用户来说也是好处。

        会后的开放讨论环节,我提了一个主题《如何快速构建企业内部的AE》,根据讨论,我了解到有些人其实也在做类似的东西,但是跟BAE,SAE不一样,他们还是在想做复杂级,重量级的云计算。

       个人觉得,对于一个公司内部来讲,特别是对于中型的公司,可以先把应用趋向于服务化,然后把服务化的东西抽象化,抽象化后的东西做成集群,那就是企业内部的AE了。

       文章大部分都是PPT的记录,排版不是很好,可能意思也不能准备表达,但是相信对感兴趣的朋友有帮助。

posted @ 2010-12-18 21:01 草屋主人 阅读(...) 评论(...) 编辑 收藏