Aws Relate Interview Question
很早就想写一篇关于aws或者azure或者是gce这样的全球性质的云服务提供的公司和国内公司之间比较大差异的文章,想写文章的原因在于自己在使用国内公有云平台时候,其实感觉到了和国外相应平台之间的代差,但是又不知道从何处着手,所以迟迟没有成文,直到最近看了一套纯国外的aws平台的操作视频,发现aws能实现的和能给予支持的平台服务,感觉国内的公有云服务公司与之相比,它们之间代差应该很大,虽然说不准这个差距具体的数字,但是从全球节点的分布,硬件的性能以及软件关注的重点领域来看,中国的云服务提供公司都有很长的路路要走。正式文章开始之前,我还是定义一下,我这篇文章的结构,由于国内云其实我使用过的平台无非就阿里云腾讯云两家,而某为云,由于那种吃爱国饭的思想感觉已经深入其骨髓了,所以提到它我就比较恶心,也没使用过,就不涉及,第一部分,把我使用国内云平台和国外云平台,直观感受直接分条输出,更容易突显重点,也更方便大家形成自己的对比。第二部分,我会讲一下,为什么会形成软硬件领域越来越大的代际差距及面临这样的形式,对于真正专心做科研或者生产力工具的普通人,我们会受到非常广泛的影响吗?第三部分,我会对于我觉得aws里面一些比较难理解的理念或者实现方式,用部分代码输出的方式,帮助你理解,就像k8s一样,基于声明式的yaml或者yml文件,可能学习的知识点有点碎,学习曲线陡峭,但是其实它只是让你用另外一种相比于传统更加高效统一的方式进行线上部署,但是其实你在传统部署里面面临的问题,你仍然需要去解决,比如说mysql的主从部署,通常如果简单的流量支持,也就一主双从,其实你基于kubernetes或者aws封装的kubernetes起三台服务器,把它们连起来形成一个服务集群,不是特别复杂的事情,复杂的事情在于你的master服务器的my.cnf文件中应该做哪些声明,slave服务器的my.cnf文件中应该做哪些声明,数据的同步方式,节点故障的情况下如何最大可能保证数据的完整性及高效的故障恢复!再比如你选型了mysql group replication或者galera,它们是支持多主节点模式部署的,每个节点都能进行读写,在高可用和容错方面做的更好,但是进行配置的时候,你就要懂得如何做同步分片,如何做自动故障转移,如何引入ProxySQL或者MySQL Router,因为它要做到允许客户端连接到任何一台服务器的,也就是类似于你在传统应用部署的时候,前面可能挂个nginx来做这样的事情,但是在mysql多主集群里面,你可能就需要把传统多主应用的模式搬到k8s集群上,还要以k8s声明的方式让它能负载后端所有的mysql服务,这无疑增加了你的学习成本,你不但要对于mysql了如指掌,还要对于k8s集群部署进行掌握,而只是部署了k8s集群,你就需要一套完整的链路能够把应用运行的所有日志进行收集,做监控或者报警,不然即使出现问题,你也不知道具体报错节点是哪一个,特别在集群体量庞大的情况下,你一个个打日志那解决问题得猴年马月,所以完整的链路追踪又必不可少,而mysql的my.cnf怎么做调优能发挥出服务器的最大性能,依然是你无论云原生模式还是传统部署模式,你都要掌握的东西,因为具体的应用应该分配多大cpu内存在k8s里控制,但是这些里面多少资源拿来为相应的mysql服务,让mysql集群本身的innodb引擎发挥出最大性能,需要你解决的,需要你有经验积累的,一分也不会少;
第一部分 直观感受输出
aws提供完全由aws管理的服务同时整合了aws-tools比如iamvpccloudwatch等等">托管服务:aws提供完全由aws管理的服务,同时整合了aws tools,比如iam,vpc,cloudwatch等等
kubernetes支持随意切换-当前最新版本为kubernetes最近的稳定版本">各版本不同的kubernetes支持随意切换, 当前最新版本为kubernetes最近的稳定版本
