云计算与云存储,具体是什么关系?

现在的IT业界对于云集计算的钟爱超过了以往的任何时候,云计算产业被认为是继大型计算机、个人计算机、互联网之后的 第四次IT产业革命,IT行业进入云时代,对IT界的大小企业来说云计算就是一次炼狱。其实在某种的意义上云计算并不是一项全新的技术,是在信息化积累到一定的程度需要对于IT资源进行有效整合的客观需求催生的,因此在云计算整个的发展过程我们会看到过去很多看见过的技术跟应用模式。

云计算与云存储,具体是什么关系?云计算与云存储,具体是什么关系?

云计算的概念现在已经很明晰,云计算之所以能够在*近几年快速兴起,是因为用户渴望能够充分利用IT资源来给业务提供即时按需的高效服务。云计算具体指的是:狭义云计算指IT基础设施的交付和使用模式,指通过网络以按需、易扩展的方式获得所需资源;广义云计算指服务的交付和使用模式,指通过网络以按需、易扩展的方式获得所需服务。这种服务可以是IT和软件、互联网相关,也可是其他服务。

这是云计算的一个核心的概念,其实简单的理解就是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。提供资源的网络被称为“云”。这种“云”服务,我们可以随时的享用,只是这种服务有偿的。

说了这么多的云计算究竟什么是云存储?究竟目前云存储发展到什么程度了?云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念,是指通过集群应用、网格技术或分布式文件系统等功能,将网络中大量各种不同类型的存储设备通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统。当云计算系统运算和处理的核心是大量数据的存储和管理时,云计算系统中就需要配置大量的存储设备,那么云计算系统就转变成为一个云存储系统,所以云存储是一个以数据存储和管理为核心的云计算系统。

就如同云状的广域网和互联网一样,云存储对使用者来讲,不是指某一个具体的设备,而是指一个由许许多多个存储设备和服务器所构成的集合体。使用者使用云存储,并不是使用某一个存储设备,而是使用整个云存储系统带来的一种数据访问服务。所以严格来讲,云存储不是存储,而是一种服务。

从两者的关系来看,云存储和云计算之间的关系还是很好理解的,云存储和云计算相比较,可以认为是云存储配置了大容量存储空间的一个云计算系统。

未来云计算的应用会更加细致的深入到我们日常的生活中去,未来基于云计算的云存储会更加的深入到目前的移动互联行业,而我们现在的智能有手机在未来将有一个具有大容量云端存储,正如前面所说的,云存储不是实物,是服务,未来市场潜力巨大。

传统运维和云运维区别比较不同观点想法

有人说在云计算工程领域,*难的部分是运维,因为管100台、1万台或是100万台机器,是完全不同的概念,你想机器少可以人管,机器多了还能靠人么,当然不能了。再则,运维系统不属于功能性的东西,常常因为用户看不见而被严重的低估。在8月份的“云计算运维的那些坑儿”那期在线培训中,VisualOps CTO王旭也谈过云计算运维的相关问题。但这里说的机房运维只是云计算运维的一个部分,事实上,随着云平台被越来越多的企业被认可和使用,越来越多的用户开始在云平台上部署自己的应用,如何在云平台上进行自动化运维也就被越来越多的企业所关注的难题。

云计算时代的运维和传统的运维到底有哪些不同?亚马逊AWS中国云解决方案架构师王毅表示传统层面的运维人员,接触的都是硬件,如服务器、设备和风火水电,但是在云时代,运维人员已经无法见到物理的任何设备。所以从这个角度看来,云计算时代的运维的手段和运维的目的都和传统的运维都是不一样的,因为运维人员不需要维护物理硬件的稳定和可靠性。

当然,上帝在开了一扇门的同时想必也是会合上一扇窗户。既然运维人员不再需要被束缚于物理硬件的稳定和可靠性,那新的问题就来了。云计算时代,也给用户带来了新的挑战。

在亚马逊AWS中国云解决方案架构师王毅看来,云计算带来的不同于传统运维的应用层面的三个挑战:

应用如何在云平台上实现应用的快速部署,快速更新,实时监控。云计算时代要求运维人员能够自动化地部署应用程序和所有支持的软件和软件包,然后通过生命周期阶段操作维护和管理应用程序,如自动扩展事件和进行软件更新等一系列的操作。如何快速创建和复制资源模板。有序地对资源模版进行资源配置和更新;如何在云端更加轻松的部署、配置和管理应用。如何利用工具轻松地在云中快速部署和管理应用程序,同时可以自动处理容量预配置、负载均衡、Auto Scaling和应用程序状况监控,这是对运维人员的新要求。面对这些挑战和变化,大部分运维人员开始了转型之路以应对时代的变化。谈到运维人员转型的建议,王毅认为传统的运维更多的是与物理设备打交道,很少接触操作系统甚至是应用程序的层面。所以他建议运维人员在云平台阶段应该更多介入软件部分,而且需要有代码基础。因为在云时代,infrastructure as code,所有对物理设备的操作都变成了代码。

