经过多年的发展,随着5G、万物互联的呼声、传统行业数字化浪潮,无论你是从事互联网行业的人员,亦或是传统行业的职员,相信都或多或少的听过用过云计算了。先对齐下大家的认知,云计算中的云指的是看不见摸不着,计算指的是需要物理设备执行的逻辑。
举个例子,我们需要提供一个用户输入的100个随机数的乘法计算结果输出产品,传统的方式是我们购买一台物理服务器,安装web服务通过浏览器提供给用户用于用户输入,开发后端逻辑服务用于执行输入的运算逻辑,安装数据库服务用户保存不通用户的计算输入和结果用于回溯查询。
由于服务要进行高强度的计算,因此我们的服务器需要比较好的CPU,可能需要4核或者更多;由于我们需要提供用户计算结果的保存和查询服务,这里可能会涉及高强度的磁盘IO和内存IO,因此我们需要SSD磁盘提供高效的磁盘IO能力以及合适的内存容量;为了提供稳定的服务,我们需要至少两台这样的物理设备,以防止其中一台不工作带来的服务整体不可用。至此,我们搭建完成了一个互联网产品,可以预见的是他可以同时为500个人同时计算复杂度一般的服务。
有一天我们的产品由于非常好用,经过社交媒体的宣传突然涌入进来许多人来体验使用,我们惊讶的发现页面打不开了,这是因为瞬时流量太大了,就像洪水决堤一样,把服务给压垮了。为了防止决堤,我们又不想丢弃这些流量,或者是我们想尽我们最大的能力来支撑这些流量,比如说10000个人同时使用,那我们需要提前额外购置38台同规格的服务器放置在那里,以作备用。至此,我们搭建了一个能同时支撑10000人同时计算复杂度一般的服务。
经过实战的同学可能会有察觉,同时支撑10000个人请求的时候,现在数据库是怎么安装的?因为之前只有2台服务器的时候我们是一主一备分别安装的,这会带来数据库服务和应用服务共享资源的情况,还有数据库是不具备高可用的,当主库所在地服务器宕机时,我们需要将备库启用为主库才能进行更新写入操作。最好的做法是数据库作为一个单独的服务器集群。还有就是当同时访问的人数过多时,数据库由于是磁盘IO型,往往率先成为整个系统的瓶颈点,因此我们还要引入memcache类的内存性缓存,常用的有分布式缓存Redis、本地缓存等。
我们能够看到,这种瞬时的流量持续的很短,可能一个月或者更长时间才有那么一回,具有很大的不确定性。然而确定的是我们闲置的38台物理设备在吃灰。说到这里,云原生来了,所有40台服务器全部是由云服务器厂商提供,产品涉及的数据库、缓存在云原生中均有队友的SaaS化产品开箱即用并自带高可用属性,我们不再购买物理机,我们不再搭建各种本地化的中间件集群,当有瞬时流量来的时候,我们就动态申请云服务器增加到40台,服务洪峰过去后就缩减回2台,大大减少我们的成本,另外我们也不需要担心服务器老化、机房断电等各种各样的维护问题;对于云服务器厂商来说,他们可以用86台服务器,为3家甚至更多类似我们这样的产品同时提供服务,这里的逻辑建立在同时服务的产品不太可能同时有流量洪峰。
以上就是云计算的产生的合理性和价值。我们也可以预见云原生一定是未来,因为没有人会拒绝美好又廉价的产品服务,陆续也会有越来越多的应用场景。
总结一下,云原生相较云计算更进一步,更多和应用落地的部分都能在云上找到高可靠的PaaS化、SaaS化、甚至IaaS化的服务,使得应用方专注于涉及业务逻辑本身,提高生产力和创造力的同时又绿色低碳廉价。