Kubernetes取代Linux、Apache;Etcd或取代MySQL;Go取代Python

原创
2020/11/06 08:13
阅读数 17

作者简介:Sirish Raghuram是提供托管私有云部署方案的Platform9公司的首席执行官。

多年来,LAMP架构(Linux、Apache、MySQL和PHP/Python/Perl)一直是许多开发人员心目中的绿洲,他们想构建现代应用程序,又不想深陷于某些大厂商的生态系统这片沙漠。LAMP是一种很方便、广泛使用的开源框架;有了它,开发人员很容易构建应用程序架构。

然而,正如上世纪90年代后期迅速变化的技术格局为LAMP架构的崛起创造了条件,如今Web开发领域的新变化和新趋势导致LAMP架构迎来了所谓的“日落时期”(sunset period)。

今天,如果你不将应用程序分解成可以独立部署和扩展,具有应对故障的灵活性和弹性的小型组件,实际上死路一条。两大趋势彰显了这个转变:首先,LAMP架构的每一层现在“作为一项服务”来提供,让开发人员能够将许多职责外包出去,并且最终更快地交付更好的产品。

其次,近些年来移动使用模式的兴起使得这种重组加快了步伐。移动技术现在是用户与应用程序连接的主要方式。这意味着开发人员必须构建这样的应用程序:具有高度弹性,在全球范围内可用,具有极高的扩展性,足以处理数百万个客户。无论你怎么来搞,LAMP架构都根本无法满足这些要求。

那么,下一步该何去何从?从开发框架、编程语言到介于之间的一切,如今开发人员拥有比以往任何时候都要多的选择,这只工具箱只会越来越庞大。因此,开发人员期望我们一直称为LAMP的架构的各个部分能够不断发展。下面简单描述一下如果我们用更现代的工具和框架来重新塑造LAMP架构,新的LAMP架构应该会是什么样:

Kubernetes同时取代Linux和Apache

传统上,设计应用程序时着眼于某种特定的操作系统。对于LAMP架构而言,这意味着Linux。而如今,新的思路青睐Linux无力提供的更出色的可移植性。这使得Kubernetes这种开源容器编排引擎成为取代Linux的一种很好的替代平台。Kubernetes将Linux抽取出来的能力让它成为如今许多应用程序的记录操作系统。

一个额外的好处是,Kubernetes还擅长路由网络流量,这意味着它也可以取代Apache。多亏有了Kubernetes,需要变更时,开发人员再也不需要处理配置文件和静态配置了。使用诸如Ingress、Services和LoadBalancer之类的Kubernetes构件来路由网络请求,开发人员可以随意采用一种更分布式、更有弹性的方法,这种方法又具有很强的动态性和适应性。

Etcd或许取代替换MySQL

MySQL仍然是一种颇受欢迎的关系数据库管理工具。然而,如果你想要又有弹性的持久性数据,那么需要将它存储在某个地方,这个地方自然允许横向扩展,还可以透明地处理节点故障。换句话说,你想要分布数据层以便能够支持这种属性,MySQL可能不是最佳选择。

如今外头有好多服务可以满足这个要求,最受欢迎的服务之一就是Etcd。其他服务还包括Consul(来自HashiCorp)、doozerd、CockroachDB以及谷歌的Spanner。最后,合适的选择归结为应用程序的性质。

CockroachBD和Spanner最适合这种应用程序:需要一种更高级的数据管理系统来存储数量更庞大的数据,满足传统的ACID数据库保证,并使用像SQL这样的传统查询语言。对于其余大多数应用程序来说,Etcd、Consul和DoozerD都可以胜任。

除了提供数据持久性的服务外,应用程序还越来越依赖附加的数据处理服务,比如消息队列服务。这些服务还需要具有很高的扩展性和可靠性,以便满足应用程序的要求。

Go取代Python

Go语言正在蚕食Python的地盘,成为开发现代应用程序(尤其是微服务)的首选语言。

相比Python,Go具有的一个关键优势是,所有依赖项在构建时得到了解决。这帮助开发人员消除了代码中隐藏的任何意外问题,并保证应用程序在部署后不会突然崩溃。

最重要的是,Go还允许应用程序可以充分发挥多个CPU核心的功能。基本上来说,如今CPU没有变得更快多少,这意味着获得更高速度的最好办法就是添加更多的CPU核心。Go在这方面也具有优势:它轻松支持并发机制,因而开发人员很容易充分发挥多个核心的功能。由于Go程序是静态类型,并编译成原生机器代码,所以运行起来比解释语言或动态编译语言(比如Python)要快得多。

综上所述,可以说“KEG”架构是取代LAMP架构的上佳选择。不过这忽视了更重要的一点:无论喜不喜欢,标准“架构”的整个概念都在瓦解。

如今,开发人员可以使用比过去更庞大、更丰富和更强大的一系列工具,这意味着遵循像LAMP或者甚至KEG这样的规定性方法不是正确的出路。在这个新世界,关键是搞清楚应用程序背后的行为、模式和原则。之后,什么样的工具适合处理任务才会一目了然。


后台回复“加群”,带你进入高手如云交流群


推荐阅读:

一文吃透Linux提权

Linux的文件系统及文件缓存

Linux系统常用命令速查手册

Linux经典的几款收包引擎

这几个 IPv6 问题,你懂了吗

图解一致性哈希算法,看这文就够了!

网络故障排除工具 | 快速定位网络故障

一文详解 FTP、FTPS 与 SFTP 的原理

一文读懂容器网络发展

5 分钟看懂 HTTP 3

一文搞懂CDN加速原理

Linux used 内存到底哪里去了?

免费下载!《阿里工程师的自我修养》

阿里云深入浅出K8s与CDN排坑指南免费领取

5分钟给你讲清楚Kubernetes

容易被遗忘的10个Linux命令,很实用!

经典!服务端TCP连接的TIME_WAIT过多

8 个问题彻底搞透 DNS 协议

三张图彻底搞懂iptables和netfilter

故障排查:K8s中Pod无法正常解析域名

网络排错大讲解~

HTTP/3 原理实战

OVS 和 OVS-DPDK 对比

微软出品的最新K8S学习指南3.0下载



喜欢,就给我一个“在看”



10T 技术资源大放送!包括但不限于:云计算、虚拟化、微服务、大数据、网络、Linux、Docker、Kubernetes、Python、Go、C/C++、Shell、PPT 等。在公众号内回复「1024,即可免费获取!!

本文分享自微信公众号 - Linux云计算网络(cloud_dev)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部