云计算下PAAS的解析一

      PaaS是Platform-as-a-Service的缩写,意思是平台即服务。 把服务器平台作为一种服务提供的商业模式。通过网络进行程序提供的服务称之为SaaS(Software as a Service),而云计算时代相应的服务器平台或者开发环境作为服务进行提供就成为了PaaS(Platform as a Service)。所谓PaaS实际上是指将软件研发的平台(计世资讯定义为业务基础平台)作为一种服务,以SaaS的模式提交给用户。因此,PaaS也是SaaS模式的一种应用。但是,PaaS的出现可以加快SaaS的发展,尤其是加快SaaS应用的开发速度。

     IaaS(Infrastructure as a Service),即基础设施即服务。

与分布式系统的关系?

Paas架构模型



核心实现-配置管理优先

核心实现-服务发现和注册

核心实现-资源分配和调度

核心实现-向外的和向内的弹性

核心实现-缓存本地化与分布式化的折中

核心实现-流式日志

核心实现-编译时依赖和运行时依赖

核心实现-多租户资源隔离

云的特点是资源池化,甚至为每个用户开辟他自己独有的应用资源空间,而与其他应用隔离起来。我们
称之为“多租户机制”,比如k8s的namespace就是实现了这种隔离机制.
如何实现哪?
1)对于Iaas,VM是资源隔离的非常好的手段,但是比较重。
2)LXC实现了OS级别的资源隔离,并演化成类似Docker这种隔离手段。但是依然是本地隔离手段。
3)需要结合1-2的本地级隔离手段,在Paas上层的资源分配机制上进行处理,资源分配时将各个资源
汇聚成一个隔离的组并挂接或者注册到一个App的“名下”,这些都需要配置和元数据管理的支持。
以后再分配资源时,其他App将不会获得当前App的资源,并且当前资源如果崩溃,也不会影响到
其他应用。
4)网络也可以进行隔离,比如Vxlan,或者划分专有网络:计算网络、存储网络、管理网络等等

核心实现-全链路跟踪和分析系统

核心实现-链路优化

将监控集群状态的心跳与集群命令下发合并,优化通信线路的负载。

核心实现-部署自动化-系统层面

核心实现-部署自动化-应用层面

1.部署时涉及编排的问题,也就是服务应该以何种状态部署哪一个容器或者节点上,以及与其他节点的关系
策略:相亲性和反相亲性。
2.部署时还涉及版本管理、配置管理、持续发布和持续集成的问题,用于更好的走完生产的最后一公里。
但是在开发应用期间是建议频繁地在测试环境部署验证的,可以尽快发现问题并演练部署策略和程序

核心实现-不可忽视的本地治理

1.整体由部分组成,部分的效能最大化就是整体效能的最大化的重要因素之一,整体效能还取决于各个组件的整合和协作方式的设计以及实现。首先实现本地合理的治理,是必须实现的事情。
2.RPC的效能、服务器线程以及IO的处理方式、埋点的透明化、本地监控、本地缓存、本地调用调度(节点管理器),本地升级策略等等都是要关注的点。
3.生命周期管理:节点管理器必须实现对服务实例的生命周期管理,并与集群管理器紧密结合,在节点服务失败或者崩溃时可以试图重新恢复和拉起服务进程或者通知上层集群管理器重新调度。

核心实现-监控闭环

移植遗留系

1.以上的内容,说明了Paas的三个核心内容:开发设施自动化、运维自动化和运行时环境自动化。
2.但是这样的情况直接导致了遗留系统迁移的困难,因为老时代的系统往往很“重”,一开始就被锁定在厚重的铠甲中,另外一个更加让人为难的就是释放铠甲必须修改应用代码,这就涉及业务、功能重构! 这也是很多企业实施Paas很艰难的原因!
3.具体的一些情况:
A:系统服务之间使用独立密码库授权通信,难以使得自动化手段开通策略,实现自动扩容和伸缩。
B:老应用代码依赖于应用服务器的Api,比如很老的系统使用EJB架构。使得适应新的Paas变得非常困难!
C:上Paas的动因也在于老系统面临的环境从内部走向外部了,但是之前架构师设计系统时是按由里往外的思路进行的,比如重点放在交易模块上(因为此时线下活动占主流),因为业务的发展,对系统的要求越来越高,要适应互联网环境的要求,比如互联网上查询的量要远远大于交易的量,正好和原来的思路相反,是从外向里的,这造成应用架构的极大不同,那么就要求调整到分而治之的架构,那么必然要求要进行调整和重构。
D:….......
那么就没有很好的办法尽量减少这些麻烦吗?因为麻烦意味着风险和成本

移植遗留系统-解决思路