有人说在云计算工程领域,*难的部分是运维,因为管100台、1万台或是100万台机器,是完全不同的概念,你想机器少可以人管,机器多了还能靠人么,当然不能了。再则,运维系统不属于功能性的东西,常常因为用户看不见而被严重的低估。在8月份的“云计算运维的那些坑儿”那期在线培训中,VisualOps CTO王旭也谈过云计算运维的相关问题。但这里说的机房运维只是云计算运维的一个部分,事实上,随着云平台被越来越多的企业被认可和使用,越来越多的用户开始在云平台上部署自己的应用,如何在云平台上进行自动化运维也就被越来越多的企业所关注的难题。

云计算时代的运维和传统的运维到底有哪些不同?亚马逊AWS中国云解决方案架构师王毅表示传统层面的运维人员,接触的都是硬件,如服务器、设备和风火水电,但是在云时代,运维人员已经无法见到物理的任何设备。所以从这个角度看来,云计算时代的运维的手段和运维的目的都和传统的运维都是不一样的,因为运维人员不需要维护物理硬件的稳定和可靠性。

当然,上帝在开了一扇门的同时想必也是会合上一扇窗户。既然运维人员不再需要被束缚于物理硬件的稳定和可靠性,那新的问题就来了。云计算时代,也给用户带来了新的挑战。

在亚马逊AWS中国云解决方案架构师王毅看来,云计算带来的不同于传统运维的应用层面的三个挑战:应用 如何在云平台上实现应用的快速部署,快速更新,实时监控。云计算时代要求运维人员能够自动化地部署应用程序和所有支持的软件和软件包,然后通过生命周期阶段操作维护和管理应用程序,如自动扩展事件和进行软件更新等一系列的操作。如何快速创建和复制资源模板。有序地对资源模版进行资源配置和更新;如何在云端更加轻松的部署、配置和管理应用。如何利用工具轻松地在云中快速部署和管理应用程序,同时可以自动处理容量预配置、负载均衡、Auto Scaling和应用程序状况监控,这是对运维人员的新要求。面对这些挑战和变化,大部分运维人员开始了转型之路以应对时代的变化。谈到运维人员转型的建议,王毅认为传统的运维更多的是与物理设备打交道,很少接触操作系统甚至是应用程序的层面。所以他建议运维人员在云平台阶段应该更多介入软件部分,而且需要有代码基础。因为在云时代,infrastructure as code,所有对物理设备的操作都变成了代码。

正如Joyent(公共云平台)的系统工程主管Ben Rockwood*近解释的那样:“客户可以随意启动应用程序,而我们可能视之为滥用。”曾有一回,由于客户帐户出现了貌似违规的活动,Joyent正打算关闭一个客户应用程序,但该客户的开发人员在*后一刻介入了。‘这些开发人员告诉我们,他们的内部IT人员很差劲,于是他们用私人信用卡启动了一个大项目。’”

由于众多用户竭力要求更快速、更频繁地部署,而且需要配置数量更多的资源,云计算为开发人员提供了一种诱人的机会,可以避开公司的IT运维部门。正如GigaOm网站的Barb Darrow引用Gartner的*近报告:“IT人员过去手握数据王国的钥匙,也就是说控制着哪些应用程序和数据在哪里运行,在哪些设备上运行。现在这一切都发生了变化――变化很大,这归因于IT消费化和这种计算能力的出现:即内部开发人员可以在亚马逊网络服务平台上启用计算能力,用小额现金支付,不需要经过IT部门的批准。”

云计算给IT运维带来新机会

由于全球经济形势依然不明朗,IT开支同样变得更加保守。云计算带来了潜在的竞争优势。云计算为各种各样的IT部门带来了机会,可以降低与内部部署型IT基础设施(软硬件)有关的风险。云提供商提供的解决方案通常提供按需计算资源、系统自动化部署及扩展,以及按使用量付费的定价模式。充分利用公共云计算提供商的共享式计算资源(软硬件),让许多公司得以节省IT基础设施成本。

Gartner副总裁兼研究员David Cearley说:“云计算是过去这两年席卷市场的一大技术潮流。它为一种新的IT方法创造了条件,这种新方法让个人和公司都可以选择如何获得或交付IT服务,不大着重传统软硬件许可证模式的限制。云计算对IT的方方面面以及用户访问应用程序、信息和业务服务的方式带来了相当大的潜在影响。”

而在传统环境下,IT运维部门重视稳定性和可靠性,保持数据中心现状,云计算则给IT运维小组指明了一个全新的方向。

为云时代重塑IT运维

