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

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

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

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

8同行回答

hongtu_zanghongtu_zang软件架构设计师中信云网
1、应用系统:简单的移动互联网业务分层大概可以这样搭建:前端代理+ web应用业务层 + 缓存 + db前端代理可以用nginx等如果有图片等等大量磁盘IO的需求,还需要有个图片缓存服务器,以降低对磁盘的读写缓存用来将db内容存储为KV对,例如redis,以减少业务对db的访问以上这些跟OpenSt...显示全部
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
浏览2137
博飞信息科技博飞信息科技CTO博飞信息科技(上海)有限公司
回复 3# quietywind     个人的一点点理解,不妥之处还望赐教:1. 硬件单节点故障的快速切换/漂移,减轻硬件故障因素带来的运行影响; - 我想在您的架构中,应用层必然是一个支持负载均衡的集群,OpenStack并不能解决或降低硬件本身的失败,但是OpenStack可以提供快速扩展一...显示全部
回复 3# quietywind


    个人的一点点理解,不妥之处还望赐教:
1. 硬件单节点故障的快速切换/漂移,减轻硬件故障因素带来的运行影响; - 我想在您的架构中,应用层必然是一个支持负载均衡的集群,OpenStack并不能解决或降低硬件本身的失败,但是OpenStack可以提供快速扩展一个集群的能力(新启动一个节点加入集群),但是OpenStack(包括所有的公有云)只提供这个能力,并不会为您做这件事情,您需要在应用层自己处理
2. 分布式存储的方案用来对通过应用上传的图片、文本、视频进行存储; - 这个对分布式存储应当没有什么问题,需要明确接口方式即可
3. 正如您所说的希望通过该方式能够实现横向的扩展能力,当应用负载变高的时候可以通过增加服务器节点的方式来实现对负载的支撑; - 这个不是云平台现成提供的功能(有一些变通的方式,但是很粗糙),因为云平台相对来说还是通用性的,所以并不清楚应用的哪个具体指标会成为扩容的触发器,所以这个需要用户自己判断。
4. 由于我们的应用前端会有手机APP和网站两部分,为了加快响应速度,会在应用层采用缓存技术方案,不知道分布式存储或者云平台能否作为缓存的基础支撑; - 可以将Redis或Memcache跑在云主机上,OpenStack的Trove项目对此有一定的支持
另外,针对您提到的需要应用去处理的那些点(是否是指我在需求中描述的内容?),您那边是否有好的建议需要我们在应用层面考虑哪些内容呢?
我没有现成的解决方案,只能从API角度给您支持
再有,您提到的组件包含三部分即可,但是却列出了 Nova/Cinder/Neutron/Keystorne/Glance 五个模块,不知道是否需要在里面再做筛选?
Nova管理计算资源(CPU/内存)
Cinder管理块存储
Glance镜像管理(搭配Nova使用)
Keystone权限管理,所有模块相互练习的核心
Neutron管理网络资源
这里面没有提及分布式存储,分布式存储可以选择对象存储Swift,或者分布式块设备Ceph,或者分布式文件系统GlusterFS,都是比较好的开源解决方案。
十分感谢您帮忙做出的回复,由于我对 OpenStack 还仅仅停留在表面,所以有些问题可能问的显得比较外行,还烦请您多多包涵。
没有关系,大家可以互相学习,有机会可以电话沟通收起
软件开发 · 2015-03-24
浏览1928
quietywindquietywind副总工北京合众思壮时空物联科技有限公司
回复 5# 彬彬 谢谢老大,帮忙修改。显示全部
回复 5# 彬彬
谢谢老大,帮忙修改。收起
系统集成 · 2015-03-23
浏览1925
quietywindquietywind副总工北京合众思壮时空物联科技有限公司
回复 4# 北京休伦科技 不好意思哈,貌似发帖的时候选错了。显示全部
回复 4# 北京休伦科技
不好意思哈,貌似发帖的时候选错了。收起
系统集成 · 2015-03-23
浏览1917
彬彬彬彬网站运营经理twt
回复 4# 北京休伦科技     这个是帖子编辑的问题,我已经给修改了!现在所有会员可以看到了!显示全部
回复 4# 北京休伦科技


    这个是帖子编辑的问题,我已经给修改了!现在所有会员可以看到了!收起
