不可不知云服务成功的关键技术——容器和微服务
在移动互联网的世界里,“云”的概念已经行之有年,大家的生活都受到巨大的改变,从没有它不能活的 IM 即时通讯软件和社交平台、信息流、各种丰富生活的游戏和音乐软件,到像“滴滴打车”这样增进生活便利的工具应用,组成了现代人生活的样貌。一般大众大概不知道这样的生活进步背后是由不断演进的云技术所成就的,然而身为开发者,想要在这样令人如痴如醉却又极度竞争的环境下立足、成功,不能不了解其中的功夫。
所谓的“云”简单来说就是有一台不停机的电脑,在进行我们所需要做的事情,我们又称它为服 务器(Server)。由于Server并不需要漂亮的介面,而Windows和Mac这样的Operating System对Server来说太过肥大,因此有很多针对Server所设计的OS,最后由Linux胜出,Linux也被称为 Server 的核心。从Server的角度来看,每个在上面跑的服务称为Process,当电脑硬体性能越来越强大,能同时 进行的Process越来越多,此时若任何一个Process当掉,都很有可能会影响其他服务,因此Process独立性开始成为许多人关注研究的技术。
最近处理Process独立性的技术被称为“容器,Container”,这个概念早在二十年前就萌生了,然而在容器技术还未成熟时,工程师们先想出了一个解决办法,就是“虚拟机器(Virtual Machine, VM)”,VM的概念是在一台电脑上装上很多核心,也就是一台电脑上有很多台小电脑在跑,每一台小电脑就是一个VM,因此若其中一个当掉了,并不会直接影响到其他VM。想当初像银行业这样需要高安全性的Server服务的产业,花了很多钱买Server,即使他们未必真正需要用到很多CPU资源,不过这样的硬需求可是让像Dell这种提供Server服务的公司分了好大一杯羹。当VM技术出来之后,卖Server的业务就消失了,真的可说是光景不再。其中最具代表性的是VMware这间公司,VM技术也算是主宰了快要一个世代,直到最近二、三年,容器技术才被Docker这间公司发扬光大,给VM技术很大的压力。Tony对于容器这样的演变认为:“在科技业,历史一直在重演,硬件一直在进步,带动软件的进步,这是一个一直在演变的自然现象。有了容器之后,是用Process来看电脑的世界,过去写程式是考虑要在哪个硬件上做事情,现在等于是把硬体虚拟掉了,让软件开发起来变得更灵活。”
当技术在演进,需求也在变化,然而在真实的世界中并不是只有一台Server在运作那么单纯,实际上,是有很多的Server,上面有更多的容器,容器虽是隔离独立,但之间又常常会需要彼此。事情开始复杂化,相应而生的就是管理自动化的需求——Google过去十年都在用Process开发服务,容器的暴红,让Google决定把内部的经验用开源项目分享出来,这个开源项目叫做“Kubernetes”(简称K8s)。K8s的核心功能是“排程(Scheduling)”,他将容器管理自动化,提升了管理效率。当问到:“容器世界正在快速的发展当中,在生产环境使用这样的技术会不会有什么需要特别考量的部分”时,Tony则是给了一个让人会心一笑的答案:“还是需要技术能力较好的团队来执行,不然很容易遇到很多的坑,会影响生产上执行的速度。K8s已经算是可以面对各式各样的硬体组合,但在初期还是让高技术含金量的团队来操刀比较好,其中复杂的技术就不一言概述了。”
当问到为什么DroiBaaS团队选择K8s,Tony表示:“我们看上的是容器这样新的技术。VM固然稳定,但是他能做的也就是稳定的某些事,旧的不代表未来可以带来更好的效率跟solution。当然,对于一些需求来说,也许VM就足以满足,不过容器除了有隔离的优点,他更适合移动互联产业的变动性和灵活性,容器在Scaling上的表现是VM所不能及的,容器可以在最短时间内承载千军万马。容器让资料的复制、移植、放大缩小都变得简单许多,能够让整个开发流程、效率、稳定性都更上一层楼。”当然,面对这样新的技术,一定有些trade-off,像是:Devops Engineers 是否能够接受新的技术,以及大家是否愿意去学、能学到什么程度。新技术一定会有变动,这是一定会发生,而他相信DroiBaaS的团队,有足够强大的能力去接受这些 Trade-off 的考验。此外,Tony表示,他也看重这些技术的最初开发者是“谁”、他们是怎么样的“人”、他们怎么写出code的。“我们选择 CoreOS,为何不是Ubuntu,因为我们对 CoreOS的创始人做过的事情、他们写出的code品质等等都很有信心。另一个例子,最初开发 K8s 的三位在 Google 的工程师也是,他们对云技术的见解和写出的程式码水准都是世界一流。更重要的是,CoreOS和K8s都选用Golang语言来开发专案,眼光长远(请参考:罗勃•派克——云端历史的源头)。”Tony 的回答让科技又多了人本的温度,事情不仅是表面呈现的而已,还有更深一层的涵义。
在资本密集的移动互联网产业里,那些用户跟营收都用亿来做单位的往往都是些大号,市场早被鲸吞蚕食。如今看得见的开发者或是创业团队,大多因为进入得早,抢得先机。现在的环境对于个人开发者和创业团队来说极度险峻,产品做得好且带有新的商业逻辑,才有机会获得创业导师的青睐、进行融资。然而“把产品做好”这件事,对于缺乏资源的创业者来说,还来不及让市场去验证自己的商业逻辑,就先被前期要投入的资本打趴。开发一套软件首先要租借API和推送等服务器,然后架设数据库、后端工程师撰写云代码、前端工程师、UI设计师,开发完之后运维也很重要。当流量进来后,服务器是否能灵活承载也是问题,当一次机,使用者可能还怀疑是自己的网路不顺,当第二次机,使用者就跟这个应用说掰掰了。
如今,这些难题有了解决之道。DroiBaaS给的就是一个Total Solution的概念,不仅把上述的需求全部打包一次给予,更多了如统计分析、渠道发布等等取得用户、分析用户和变现的办法。
最后问到 Tony 身为一个资深工程师,对于自己团队开发出来的产品有怎么样的信心、DroiBaaS能为开发者解决什么问题时,他这样说:“容器解决的是未来的问题,移动互联产业一个很大的重点就是要做先驱,未来的机会是很大的。用容器技术做云端的后台很愉快,不会觉得每天都在重复解决类似的问题。而且我自己做起来觉得很舒服,因为我知道出问题时,我的团队有能力即时解决。最重要的是我们的架构够灵活,我们的系统可以比较快的回应客户的需求,有转身的空间,整套技术是很让人兴奋的。”
本文转自开源中国-不可不知云服务成功的关键技术——容器和微服务
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
基于Prometheus,Alermanager实现Kubernetes自动伸缩
到目前为止Kubernetes对基于cpu使用率的水平pod自动伸缩支持比较良好,但 根据自定义metrics的HPA支持并不完善,并且使用起来也不方便。 下面介绍一个基于Prometheus和Alertmanager实现Kubernetes Pod 自动伸缩的方案,该方案支持任意自定义metrics。思路比较简单:由Prometheus负责收集需要的性能指标(如:当前链接的并发数,当前cpu的使用率等),根据定义好的告警规则生成告警事件,然后将告警事件传递给Alertmanager,由alertmanager触发webhook来实现最终的pod伸缩功能,如下图所示: Prometheus中Alert rules的配置示例: ALERT HpaTrigger IF app_active_task_count > 30 FOR 30m LABELS {serverity = "page",trigger="hpa",action = "scale-out",value = "{{$value}}", deployment="test", namespace = "{{$labels...
- 下一篇
Kubernetes的service mesh——第一部分:Service的重要指标
导言 什么是service mesh,一个为云平台而设计的应用。它如何被云平台的本地应 用使用?本文中,我们将讲述在Kubernetes中如何应用Linkerd作为service mesh,如何捕获和报告顶层服务指标如成功率、请求量和延迟,而不需要更改应用的代码。 注意:这是关于Linkerd、Kubernetes和service mesh的系列文章其中一篇,其余部分包括: 1. Top-line service metrics (本文) 2. Pods are great, until they’re not 3. Encrypting all the things 4. Continuous deployment via traffic shifting 5. Dogfood environments, ingress, and edge routing 6. Staging microservices without the tears 7. Distributed tracing made easy 8. Linkerd as an ingress controller 9. ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS6,CentOS7官方镜像安装Oracle11G
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS6,7,8上安装Nginx,支持https2.0的开启