IT运维团队需要转变,成为更具创新性的IT团队。出于如上所述的竞争原因和技术原因,通过IT部门分配各项资源再也行不通了。现在,业务部门需要开始对IT资产掌握更大的控制权。正如Susan Cramm指出:“关键在于实现转变,从IT服务交付给业务部门的模式,变成IT服务通过业务部门来交付的模式。”

云端需要IT运维

虽然对开发人员来说云计算潜力巨大,但这种影响具有的广度和深度并不确定,还需要IT运维团队来考察。配置和交付IT服务的速度将是云计算下一个时代的关键;服务的配置和交付一定要迅速,同时又不能扩大整个IT部门的规模。

这就意味着IT运维团队需要大变样,重新定义对云的做法,因为这将影响到有关人员、流程和工具。James Urquhart解释:“就在不久前,IT部门还在遵循以服务器为中心的运维模式;而云计算是一种以应用程序为中心的运维模式。”

IT运维OUT了,现在流行云运维

眼下IT运维领导需要改变做法。这意味着“少花钱多办事”,减少财务投入和组织变化,并作为一家小规模、迭代、灵活的组织来运行。云运维以应用程序为中心,这种特性将运维重心由基础设施转向应用程序。enStratus产品战略副总裁兼GigaOm云计算栏目的特约撰稿人James Urquhart解释:“如果你专注于在是否由你控制是未知数的环境下运行应用程序,就会专注于如何确保代码顺利运行,确保数据可用,确保配置切实可行,确保策略得到执行。还有,由于你唯一能控制的就是代码、数据、配置和策略,就得开始着眼于如何将性能和存活能力做入到应用程序本身当中。”

结合开发和运维的开发运维(DevOps)理念在云端会被放大,为开发和运维的工作方式提供一种更丰富的方法。云还重新组织了软件团队的传统结构,因而促进了这种关系。

部署向来是IT运维团队的一项任务;对许多企业组织来说,只有IT部门才可以在生产环境实施变化。而现在由于云计算的自我配置功能,部署任务可能交给使用基础设施即服务(IaaS)的开发团队。不过,IaaS也要求IT运维团队开发新的工具,实现部署自动化,这在功能复杂性和广度方面提高了标准。成功部署到云端需要开发和运维两边都要有相应的技能和知识。

云运维应对云计算今天面临的挑战

由于*近媒体大肆报道微软Azure和亚马逊网络服务故障,有人对公共云提出了担心,因而不敢依赖公共云。不过如果选择多家提供商,那样只会增添复杂性,而且难以跟踪了解多个云平台上的配置。Switch公司的数据中心技术执行副总裁Mark Thiele指出:“把所有鸡蛋都放在一只篮子里存在固有的风险,不管那只篮子做工有多精致或营销有多到位。任何单一技术平台都有这种风险,即某一个平台特有的问题可能会给整体带来不利影响。”

在云计算时代,IT环境变得越来越复杂,仅仅想在某一个时候了解IT环境里面发生了什么情况就是一大难题。Mike Vizard在ITBusinessEdge写博文道:“IT基础设施很快就会跨越公共云和私有云这两种计算环境。在另一个*端,敏捷开发的兴起意味着,一批新的应用程序及相关升级会变得具有持续性。当然,问题在于,不仅每次更新改变了应用程序的参数,应用程序的工作负载还会日益从一个虚拟机转移到另一个虚拟机。”

管理多个云

IT运维团队需要运用新的管理和监控技术来提供实时洞察力,深入了解部署到多个云平台上和内部部署型基础设施上的应用程序和服务的配置情况。这可以更严格地控制公共云平台(实际上就是外部IT基础设施)。“这类技术可以借助单一的统一视图,深入了解企业内外的IT基础设施,从而简化整体IT监控任务。智能化分析多个云平台上的变化,应该是这类监控技术的一个关键属性,以便高效地支持云的动态性。”

云运维将确保稳定性和性能

基于云的基础设施即IaaS取代不了IT运维。我们仍需要部署、监控、故障恢复、性能管理、操作系统维护、系统配置及更多操作,这些是IT运维团队从事的关键任务。开发团队简单地“换成”IaaS方法后,甭指望这些任务由云提供商来处理。敏捷开发面临的可扩展性和更大规模由开发运维和云(即云运维)来处理比较好。云运维让你可以提高服务器与管理员之比。这意味着,配置服务器不再是一个复杂而耗时的过程,而是可以像实际软件那样来配置。如果你的整个基础设施是虚拟化设施,由代码来控制,那么代码就可以知道其领域内出现的任何问题。

顺利采用新技术和新平台的能力至关重要,而彻底改造后的IT运维起到了关键作用。务必要考虑在没有落实治理和监管等机制的云环境下怎么会出岔子,以便帮助将应用程序从测试环境迁移到生产环境。所有云都需要一套强大的管理工具、更新颖的敏捷流程,以及准备好应对挑战以帮助实现部署自动化和管理部署的人员。

