传统基础架构应用程序的系统架构师,云计算应用程序的设计确实是相当有挑战性的工作。体现在应用程序架构师首先要了解云计算环境和传统基础架构的差异并且充分利用云计算平台的一些特点来更好的满足用户需求。

对于刚从传统应用架构转到云计算平台的应用架构师,我觉得理解下面四点非常重要:

1.运行环境的感知能力

传统的基础架构或系统平台中的资源一般都是不能动态配置,因此应用程序在设计的时候主要考虑自身的业务逻辑的实现。应用程序本身的监控和管理都是通过其他系统管理软件等来实现。这些传统的应用程序本身对底层平台的运行情况是没有任何感知的。

在云计算环境下,应用程序的运行环境等变得不像传统环境那样可控。要提供一个可靠应用,要充分考虑到底层环境的单个节点出问题的可能性。为了
保证应用程序的可靠运行,应用需要感知底层运行环境的变化,并却根据这些变化作自适应调整,应用能够快速从错误中恢复过来,比如状态的保持,自动化数据备份和恢复等

云计算平台具有可编程的资源分配接口,因此应用程序本身的自动化部署和动态扩展都成为可能。应用可以根据基础架构平台提供的接口来感知应用程序的实际负载情况,调用相应的资源分配接口,启动更多的节点提高负载能力

2.分布式计算

目前云计算平台都是用廉价和标准的计算机硬件构成,在云平台单个计算节点的计算和存储能力相当有限,因此在云计算环境下,设计应用程序一般要考虑使用多个节点,这样在设计的时候要经可能使用并行设计的思想或采用分布计算的方式。例如采用类似MapReduce的 编程模型。使用分布式存储等.

3.松耦合和水平扩展能力

无论是功能上还是性能上云计算对应用的灵活性提出了更高的要求。这就要求应用程序在设计的时候要考虑松耦合的架构。松散耦合的设计在云计算平台可以体现为:

  • 尽量采用SOA的系统架构,让应用的构建和功能上保持灵活性,比如将某些应用功能和数据存储设计成服务单元,通过标准的接口来访问。保持服务本身部署的灵活性
  • 应用服务尽可能的采用无状态设计。这样有利于服务本身的迁移和水平扩展
  • 采用异步消息机制来实现松耦合的架构设计。通过异步消息机制可以使得应用各个模块/服务之间通过事先定义好的接口进行异步通信,相互之间就像一个不透明的黑盒子

4.数据存储方式

在传统的应用设计中,我们一般采用关系型数据库来存储数据。但是在云计算环境下,云计算平台里每个节点本身的计算和存储能力有限,传统的关系数据库一般不支持分布式计算/存储或者支持得不够好。在云计算环境中,传统的关系数据库会面临计算/存储扩展能力的挑战。另外传统关系数据库对非结构化或者半结构化数据的管理效率不高。

NOSQL数据库在对分布式计算、存储和非结构化的支持方面比传统数据库有先天优势,
更能适应云计算环境。

Cloud_panel的更多相关文章

随机推荐

  1. R语言数据类型转换

    test for data type is.numeric(), is.character(), is.vector(), is.matrix(), is.data.frame() convert i ...

  2. [HDOJ5510]Bazinga(并查集)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510 普通集合会tle,换高贵的并查集. #include <algorithm> #in ...

  3. vm上安装ubuntu

    图解演示环境版本: 本机系统: WIN7 虚拟机:VMware Workstation 8 (英文版) 安装目标:Ubuntu Desktop 12.04 LTS  (请点击这里)先下载好iso镜像文 ...

  4. 《OD大数据实战》Sqoop入门实例

    官网地址: http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.5-cdh5.3.6/SqoopUserGuide.html 一.环境搭建 1. 下载 s ...

  5. Qt之自定义搜索框

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...

  6. 精选37条强大的常用linux shell命令组合

    任务                             命令组合 1 删除0字节文件 find . -type f -size 0 -exec rm -rf {} \;find . type f ...

  7. [Swift系列]002-基础语法

    基础语法就那老几样,很快可以说完 [常量.变量] 1.变量用 var,系统自动去判断类型,但变量再次赋值需保持数据类型一致 var  a=50 相信用过js/java/C#的,对这个var都不陌生 使 ...

  8. org.hibernate.AnnotationException: No identifier specified for entity: cn.itcast.domain.Counter

    因为我的hibernate映射表没有主键所以报这个错. 解决方案是: 1.创建一个主键 2.hibernate处理无主键的表的映射问题,其实很简单,就是把一条记录看成一个主键,即组合主键<com ...

  9. PHP学习笔记02——简易计算器

    <!DOCTYPE html> <html> <head> <title>PHP简易计算器</title> </head> &l ...

  10. 代码记录:使用Aforge.net让视频图像反转180度

    private void CameraConn() { videoSource = new VideoCaptureDevice(videoDevices[tscbxCameras.SelectedI ...