1.总的方向就是向自动化、自省化、弹性化等努力。
2.我们可以通过回答以下的问题来决定如何调整您的系统:
A:本地应用不要依赖于本地的存储来持久化数据(可以临时性的,但是给系统带来风险),日志变成流汇聚到分布式日志系统中,如果非要使用存储,请使用类似HDFS来保存,您的系统是否依赖于本地存储哪?
B:如果应用上传文件,那么这些文件应该如何存储?请参考问题一。
C:集群中多实例的配置文件是否完全与底层OS解耦,配置文件是否不依赖于主机名和Ip?(可以采用环境变量来解决)
D:应用是否存在需要很长时间处理的任务类型?(尽量异步化的方式解决)
E:集群中实例是否采用了独立安全授权的方式组建?(需要拆除)
F:集群中是否使用了硬件负载均衡设备?(需要撤除)
G:需要把服务无状态化,您的App到底有多少部分需要依赖状态?
H:您如果拆分业务系统,是按业务视角还是用户视角?(建议采用业务视角,因为热点根本无法预测)
I:业务拆分的原则是:识别基础核心业务能力、业务核心能力、上层业务能力等

应用架构:CQRS

微服务是什么?

在分布式、云等基础设施支持下,从SOA演变而来的、具备明确的事务上下边界的、松散耦合的、
可以并行开发、简单开发、简单或自动运维的、相互协作形成有机整体并为外部应用提供自省治理的
、不间断的、高性能的服务系统。

前面提到互联网的分而治之的策略,大规模的分布式服务化系统在稳健的服务治理、弹性拓展、容灾
以及开发周期能力支持下变得可管理、开跟踪、高性能、高生命力。服务化的基础是基础设施的稳定力!
只要有一个坚如磐石的基础设施,服务化就是非常可行的决策!

套娃-软件架构之殇

1.在介绍核心实现的部分中,提到配置必须先行的道理,就是要保证内环境和外环境的一致性。
2.Docker虽然可以保证内部小环境的一致性,诸如CoreOS之类可以保证OS级别的版本一致性,但是Paas
由于是分布式系统,它的各个组成组件也需要一致性保证,否则很难保证服务质量和延续性。
可以采用冗余服务+滚动式升级的办法解决这个难题。

不要把焦点仅仅放在Docker上!

最近一年来,看到Docker几乎弥漫在各种系统中了,但是Docker解决了App内部环境一致性、解决了传统Paas弹性拓展和容灾时效的问题\基准镜像分发等等,但是从架构上看过去,
它本身并不能解决App生产的其他大部分问题,所以当您仅仅关注Docker的话,那就失去了Paas的能力,K8s、Swarm、Mesos等解决了一部分自动化问题,但是还不完整,只是算是Mini Paas。

微服务化与Docker的关系

微服务是活在Tomcat或者Docker里面并没有本质区别,之所以业界喜欢采用Docker作为微服务的设计期和运行时基础,是因为它有着诸多好的有点,比如环境一致性可以简化配置管理、简化Paas
生命周期管理的难度等等,但是本质来讲,微服务和Docker并无强关系,只是Docker的诸多方便之处,更加适合而已,所以采用Docker的系统未必是微服务,微服务构建的系统也未必是Docker构成。

Paas的未来

经济的发展、业务的发展所导致工作量的增加将促进PaaS得到采用。
• IaaS提供商将往堆栈的上层移动,涵盖PaaS IT,大量的中间件被云化。
• 公共PaaS将赢得中小企业市场,因为它提供了开箱即用的基础设施。
• 公共服务将把大企业市场让给私有PaaS。
• 开源PaaS平台将蓬勃发展,形成助推的作用。
• 开源PaaS平台将通过流行的Linux发行版来提供,进一步简化Paas的管理复杂度。
• 专有的PaaS将开始如同开源产品,也体现出业界标准化的意愿。
• PaaS兼容性?更像是PaaS冲突性,由于各个厂家为了在竞争中取胜,也会更多的在自己的特殊性上下功夫,造成标准的不统一的局面,但是在市场的驱动力下,标准迟早会统一起来。
• Paas变成一种生产互联网产品的工厂,逐渐成为标配,并融合在日常的基础设施中。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

希望对您软件项目开发,运维管理,系统架构与研发管理体系, 信息安全等有帮助。 其它您可能感兴趣的文章:
云计算参考架构几例
微服务与Docker介绍
互联网直播平台架构案例一
高可用架构案例一
某互联网公司广告平台技术架构
某大型电商云平台实践
云计算参考架构几例
移动应用App测试与质量管理一
全面的软件测试
著名ERP厂商的SSO单点登录解决方案介绍一
软件项目风险管理介绍
企业项目化管理介绍
智能企业与信息化之一
由企业家基本素质想到的
敏捷软件质量保证的方法与实践
构建高效的研发与自动化运维
IT运维监控解决方案介绍
IT持续集成之质量管理
人才公司环境与企业文化
企业绩效管理系统之平衡记分卡
企业文化、团队文化与知识共享
高效能的团队建设
餐饮连锁公司IT信息化解决方案一

如有想了解更多软件研发 , 系统 IT集成 , 企业信息化,项目管理,企业管理 等资讯,请关注我的微信订阅号:

 

作者:Petter Liu
出处:http://www.cnblogs.com/wintersun/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
该文章也同时发布在我的独立博客中-Petter Liu Blog