免责声明

本文内容来云头条,由捷云信通整理发布,主要目的在于分享信息,版权归原作者所有,内容仅供参考,如有侵犯您的权益或版权请及时告知,我们将在24小时内进行删除。

关于捷云
捷云信通依托阿里云以及自身私有云技术研发和在医疗行业宝贵经验积累,专注互联网云计算的技术创新,打造未来云计算全行业的新体验,努力成为中国一流的云计算(公有云,私有云,混合云)服务商。

1、对于传统企业内网运维和互联网运维,哪些技术和素质是两个运维团队都所必须具有的?
结实的技术基础,良好的日志检查、信息检控、巡检习惯,超强的责任心和处理问题的能力,跟得上行业技术更新、发展这对每个团队都是一样的。

2、企业内网运维和互联网运维人员,在面对新技术(硬件设备和软件技术)方面,有何区别,为什么?
面对新技术的学习我认为都是一样的,但是企业内的运维更看重成熟的、稳定性强、商业化程度高的技术,一般不会成为吃螃蟹的人,安全稳定是*位的;而互联网运维正相反,要时刻紧跟新技术,应用新技术,绿色、节能、高效、可用率*大化是优先的。

3、如何看待企业内网运维和互联网运维的区别,在云计算大潮下,他们真的会走到一起么?
会走到一起的.

自动化运维到来,运维工程师将何去何从?

互联网的应用,*大地方便了我们的生活,通过PC端,手机端等进行购物、订餐等早已不是什么稀奇事,然而在我们享受着这一便利的同时有没有想过是什么换来了我们如此的便利?在这背后是一家又一家的互联网公司提供的各种服务,我们在使用每个服务的时候都会去访问互联网公司的服务器,而为了正常访问,运维工程师需要很多人工操作,但面对海量爆发的访问,利用传统的运维技术应对也已经略显吃力。当然除了这些传统的运维技术,我们也并不是没有其他的应对方式。

我们可以用open_stack来完成虚拟化,用nagios,cacti,Ganglia等来进行监控,用puppet来进行批量操作,但当运用了这么多的软件,作为一个运维你能管理多少服务器?你招来的运维需要多长的时间来适应你各种软件?这都是互联网公司要进行考虑的问题。现在又出现一个*火的自动化运维语言的Python,那么究竟自动化运维和自动化运维语言Python给我们带来了什么呢?

既然说到Python,首先我们要对它有一定的了解,那么问题来了:

我们运用 Python 到底要完成什么工作呢?

针对我们的问题众网友、各路大神对此也给出了很好的解释。网友hx30067988说:“我们运用Python*终的目的是要实现自动化,Python是实现自动化的工具,我们通过Python将固定套路的工作流程通过Python编程进行封装,在通过Python组织和调用,实现机器的智能管理。简而言之就是把你工作的流程动作抽象成代码,让机器替你完成要做的工作,仅此而已。当然用python能完成的工作很多,比如自动化的工具,比如统计分析等等,python的魅力不单单在于他能很好的快速的开发工具,还在于他在数学建模中的优越性,毕竟python是数学建模工具之一,能简单通过数学建模实现高精度的数学统计分析。统计分析生成报告也是运维的工作之一。”

网友xkf01也表示:“python是一门黑客和geek很偏好的语言,只要你想基本上能做出任何应用软件。Google的好多应用都是基于python的,国内的豆瓣网好像就是纯pytyon开发的 。当然,感觉更偏向于写一些辅助工作和生活的小工具,要写很多方面集成的大产品,估计需要掌握的水平很高才行。”通过众网友的回答我想各位也对其有了一些初步的了解,看来诸位要想真正的熟练掌握还是要下一番功夫的。

那么在传统的运维技术已略显吃力的情况下,自动化运维是否能够取代现在的传统运维呢?

网友j_cle表示:“自动化运维是以后数据中心发展的大势,对于小的公司和团队效果不甚明显,但是对于规模庞大的公司来说如何有效的管理数千台上万台的服务器和网络设备,是一件很麻烦的事情,所以自动化运维在大的公司来讲,效果是非常显著的,但是前提是必须要做好自动化的部署工作。”

网友gary721400也表示:“ 这个问题,我认为要分两个方面来说:①对于大型企业,特别是互联网公司,这个是一定的,而且是一个必然的趋势。好像听说facebook的服务器,就几个人在维护,试想成千上万的服务器,如果单凭人为操作,非累到吐血不可;② 对于中小型企业,可能这个问题还不太明显;因为服务器可能就几台,人为或者自动的优势可能不太明显。”确实对此问题要视情况而定,各企业需根据企业规模的大小和自身的需求来判断是否需要自动化运维。

