移动互联应用后台基础平台搭建(立项调研)

一、 背景公司准备转型移动互联网行业应用,对外进行移动互联业务的自主运营。此前公司对移动互联网当前的一些技术选择等了解不是太多。现阶段在做一些移动互联网业务后台基础平台的搭建预研工作,需要自主搭建公司应用于移动互联网应用的产品,来进行自主运营。二、 需求目前...显示全部
一、 背景
公司准备转型移动互联网行业应用,对外进行移动互联业务的自主运营。此前公司对移动互联网当前的一些技术选择等了解不是太多。
现阶段在做一些移动互联网业务后台基础平台的搭建预研工作,需要自主搭建公司应用于移动互联网应用的产品,来进行自主运营。

二、 需求
目前在对该移动互联网基础结构平台进行方案选型,想要了解一下当前主流的一些平台架构方案,希望该平台架构能够满足以下需求:
1.        基于集群式分布主机或者云平台的架构;
2.        随着移动互联网应用用户数量的增长,可以通过对平台主机进行简单的设备增加,实现对负载能力的提升;
3.        当平台中的主机少量故障时,能够平滑进行负载的迁移,尽量减少用户端使用应用的影响;
4.        平台中的主机不使用小型机设备,操作系统基于 Linux来进行组建;
5.        该平台需要考虑到:分布式存储、集群数据库服务器(可以是关系型数据库,也可以是NoSql数据库)、分布式缓存;
6.        平台需要能够支持虚拟化部署;
7.        需要考虑到能够扩展支持千万级的移动应用用户量。

三、 问题
1.        当前能够满足需求的一些主流移动互联网架构方案都有哪些?能否介绍说明?(希望除了 OpenStack 的方案,还能有一些其它的方案介绍)
2.        有简单看过一些 OpenStack 的东西,但是目前对于 OpenStack 不是很了解,OpenStack 都包含哪些组件?能否实现平台的需求?都需要使用哪些组件?
3.        对于这样一种平台,需要对其进行自动化监控的话,都有哪些工具可以选择?
4.        对该平台的性能、Failover等的测试,都有哪些工具可以选择?收起
参与13

查看其它 7 个回答hongtu_zang的回答

hongtu_zanghongtu_zang软件架构设计师中信云网
1、应用系统:
简单的移动互联网业务分层大概可以这样搭建:
前端代理+ web应用业务层 + 缓存 + db
前端代理可以用nginx等
如果有图片等等大量磁盘IO的需求,还需要有个图片缓存服务器,以降低对磁盘的读写
缓存用来将db内容存储为KV对,例如redis,以减少业务对db的访问
以上这些跟OpenStack无关,有个帖子可以参考http://blog.csdn.net/u011650565/article/details/44620235

2、云平台
OpenStack是个开源云平台,可以搭建私有云来为公司提供高可用的云主机和高峰期的弹性扩展
当前比较热门开源的云平台有OpenStack和cloudstack两种
实现的功能基本相似,基本上能够满足资源的规划,部署,故障恢复和弹性扩展
所带来的不足是需要提供大量的物理资源,比如一台物理机千兆网卡承载的并发量,换用虚拟化方案,一台物理机可能并行10台vm,这样可能就需要用到万兆网卡才能完整发挥其效率。

3、OpenStack组件
Nova,Cinder,Glance,Keystone,Nuetron,Swift
Nova,计算服务,用来提供服务器虚拟化
Cinder,提供虚拟机的额外块存储,将某个存储设备或者服务器的某个分区,直接挂载到一台vm上,提供存储。
Glance,虚拟机的镜像
Keystone,OpenStack的权限验证模块
Neutron,OpenStack的网络服务,这个可以不用,只用Nova自带的nova-network也可以实现简单的网络管理,而且比较稳定
Swift,分布式对象存储,存放图片,文本,视频等功能
但是swift保证的是高可靠性,如果大并发访问,为了优化体验,还需要在其上搭建缓存服务器,视频还需要专门搭建流媒体相关的计算服务器等(流媒体方面我就不擅长了),这个是云平台目前做不到的

4、监控
目前开源的监控产品很多,zabbix,zenoss,ganglia等等,都可以考虑,目前我们用zabbix,还不错

5、性能
(1)因为有了虚拟化层,所以效率损失是一定的,只能根据虚拟化选型来进行调优
(2)性能的另一个损失是由于物理限制,一台物理机的吞吐量分配给多台vm来使用,每台vm一定会比物理机降低不少,可以通过业务方面的调度,把高CPU、高内存消耗、高磁盘IO和高网络IO的业务交错部署,尽量达到物理资源的使用极限,不浪费资源

6、短板
平台自动化运维,云平台自带HA和LB。但是也有很多组件和服务,实际每个主机上的每个服务随时可能出现问题,基于此种考虑,可以使用puppet或者saltstack等运维工具保证服务的可用和故障恢复。
云平台不能解决的是应用层面的弹性规划,例如应对高峰期的大量并发,需要业务层面支持(云平台弹性调度启动新的vm,业务需要自发现并自动部署,这类功能需要额外开发)
互联网服务 · 2015-03-25
浏览2127

回答者

hongtu_zang
软件架构设计师中信云网
擅长领域: 云计算私有云云管平台

hongtu_zang 最近回答过的问题

回答状态

  • 发布时间:2015-03-25
  • 关注会员:1 人
  • 回答浏览:2127
  • X社区推广