云计算下PAAS的解析一的更多相关文章

  1. windows下用QTwebkit解析html

    环境 windows7 + VS2010 + QT5.2_opengl 配置开发环境 1.安装VS2010 2.安装QT 5.2 QT网站:http://qt-project.org/download ...

  2. sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO

    sqlalchemy mark-deleted 和 python 多继承下的方法解析顺序 MRO 今天在弄一个 sqlalchemy 的数据库基类的时候,遇到了跟多继承相关的一个小问题,因此顺便看了一 ...

  3. /proc/sys/ 下内核参数解析

    http://blog.itpub.net/15480802/viewspace-753819/ http://blog.itpub.net/15480802/viewspace-753757/ ht ...

  4. 戏说云计算之PaaS,IaaS,SaaS【转载】

    最近我们聊到“CRM系统PAAS化”,有些可能就不了解,到底什么是PAAS.云计算还有IaaS,SaaS概念,这三者之间有什么区别?今天智云通CRM系统小编用通俗易懂的例子跟大家分享Paas,IaaS ...

  5. 云计算之 PaaS详解

    PaaS是Platform-as-a-Service的缩写,意思是平台即服务. Paas - 概述 计算机技术 PaaS(Platform-as-a-Service:平台即服务) 全称:(Platfo ...

  6. Xamarin.Android下获取与解析JSON

    一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选择添加引用,引用System.Json.dll 二.同步请求 既然是跨平台,我们自然不能按照java下的 ...

  7. linux 下 systemd-udevd 服务解析

    最近在看linux下重定向的时候看到 的这个系统的服务,所以记下来备忘. 描述:systemd-udevd是监听内核发出的设备事件,并根据udev规则处理每个事件. 选项: --daemon 脱离控制 ...

  8. Android 下用 Pull 解析和生成 XML

    Java 中是可以用 SAX 和 DOM 解析 XML  的,虽然在 Android 下也可以用这2中方式,但是还是推荐用 Pull.Pull 使用简单,效率相对高,Android 下是集成了 Pul ...

  9. SSD磁盘,CPU居高不下,高并发的情况下,是不是mysql解析器耗费的cpu资源高?

    你看看我做的实验,这个user表是300多W纪录,普通磁盘下,消耗时间最多的是Copy to tmp table 0.81秒,当然在ssd下,这个可以减少很多很多的,第二高就是sending data ...

随机推荐

  1. 微信企业号 获取AccessToken

    目录 1. AccessToken介绍 2. 示例代码 1. AccessToken介绍 1.1 什么是AccessToken AccessToken即访问凭证,业务服务器每次主动调用企业号接口时需要 ...

  2. 学习ASP.NET Core, 怎能不了解请求处理管道[3]: 自定义一个服务器感受一下管道是如何监听、接收和响应请求的

    我们在<服务器在管道中的"龙头"地位>中对ASP.NET Core默认提供的具有跨平台能力的KestrelServer进行了介绍,为了让读者朋友们对管道中的服务器具有更 ...

  3. 一篇文章看懂TPCx-BB(大数据基准测试工具)源码

    TPCx-BB是大数据基准测试工具,它通过模拟零售商的30个应用场景,执行30个查询来衡量基于Hadoop的大数据系统的包括硬件和软件的性能.其中一些场景还用到了机器学习算法(聚类.线性回归等).为了 ...

  4. 引人瞩目的 CSS 变量(CSS Variable)

    这是一个令人激动的革新. CSS 变量,顾名思义,也就是由网页的作者或用户定义的实体,用来指定文档中的特定变量. 更准确的说法,应该称之为 CSS 自定义属性 ,不过下文为了好理解都称之为 CSS 变 ...

  5. Mysql存储引擎及选择方法

    0x00 Mysql数据库常用存储引擎 Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等. MyISAM存储引擎 My ...

  6. Effective前端2:优化html标签

    div { float: left; } .keyboard > div + div { margin-left: 8px; } --> div{display:table-cell;ve ...

  7. bzoj3208--记忆化搜索

    题目大意: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目.    我们可以把风景区看作一个n*n的地图,每个点有它的初始高度,滑雪只能从高处往低处滑[严格大于] ...

  8. 满堂红CIO邓劲翔:房屋中介突围

    人脸识别.客户关系管理进度监控.业务流程实时监控.网站访问人数及流量实时监控等实际企业应用场景淋漓尽致.羽羽如生的以大屏幕上图表形式展现在人们面前,如果你不去继续询问,你不会知道这是一家才刚刚在房地产 ...

  9. App 审核由于 IPv6 网络问题被拒

    昨天 提交App Store 的时候被拒了 We discovered one or more bugs in your app when reviewed on iPhone running iOS ...

  10. 《Note --- Unreal --- MemPro (CONTINUE... ...)》

    Mem pro 是一个主要集成内存泄露检测的工具,其具有自身的源码和GUI,在GUI中利用"Launch" button进行加载自己待检测的application,目前支持的平台为 ...