稳定和高效是现在web应用的最强烈的需求指标,所以SAE的基础架构也是首先考虑满足以上两点。目前SAE架构中所有服务均为多主或一主多辅的结构,避 免服务单点。在多主的结构中(比如cron服务、mail服务),有分布式锁服务保证运行的正确性。在一主多辅(Storage服务)的结构中,有HB和 漂移保证故障时服务的无缝切换。SAE内部使用开源项目redis 作为异步通信队列 ,异步通信降低了成员间的依赖性,某种程度上提高了可靠性。SAE的所 有数据存储均采用全冗余架构,包括分布式数据库和分布式文件存储,保证在极端情况下的数据恢复。SAE使用现在流行的Nginx作为中段转发介 质,Nginx 特有的心跳检查机制配合前端服务可以达到单点故障时15秒内服务恢复。
SAE的缓存服务由中心控制系统记录meta data,一旦获取meta data后以后所有调用均不依赖于中心控制系统,这样的设计既保证了在中心控制系统故障时的服务可用性,又保证了缓存服务特有的高效性。
对于扩展性,SAE在web服务前端采用自动负载均衡技术 ,可以方便的进行水平扩展。前端机利用文件缓存,可以自动提高将访问量大App的读写速度,而将 访问量小的App置换出去。SAE内部的App组织形式采用二级hash 树结构,可预计支持1000000+的App数量,而不影响访问速度