互联网服务 · 2015-03-23
浏览1917
博飞信息科技博飞信息科技CTO博飞信息科技(上海)有限公司
回复 3# quietywind     为啥只有作者可见呢?显示全部
回复 3# quietywind


    为啥只有作者可见呢?收起
软件开发 · 2015-03-23
浏览1904
quietywindquietywind副总工北京合众思壮时空物联科技有限公司
回复 2# 北京休伦科技 是的,我的问题问的可能有些宽泛,不过确实是会涉及到应用系统本身的软件架构和基础平台架构两个部分。目前这个事情我们主要先考量基础平台部分的架构搭建,后续会根据基础平台的特性和方案选择来重新对应用软件的架构进行调整以支持变化。我们期望的云...显示全部
回复 2# 北京休伦科技
是的,我的问题问的可能有些宽泛,不过确实是会涉及到应用系统本身的软件架构和基础平台架构两个部分。
目前这个事情我们主要先考量基础平台部分的架构搭建,后续会根据基础平台的特性和方案选择来重新对应用软件的架构进行调整以支持变化。
我们期望的云平台和分布式存储能够帮我们解决:
1. 硬件单节点故障的快速切换/漂移,减轻硬件故障因素带来的运行影响;
2. 分布式存储的方案用来对通过应用上传的图片、文本、视频进行存储;
3. 正如您所说的希望通过该方式能够实现横向的扩展能力,当应用负载变高的时候可以通过增加服务器节点的方式来实现对负载的支撑;
4. 由于我们的应用前端会有手机APP和网站两部分,为了加快响应速度,会在应用层采用缓存技术方案,不知道分布式存储或者云平台能否作为缓存的基础支撑;

另外,针对您提到的需要应用去处理的那些点(是否是指我在需求中描述的内容?),您那边是否有好的建议需要我们在应用层面考虑哪些内容呢?

再有,您提到的组件包含三部分即可,但是却列出了 Nova/Cinder/Neutron/Keystorne/Glance 五个模块,不知道是否需要在里面再做筛选?

十分感谢您帮忙做出的回复,由于我对 OpenStack 还仅仅停留在表面,所以有些问题可能问的显得比较外行,还烦请您多多包涵。收起
系统集成 · 2015-03-23
浏览1974
博飞信息科技博飞信息科技CTO博飞信息科技(上海)有限公司
回复 1# quietywind     您好,您的问题主要涉及两个部分:应用本身的架构和底层基础架构平台。    我对移动互联网应该采用什么样的架构没有太多的经验,只能结合云平台来谈一些自己的理解。这里您提到的2、3、5(一部分)、7都是属于应用层本身架构的问题,...显示全部
回复 1# quietywind


    您好,您的问题主要涉及两个部分:应用本身的架构和底层基础架构平台。
    我对移动互联网应该采用什么样的架构没有太多的经验,只能结合云平台来谈一些自己的理解。这里您提到的2、3、5(一部分)、7都是属于应用层本身架构的问题,需要在应用层去处理;其余几个问题都属于基础架构层的问题。首先有一点,无论您底层用什么样的架构,逻辑也好,云平台也好,都不能直接的解决您应用层面出现的问题,可能最终还是需要在应用层的优化来解决出现的问题。

    那么,云平台和分布式存储到底能在您的场景下起到什么样的作用呢?个人认为,只是在横向扩展能力上,提供您一个可伸缩的架构。

除去OpenStack,可供选择的云平台(不是移动互联网架构)包括CloudStack、桉树等,但是都不如OpenStack扩展能力和火爆程度相提并论。OpenStack可以将您的计算、存储、网络资源池化,灵活调度,在您的场景中,可能用到的组件包括这三个部分即可(Nova/Cinder/Neutron/Keystone/Glance)。对云平台监控和普通物理机监控有一定的区别,但是通用性的方法很多,例如Zabbix/Diamond之类的工具均可,但是会根据实际情况自己写一些插件丰富监控指标。至于云平台的性能,可能需要根据应用场景来进行实际的测试,并没有一定之规。

这是我对您问题的一点点理解,我们可以进一步进行沟通。收起
软件开发 · 2015-03-23
浏览1934

提问者

quietywind
副总工北京合众思壮时空物联科技有限公司
擅长领域: 云计算存储需求分析

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2015-03-20
  • 关注会员:1 人
  • 问题浏览:7745
  • 最近回答:2015-03-25
  • X社区推广