抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言:回顾一下最近的学习,除了扎入CS的基础,也看了网站架构、了解了微服务实践的 Spring Cloud。同时,也关注了下云原生的 Kubernetes 和 Docker,当然还有实习的大数据生态。在感受这些有趣的东西的同时,也不禁要思考自己到底喜欢什么?自己到底应该想走什么方向,那么所有的这些东西又代表了什么?与未来发展的方向又有什么关系?越了解,发现这个坑越深,也越有趣,随手梳理记录一下,扫一下互联网的盲点。

云计算

从单机到互联

作为一名开发者,说到互联网的发展史,单体计算机和网络是不可不谈的。

单机时代:从最开始基本的冯·诺伊曼结构:运算器、控制器、存储器、输入设备、输出设备,到与操作系统的有机组合成为了一个具有多用户、多任务调度功能的计算机。这样的计算机能够接收大量的计算任务,减少了大量的手工计算并能满足早期基本的工作使用。

互联时代:有了单个计算机的计算,很自然地就会增加机器间的数据传输的需求,在经历了机械的磁盘搬运之后,产生了网络通信。从最开始的点到点,到后来至今的端到端。计算机及其网络的变革,带来了现代社会的快速发展。

这里,也不得不了解一下计算机的分类。对于个人工作和学习的使用而言,我们可以选择使用个人计算机,如笔记本、台式电脑。而对于企业应用或服务端应用而言,就需要选择能够通过网络对外提供服务的、更多功能的、更高性能的计算机,也就是服务器,这样的计算机能够为其他的服务器或计算机(如个人计算机)提供服务。当然,还有其他类型的计算机,如超级计算机、以及路由器、嵌入式等。显然,聚焦互联网的发展,重心当然在服务器类型的计算机。

服务器:

从软件角度 —— 一个管理资源并为用户提供服务的计算机软件。

从硬件角度 —— 运行上述计算机软件的计算机。

从单体到分布式

在传统的网站部署时代,需要由企业自行购买服务器设备、部署应用和自行维护。而应用的类型有相对较小的单体架构和相对较大的分布式架构:

系统架构-图源-极客时间

单体架构:在单体架构的应用程序中,一个应用包括应用层、服务层、数据层集成为一个应用对外提供服务。单体应用存在简单但不易扩展等许多优缺点,仅适合小型应用程序。

分布式架构:分布式架构是在单体架构的基础上进行了拆分。比如原来的单体架构的三层拆分后分别部署在具备不同特性的服务器上提供服务,如应用程序服务器、文件服务器、数据库服务器。不同的部分分别部署在不同的服务器,不同的服务器之间的服务通过网络交换信息,形成分布式架构。分布式架构,易于扩展和更新,能够更好地支持的高并发、高可用,支撑起更大应用系统。同时,在遇到业务工作的高峰期时,可以通过增加服务器来保障系统的稳定和升级,在业务工作较为低迷时,可以通过减少不必要的服务器来另作它用,提高服务器的利用率。

使用了基于分布式架构系统的电子商务巨头 —— Amazon,率先提供了云计算服务。简单地说,因为网上零售存在季节性的高流量期。在用户购物高峰期时,需要采购更多的服务器以满足业务的需求。在经过了高峰期后,用户流量变小,那么先前采购的大量的服务器作何使用?作为具有较为完善的服务器运维团队和在网站优化上的技术和经验优势的顶级公司,Amazon 将这些空闲的机器打包为产品提供给其他企业使用,即提供可用于其他企业应用部署的服务器服务,亦即云服务。云服务提供的计算能力使得其他企业不需要再进行自主采购服务器、招聘服务器运维团队等工作,这对一个较小的企业而言,能省下不少的开销。随着云服务的不断完善和增强,云计算的优势不断增强,云服务也越来越受到市场的欢迎。云计算时代,也开始逐渐铺展开来。

云计算

“云计算是一种基于互联网的计算新方式,通过互联网上异构、自治的服务为个人和企业用户提供按需即取的计算。” —— 维基

“简单来说,云服务可以将企业所需的软硬件、资料都放到网络上,在任何时间、地点,使用不同的IT设备互相连接,实现数据存取、运算等目的。” —— 百度

总的来说,云计算服务能够给企业开发者、个人开发者更轻易得到的计算机服务。目前云计算提供的服务类型主要有两种:公有云和私有云。

公有云

公共云是最基础的服务,多个客户可共享一个服务提供商的系统资源,他们毋须架设任何设备及配备管理人员,便可享有专业的IT服务,这对于一般创业者、中小企来说,无疑是一个降低成本的好方法。

公共云又可根据提供的服务封装程度不同细分为3个类别,分别是基础设施平台软件

云计算

IAAS

Infrastructure as a Service,基础设施即服务,云计算的最底层服务。指把IT基础设施作为一种服务通过网络对外提供,主要提供存储,网络和虚拟化等服务。

IAAS的好处之一在于提供商能够提供物理IT基础架构和维护,用户只需要相信服务提供商提供的服务即可,可直接研发、部署、维护自己的产品而不需要自行购买服务器和维护。另外,IaaS具有高度的灵活性和高度的可扩展性,用户可随时切换和扩容服务。