但是小编认为,就目前技术来讲,自动化运维想要完全取代传统运维时机并不成熟,网友lei8792yong说:“ 这里不能说*对取代传统运维,而是相辅相成的。只是大部分重复的工作,需要依靠自动化运维,少量而复杂的工作,还得靠传统运维。”

自动化运维和传统的运维相比,自动化运维的成本,分界岭又在哪里呢?

网友liuadam表示:“主要的分界岭在于:建立自动化运维管理平台。运维自动化管理建设的要先建立运维的自动化监控和管理平台。建立自动化运维管理平台就需要投入大量的人力资源成本,硬件设备成本。”

网友gary721400回应称:“这个和传统运维比较,还是有优势的;对公司来说,可能不需要专职的运维了,大大节省了人力成本;使用python语音来运维,能使用大量的第三方库文件,并且对C++等都有很好的连结性,对运维工程师来说,代码的量也不会太大,即使有人员替换,也能很好的衔接!”看来相对比来说成本方面自动化运维有利有弊,节省了人力的投入,但相对增加了技术资金的投入。

写在*后

很明显,自动化运维的出现会为运维工程师减轻相当一部分的负担。表面上看是有利于运维工程师的工作,但自动化运维的出现人力上的需求势必会大大减少,部分运维工程师可能会面临失业的危机,所以我想运维工程师的未来还是掌握在自己手中的,及时掌握*新技术,完善自己将会有更加广阔的空间,反之终将被运维行业淘汰,当然这只是本人的个人观点,到底自动化运维的发展究竟会怎样,让我们一起拭目以待吧!

————————————————

原文链接:https://blog.csdn.net/u010098331/article/details/52246255

什么是云计算?运维与云计算之间存在什么样的关系?

云计算商业模式就是要实现IT即服务,无论是对外还是在企业内部,IT自服务的需求越来越明显。另一方面,超大规模的数据中心急需一个有效的挂历方式来降低运营成本。

在云计算技术体系架构中,运维管理提供IaaS层、PaaS层、SaaS层资源的全生命周期的运维管理,实现物理资源、虚拟资源的统一管理,提供资源管理、统计、监控调度、服务掌控等端到端的综合管理能力。云运维管理与当前传统IT运维管理的不同表现为:集中化和资源池化。

云运维管理需要尽量实现自动化和流程化,避免在管理和运维中因为人工操作带来的不确定性问题。同时,云运维管理需要针对不同的用户提供个性化的试图,帮助管理和维护人员查看,定位和解决问题。

云运维管理和运维人员面向的是所有的云资源,要完成对不同资源的分配、调度和监控。同时,应能够向用户展示虚拟资源和物理资源的关系和拓扑结构。云运维管理的目标是适应上述的变化,改进运维的方式和流程来实现云资源的运行维护管理。

云计算运维管理应提供如下功能:

1自服务门户

自服务门户将支撑基础设施资源、平台资源和应用资源以服务的方式交互给用户使用,提供基础设施资源、平台资源和应用资源服务的检索、资源使用情况统计等自服务功能,需要根据不同的用户提供不同的展示功能,并有效隔离多用户的数据。

2身份与访问管理

身份与访问管理提供身份的访问管理,只有授权的用户才能访问相应的功能和数据,对资源服务提出使用申请。

3服务目录管理

建立基础设施资源、平台资源和应用资源的逻辑视图,形成云计算及服务目录,供服务消费者与管理者查询。服务目录应定义服务的类型、基本信息、能力数据、配额和权限,提供服务信息的注册、配置、发布、注销、变更、查询等管理功能。

4服务规则管理

服务规则管理定义了资源的调度、运行顺序逻辑。

5资源调度管理

资源调度管理通过查询服务目录,判断当前资源状态,并且执行自动的工作流来分配及部署资源,按照既定的适用规则,实现实时响应服务请求,根据用户需求实现资源的自动化生成、分配、回收和迁移,用以支持用户对资源的弹性需求。

6资源监控管理

资源监控管理实时监控、捕获资源的部署状态、使用和运行指标、各类告警信息。

7服务合规审计

服务合规审计对资源服务的合规性进行规范和控制,结合权限、配额对服务的资源使用情况进行运行审计。

8服务运营监控

服务运营监控将各类监控数据汇总至服务监控及运营引擎进行处理,通过在服务策略及工作请求间进行权衡进而生成变更请求,部分标准变更需求别转送到资源供应管理进行进一步的处理。

9服务计量管理

服务计量管理按照资源的实际使用情况进行服务质量审核,并规定服务计量信息,以便于在服务使用者和服务提供者之间进行核算。

第十,。

10服务质量管理

服务质量管理遵循SLA要求,按照资源的实际使用情况而进行服务质量审核与管理,如果服务质量没有达到预先约定的SLA要求,自动化地进行动态资源调配,或者给出资源调配建议由管理者进行资料的调派,以满足SLA的要求。

