云计算框架

我们首先需要明确云计算领域的一些基本概念,虽然每个人都有自己独特的理解,但大抵可以总结如下:

概念
解释

分布式

程序能够在多台机器上运行,机器之间通过网络进行通信和协同

微服务

一种分布式软件架构,将应用程序拆分为功能独立、可扩展的非耦合服务,每个服务使用语言无关接口对外提供服务,彼此可以有不同的语言实现和数据存储,往往使用容器部署,在集群中自动管理和扩展

服务网格

一种基于微服务架构的网络技术,将网络层抽象成边车代理(SideCar),为微服务提供统一的服务发现、路由和负载均衡等能力,提供管理和监控微服务之间通信的方法

云原生

软件开发、部署和运维完全面向云环境,基于分布式和微服务框架开发应用程序,使用容器和集群作为运行环境,使用DevOps、CI/CD等工具管理生命周期

Serverless

基于事件驱动的计算模型,将应用程序的基础设施全部交给云平台管理,开发者只需以函数的方式提交业务逻辑代码,无需关心环境配置、编译、扩展、管理

根据上述定义,有必要明确几个概念对应的框架类型:

框架
解释

分布式框架

特指分布式计算框架,类似Apache Spark的注重计算与大数据处理的编程框架

微服务框架

指为微服务提供支持组件集合的框架,提供业务逻辑之外的必要功能模块,类似Spring Cloud

服务网格框架

指包含注入微服务的智能代理组件的框架,如Istio

云原生框架

包含前三者的所有框架

Serverless框架

指为事件驱动模型和FaaS做环境准备的框架,封装所有业务逻辑之外的操作,类似KNative

经常涉及的编程架构范式:

编程架构范式
解释

面向对象编程(OOP)

以类和对象为基础,将数据与方法绑定,以封装、继承、多态支持多种设计模式

面向切面编程(AOP)

将横跨多个对象或模块的行为封装为切面(Aspect),与核心业务逻辑分离,降低代码耦合度

面向服务架构(SOA)

一种分布式系统架构,和微服务类似,但粒度更大,应用往往基于企业级服务总线(ESB)部署,不依赖云环境

MVC模式

将应用分为模型(主要数据处理和业务逻辑)、视图(用户界面)、控制器(连接前两者,发送请求、返回结果)

面向领域编程/领域驱动设计(DDD)

分为用户接口层、应用层(service,业务无关的应用能力实现)、领域层(面向对象,实现领域专有概念和业务)、基础设施层,将领域概念设计成领域模型

函数式编程

函数是一等公民(基础对象),函数必须是无状态、无副作用的,通过函数的定义和过程调用来实现计算

响应式编程

针对异步数据流的编程范式,定义数据流和处理数据流的方式

事件驱动编程

基于事件响应的编程范式,通过订阅和处理事件来响应用户操作和系统状态变化,属于异步编程

任务:

为加深对以上概念的理解,尝试对每种模式举例子。

注1:进入这一章后会用到各种语言的工具,比如Java, Python, Go,此时版本的管理尤为重要。

  • Java方面,JDK和JRE的版本请查阅资料利用环境变量. Maven, Gradle等工具进行“优雅地”多版本管理;

  • Python方面,建议利用anaconda进行环境(env)管理,为每个任务建立隔离的环境,可以自行查阅相关使用文档;

  • Go版本可以使用gvm管理,包版本之间的依赖使用go modules进行管理,配合JetBrains GoLand IDE进行使用;

注2:本章涉及的技术模型非常之多,无法做到系统性地学习每一种优秀技术,只能够带领读者入门,在时间有限的前提下需要掌握提纲挈领的能力,理解各个优秀技术的核心环节,加快实践的步伐。

注3:在后续实验过程中大家在方方面面会遇到各种问题,一定要在遇到并解决问题后留下记录,帮助自己、帮助后人。不止是遇到的问题,实验过程中的步骤、发现和创新点也可以进行记录和分享。

在初步理解以上概念后可以进行下一步

Last updated