云计算下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. 自定义基于 VLC 的视频播放器

    前言(蛋疼的背景故事) 前段时间,接了一个小项目,有个需求是要在系统待机一段时间以后,循环播放 MV(类似于 Windows 系统的屏幕保护). 听到这个需求,我首先想到的是 MediaPlayer ...

  2. Python-Jenkins API使用 —— 在后端代码中操控Jenkins

    最近在工作中需要用到在后台代码中触发Jenkins任务的构建,于是想到Jenkins是否有一些已经封装好的API类库提供,用于处理跟Jenkins相关的操作.下面就简单介绍下我的发现. Linux C ...

  3. 博客使用BOS上传图片

    1.博客平台的选定 从大学开始做个人主页算起,最开始是使用html,CSSS写简单的页面,后面大学毕业之后接触到了WordPress,就开始用WordPress搭建网站.现在还维护着一个农村网站.ht ...

  4. java常用的设计模式

    设计模式:一个程序员对设计模式的理解:"不懂"为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的"复杂"恰恰就是设计模式的精髓所 ...

  5. es6小白学习笔记(一)

    1.let和const命令 1.es6新增了let和const命令,与var用法类似,但它声明的变量只在let所在的代码块内有效(块级作用域,es5只有全局和函数作用域) { let a = 1; v ...

  6. ionic第二坑——ionic 上拉菜单(ActionSheet)安卓样式坑

    闲话不说,先上图: 这是IOS上的显示效果,代码如下: HTML部分: <body ng-app="starter" ng-controller="actionsh ...

  7. MySQL: Fabric 搭建 HA

    搭建好Fabric之后,就可以在它的基础上创建HA Group. Shard Group.HA+Shard Group等.这里来说明一下如何快速的搭建HA环境. Fabric 192.168.2.23 ...

  8. java中判断字符串是否为只包含数字

    1.用Java自带的函数 public static boolean isNumeric(String str){ for(int i=str.length();--i>=0;){ if (!C ...

  9. .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序

    在之前的博文中我们在 Ubuntu 上成功编译出了 dnx ,并且用它成功运行了 ASP.NET 5 示例程序.在这篇博文中我们将 Ubuntu 换成 CentOS. 目前 dnx 的编译需要用到 m ...

  10. [PHP源码阅读]array_pop和array_shift函数

    上篇文章介绍了PHP添加元素到数组的函数,那么当然有从数组中删除元素.array_pop和array_shift只从数组的头或尾删除一个元素.经过阅读源码,发现这两个函数的实现都是调用了同一个函数-- ...