11服务交付管理

服务交付管理包括交付请求管理、服务模板管理、交付实施管理,实现服务交付请求的全流程管理,以及自动化实施的整体交付过程。

12报表管理

报表管理对于云计算运维管理的各类运行时和周期性统计报表提供支持。

13系统管理

系统管理云计算运维管理自身的各项管理,包括账号管理、参数管理、权限管理、策略管理等。

144A管理

4A管理由云计算运维管理自身的4A管理需求支持。

15管理集成

管理集成负责与IaaS层、PaaS层、SaaS层的接口实现,为服务的交付、监控提供支持。

16管理门户

管理门户面向管理维护人员,将服务、资源的各项管理功能构成一个统一的工作台,来实现管理维护人员的配置、监控、统计等功能需要。

云管理的*终目标是实现IT能力的服务化供应,并实现云计算的各种特性:资源共享、自动化、按使用付费、自服务、可扩展等。

怎么学习云计算?云计算运维和传统运维有何区别?

由于全球经济形势依然不明朗,IT开支同样变得更加保守。云计算带来了潜在的竞争优势。云计算为各种各样的IT部门带来了机会,可以降低与内部部署型IT基础设施(软硬件)有关的风险。学习云计算就业方向多,运维是其中比较重要地岗位之一。有人好奇云计算运维工程师和传统运维有什么区别?

 

%title插图%num

 

云计算带来的不同于传统运维的应用层面的挑战:

应用如何在云平台上实现应用的快速部署,快速更新,实时监控。云计算时代要求运维人员能够自动化地部署应用程序和所有支持的软件和软件包,然后通过生命周期阶段操作维护和管理应用程序,如自动扩展事件和进行软件更新等一系列的操作。

如何快速创建和复制资源模板,有序地对资源模版进行资源配置和更新;如何在云端更加轻松的部署、配置和管理应用。如何利用工具轻松地在云中快速部署和管理应用程序,同时可以自动处理容量预配置、负载均衡、Auto Scaling和应用程序状况监控,这是对运维人员的新要求。

面对这些挑战和变化,大部分运维人员开始了转型之路以应对时代的变化。谈到运维人员转型的建议,王毅认为传统的运维更多的是与物理设备打交道,很少接触操作系统甚至是应用程序的层面。所以他建议运维人员在云平台阶段应该更多介入软件部分,而且需要有代码基础。因为在云时代,infrastructure as code,所有对物理设备的操作都变成了代码。

 

%title插图%num

 

云计算运维工程师需要考虑两个问题:

1、应用如何在云平台上实现应用的快速部署,快速更新,实时监控。云计算时代要求运维人员能够自动化地部署应用程序和所有支持的软件和软件包,然后通过生命周期阶段操作维护和管理应用程序,如自动扩展事件和进行软件更新等一系列的操作。

2、如何在云端更加轻松的部署、配置和管理应用。如何利用工具轻松地在云中快速部署和管理应用程序,同时可以自动处理容量预配置、负载均衡、Auto Scaling和应用程序状况监控,这是对运维人员的新要求。

传统层面的运维人员,接触的都是硬件,如服务器、设备和风火水电,但是在云时代,运维人员已经无法见到物理的任何设备。

 

%title插图%num

 

云计算运维岗位涉及到云计算平台能否顺利、平稳地运行,因此运维工程师需要掌握的知识结构也相对比较丰富,既涉及到传统的网络运维知识,还涉及到虚拟化、管控、存储、安全等相关知识。另外,运维工程师还需要具备一定的程序设计能力,以便于完成大规模的自动化服务部署,这对于运维工程师也提出了较高的要求。

iOS开发之纯代码约束

我们在平时开发中, 大多数的控件都需要进行约束, 约束的方法比较多, 例如autolayout等. 今天我们就来谈谈如何进行纯代码约束.

首先我们来说*种情况, 假如我们有一个label叫namelabel, 现在我们需要让namelabel距离self.view的上边距100, 距离左边距20.那么我们用纯代码需要这样写.

// 左
NSLayoutConstraint * nameLabelLeading = [NSLayoutConstraint constraintWithItem:nameLabel attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeft multiplier:1.0 constant:20.f];
// 上
NSLayoutConstraint * nameLabelTop = [NSLayoutConstraint constraintWithItem:nameLabel attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:0.1f constant:100.f];
[self.view addConstraints:@[nameLabelLeading,nameLabelTop]];

这样就加上了namelabel的约束, 这三句代码就可以让namelabel距离左边距20 距离上边距100.

还有一种是需要给namelabel一个宽度和高度, 假如和self.view同高同宽.

// 宽
NSLayoutConstraint * nameLabelWidth = [NSLayoutConstraint constraintWithItem:nameLabel attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:self.view.bounds.size.width];
// 高
NSLayoutConstraint * nameLabelHeigth = [NSLayoutConstraint constraintWithItem:nameLabel attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0f constant:self.view.bounds.size.height];

