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

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

1.运行环境的感知能力

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

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

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

2.分布式计算

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

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

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

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

4.数据存储方式

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

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

Cloud_panel的更多相关文章

随机推荐

  1. linux软件的安装,更新与卸载

    Linux常见的安装为tar,zip,gz,rpm,deb,bin等.我们可以简单的分为三类. 第一:打包或压缩文件tar,zip,gz等,一般解压后即可,或者解压后运行sh文件: 第二:对应的有管理 ...

  2. cocos2dx Android 环境搭建 以及 ndk调试

    最近在学习cocos2dx,真的很强大,使我们更专注于游戏趣味,免去了繁琐的底层框架代码. cocos2dx的最强大之处当然在于跨平台.跨平台首选当然是Android,好记性不如烂笔头,记下本文分享给 ...

  3. sql server 2008r2 清除数据库日志

    USE [master] GO ALTER DATABASE data SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE data  SET REC ...

  4. PHP学习笔记03——函数

    <!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. ...

  5. mac下编译optool方法

    参考地址:http://www.mopsled.com/2016/build-optool-osx/ 1.git clone https://github.com/alexzielenski/opto ...

  6. Android高手进阶教程(五)之----Android 中LayoutInflater的使用!

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://weizhulin.blog.51cto.com/1556324/311450 大 ...

  7. is_file和file_exists效率比较

    目前在弄文件缓存的时候用到了判定文件存在与否,is_file()还是file_exists()呢?is_file和file_exists两者效率比较起来,谁的运行速度更快呢?还是做个测试吧: 1 2 ...

  8. vim的保存误认为utf8问题

     用vim改脚本改到一处写到'太原':w一下,再打开,,结果给乱码了...我默认sql是用cp936的,,,想到到和记录本的联通问题一样....   可能会问我为什么不用utf8,,,,因为ms200 ...

  9. js 只能输入数字和小数点

    <html><head><meta http-equiv="content-Type" content="text/html;charset ...

  10. ylb:创建数据库、表,对表的增查改删语句

    ylbtech-SQL Server:SQL Server-创建数据库.表,对表的增查改删语句 SQL Server 创建数据库.表,对表的增查改删语句. 1,ylb:创建数据库.表,对表的增查改删语 ...