IAAS最典型的例子就是阿里云、腾讯云、华为云提供的云服务器,我们可以直接在云服务器上安装自己的服务环境并部署自己的应用。

PAAS

Platform as a Service,平台即服务,PAAS通过Internet提供硬件和软件工具,人们使用这些工具来开发应用程序,用户无需关心底层系统,而只需要关心自己的业务逻辑,PaaS用户往往是开发人员。

典型的PAAS服务可参考:15种流行的平台即服务

SAAS

Software as a Service,软件即服务,SAAS也就是用户使用软件产品,该产品的研发、部署和维护都由服务提供商提供,用户只负责使用。我们所使用的互联网产品基本都是SAAS。换个角度来看,就是我们需要使用一个具备某些功能的产品软件,但是这个产品软件不需要我们自己研发、部署和维护,已经有开发商提供这个产品了,我们直接使用即可。

私有云

私有云与公有云类似,区别在于私有云是因为部分企业有数据安全等需求,不放心交给公有云而自己搭建的云服务。

作为一名软件开发者,我们更应该关注的是在一个系统平台上构建自己的应用而不是思考如何从物理机上架设自己的服务平台。那么有了这一部分平台基础之后,我们就可以从机房上云了。

有了 Cloud 平台,那么就可以在 Cloud 上进行上层应用的架设。

云开发

云时代下的一些新兴开发技术和理念。

微服务

微服务可以认为是可以独立部署的、小的、自治的业务组件,业务组件彼此之间通过消息进行交互。微服务的组件可以按需独立伸缩,具备容错和故障恢复能力。

微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的开发和实现时间。

那么这样一个细化系统,各个微小的服务独立发布、独立部署、自治。对于 Java 开发的微服务系统而言,由于Java本身支持跨平台部署和运行,那么Java开发的系统可直接部署到不同操作系统的云平台上。而对于其他非跨平台语言开发的微服务系统,则有容器化的思维和技术实现——Docker。当然Java开发的服务也可以基于Docker来部署。

这也是为什么如今存在对Java的未来担心的原因之一了。

Docker

Docker 是一个应用虚拟化、容器化的引擎,它能将一个应用搭建为一个容器,该容器可以移动和运行,即支持 “Build, Ship and Run”。本质上实现的是:同一个软件发布,在不同的平台上运行。到底还是 Java 的那一套意思。

另外,Docker 实现的是轻量级的虚拟化。虚拟技术,例如 KVM虚拟技术是在操作系统级别上进行虚拟和隔离,每一个虚机都是独立的OS,即能够使得一套物理设备运行多个操作系统,多个操作系统共享分割物理资源。而Docker是在一个操作系统上的虚拟,本质上是同一个操作系统中的进程隔离,其优势 Docker 比 KVM 更省资源、资源利用率更高。

Docker的轻量级虚拟化、同一软件多平台部署,使得容器化技术在云平台上得到了很好的发展和运用。

Kubernetes

利用 Docker 容器化技术使得服务能够独立开发和部署,一个个容器构建起一个大型的分布式系统。但是分布式系统的复杂性是不言而喻的,众多服务如何实现科学合理的调度、扩展、自动化等?这是Docker在大型分布式系统中存在的问题。

好在有容器编排系统——Kubernetes,它主要解决一下两个问题:

  • 分布式容器应用的可靠性,在服务器或容器应用出现问题的情况下,自动感知,自动将容器应用在集群内的其他机器里重新运行起来
  • 分布式容器应用的可扩展性,通过启动相同的容器应用,自动的提升应用的负载支撑能力。

通过 K8s 这一云原生操作系统的布道,互联网逐步进入云计算时代。

DevOps

DevOps 是 Development 和 Operations 的组合,重视软件开发人员和运维人员的沟通合作,通过自动化流程来使得软件构建、测试、发布更加迅速和可靠。

小结

参考——知乎@李学峰

总的来说,就是基于容器和 Kubernetes 的平台提供了云原生应用的标准发布和运行环境;基于容器的微服务架构定义了云原生应用的标准架构。

通过这些技术,为软件应用在架构、支撑服务和支持组件、基准平台上进行了标准化;同时通过这些技术,解决了升级、扩容、稳定性、私有云/公有云/混合云统一基础架构等问题。

微服务架构的重要目标就是:快速发布,那么就需要在敏捷文化、自动化工具链上对流程提出了高要求。在这个基础上,利用devops的自动化文化、协作文化、敏捷文化,在软件的开发、测试、部署、运维流程上,提升了开发效率、降低了沟通成本、提升了部署和上线速度。

DevOps 是云原生应用在开发、测试和发布流程上的必要手段,基于容器的 Paas 平台和微服务架构,为 DevOps 的流行提供了土壤。

这种扫盲文章也就自己看看,毕竟level还不足,参考了挺多文章,也慢慢磨着写了好久,内容有错漏不足的地方欢迎各位 Dalao 一起讨论学习。
另外, github.dev 真香,虽然没有 codespace,但 Web Editor 写文章也不错。以前想写博客,还得自己在本地 new 一下,现在直接在 github 上写,写完了在扔到博客完善、优化和发布,把写博客中心突出了一下,另外写博客的能动性也增加了。

参考

评论

Gitalk评论系统对接至Github Issue,随心评论🐾🐾.....