[self.view addConstraints:@[nameLabelHeigth,nameLabelWidth]];

这三句代码就可以给namelabel一个宽度和高度, 分别是和self.view的宽度和高度相等.
这样就完成了基本的纯代码约束, 是不是很简单呢.

iOS-使用代码约束布局(Masonry)

一、引子

学完了可视化编程的Xib和Storyboard,LZ对它们的感受就是的就是UI控件创建直接拖拽,尺寸适配加约束,Storyboard的页面跳转逻辑清晰可见,比起代码布局节省了很多的工作量。但是LZ相信还是很多人喜欢用纯代码来编写一个程序的(LZ就是一个,用代码写出来东西的成就感很足!),所以今天在这里给喜爱纯代码编程的程序猿们介绍一下纯代码约束布局的工具——Masonry。

二、Masonry介绍

Masonry源码下载地址:https://github.com/SoleMY/Masonry

Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X。

Masonry支持的属性:

/// 左侧
@property (nonatomic, strong, readonly) MASConstraint *left;
/// 上侧
@property (nonatomic, strong, readonly) MASConstraint *top;
/// 右侧
@property (nonatomic, strong, readonly) MASConstraint *right;
/// 下侧
@property (nonatomic, strong, readonly) MASConstraint *bottom;
/// 首部
@property (nonatomic, strong, readonly) MASConstraint *leading;
/// 底部
@property (nonatomic, strong, readonly) MASConstraint *trailing;
/// 宽
@property (nonatomic, strong, readonly) MASConstraint *width;
/// 高
@property (nonatomic, strong, readonly) MASConstraint *height;
/// 横向中点
@property (nonatomic, strong, readonly) MASConstraint *centerX;
/// 纵向中点
@property (nonatomic, strong, readonly) MASConstraint *centerY;
/// 文本基线
@property (nonatomic, strong, readonly) MASConstraint *baseline;

// 在Masonry的源码中我们可以看到他们对应的NSLayoutAttribute的属性对应如下
- (MASConstraint *)left {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeft];
}

- (MASConstraint *)top {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTop];
}

- (MASConstraint *)right {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeRight];
}

- (MASConstraint *)bottom {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBottom];
}

- (MASConstraint *)leading {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeading];
}

- (MASConstraint *)trailing {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTrailing];
}

- (MASConstraint *)width {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeWidth];
}

- (MASConstraint *)height {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeHeight];
}

- (MASConstraint *)centerX {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterX];
}

- (MASConstraint *)centerY {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterY];
}

- (MASConstraint *)baseline {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBaseline];
}

iOS8之后Masonry新出了几个属性:

/// 距离边框的距离,等同于选中Storyboard的Constrain to margins后加约束
@property (nonatomic, strong, readonly) MASConstraint *leftMargin;
@property (nonatomic, strong, readonly) MASConstraint *rightMargin;
@property (nonatomic, strong, readonly) MASConstraint *topMargin;
@property (nonatomic, strong, readonly) MASConstraint *bottomMargin;
@property (nonatomic, strong, readonly) MASConstraint *leadingMargin;
@property (nonatomic, strong, readonly) MASConstraint *trailingMargin;
@property (nonatomic, strong, readonly) MASConstraint *centerXWithinMargins;
@property (nonatomic, strong, readonly) MASConstraint *centerYWithinMargins;

- (MASConstraint *)leftMargin {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeftMargin];
}

- (MASConstraint *)rightMargin {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeRightMargin];
}

- (MASConstraint *)topMargin {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTopMargin];
}

- (MASConstraint *)bottomMargin {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeBottomMargin];
}

- (MASConstraint *)leadingMargin {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeLeadingMargin];
}

- (MASConstraint *)trailingMargin {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeTrailingMargin];
}

- (MASConstraint *)centerXWithinMargins {
    return [self addConstraintWithLayoutAttribute:NSLayoutAttributeCenterXWithinMargins];
}

三、代码示例

#import "RootViewController.h"
// 引入头文件
#import "Masonry.h"
@interface RootViewController ()

@end

@implementation RootViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
#pragma mark label
    
    // 添加约束,不需要设置frame
    UILabel *label = [UILabel new];
    label.backgroundColor = [UIColor redColor];
    // 添加父视图,视图添加完成后才能进行布局
    [self.view addSubview:label];
    
    // 布局实现label方法
    [label mas_makeConstraints:^(MASConstraintMaker *make) {
        // 距离上边50
        // make:相当于你要布局的视图
        // equalTo(参照视图对象),如果参照视图是self.view,可以不设置参照视图的属性
        // offset(距离数值)
        make.top.equalTo(self.view).offset(50);
        
        // 距离左边100
        make.left.equalTo(self.view).offset(100);
        
        // 距离右边100
        make.right.equalTo(self.view).offset(-100);
        
        // 距离下边500
        make.bottom.equalTo(self.view).offset(-500);
        
    }];
#pragma mark label1
    UILabel *label1 = [UILabel new];
    label1.backgroundColor = [UIColor greenColor];
    [self.view addSubview:label1];
    
    // 布局实现label1方法
    // 先布局参照视图,否则约束容易丢失
    [label1 mas_makeConstraints:^(MASConstraintMaker *make) {
        // equalTo(自定义视图),需要设置视图的属性
        // 如果数值为0,可以不写offset()
        make.top.equalTo(label.mas_bottom).offset(50);
        make.leading.equalTo(label.mas_leading);
        make.trailing.equalTo(label.mas_trailing);
        // 高度60
        // mas_equalTo(数值)
        make.height.mas_equalTo(60);
        
    }];
    
#pragma mark label2
    UILabel *label2 = [UILabel new];
    label2.backgroundColor = [UIColor grayColor];
    [self.view addSubview:label2];
    
    // 设置距离参照视图的内边距 (上左下右)
    UIEdgeInsets padding = UIEdgeInsetsMake(400, 100, 100, 100);
    
    // 布局实现label2方法
    // 先布局参照视图,否则约束容易丢失
    [label2 mas_makeConstraints:^(MASConstraintMaker *make) {
        // 设置约束视图的边界距离self.view的边界值
        make.edges.equalTo(self.view).insets(padding);
        
//        make.top.equalTo(self.view).offset(400);
//        make.left.equalTo(self.view).offset(100);
//        make.right.equalTo(self.view).offset(-100);
//        
//        make.bottom.equalTo(self.view).offset(-100);
        
    }];
#pragma mark label3
    UILabel *label3 = [UILabel new];
    label3.backgroundColor = [UIColor orangeColor];
    [self.view addSubview:label3];
    
    [label3 mas_makeConstraints:^(MASConstraintMaker *make) {
        // 设置中心点一致
        make.center.equalTo(label2);
        
        // 设置大小
        // make.width = label2.width - 40
        // make.heigth = label2.height - 60
        make.size.equalTo(label2).sizeOffset(CGSizeMake(-40, -60));
    }];

    
}

@end

iOS-WKWebView取消自动选中灰色背景

在IOS中WKWebView有些地方tap点击会有一个灰色背景图层出现,会让用户感觉是个bug.

%title插图%num
-webkit-tap-highlight-color这个属性只用于iOS (iPhone和iPad)。当你点击一个链接或者通过Javascript定义的可点击元素的时候,它就会出现一个半透明的灰色背景。要重设这个表现,你可以设置-webkit-tap-highlight-color为任何颜色。想要禁用这个高亮,设置颜色的alpha值为0即可。

示例:

//设置高亮色为50%透明的红色:
-webkit-tap-highlight-color: rgba(255,0,0,0.5);

//设置高亮色透明
-webkit-tap-highlight-color: rgba(0,0,0,0);

解决方案:

//swift代码
//去除wkwebview tap选中颜色
//script1 和script2都可以
func disable_webkit_tap_highlight_color() {
//let script1= “function addStyleString(str) {” + “var node = document.createElement(‘style’);” + “node.innerHTML = str;” + “document.body.appendChild(node);” + “}” + “addStyleString(‘* {-webkit-tap-highlight-color: rgba(0,0,0,0);}’);”
let script2= “document.body.style.webkitTapHighlightColor=’transparent’;”
self.webView.evaluateJavaScript(script2, completionHandler: nil)
}

 

iOS-EKEventEditViewController踩坑记录

一、EKEventEditViewController是什么?
EKEventEditViewController是添加日历事件的一个ViewController
通过设置event,然后push到这个VC 就展示出来这个事件的便捷页面。

%title插图%num

二、部分iOS系统上的问题

%title插图%num
stackoverflow上这个问题的解决方案

在iOS12.2.0–13.3beta版本中,这个问题一直存在,直到13.3beta苹果才修复了这个问题。

三、解决方案一,使用继承
stackoverflow上这个问题的解决方案

继承EKEventEditViewController这个类,在子类中进行修复。
原理就是在出现这个问题的iOS版本中,设置event的时候,先设置event.title = nil,将真正的title存放到变量中。
在viewWillAppear方法中把真正测title重新赋值给event.title ;
在viewDidAppear将键盘收起,这样就规避了苹果的这个bug。

四、解决方案二,使用分类
使用继承的方式解决这个问题会有个小问题,就是在点击取消按钮的时候,会发现actionsheet提示变成英文

%title插图%num

所以第二种解决方案是使用分类的方式,进行hook
在viewWillAppear方法中把真正测title重新赋值给event.title ;
在viewDidAppear将键盘收起。