发布时间:2023-07-27 18:30
云计算的基础:虚拟化技术
分时技术
计算机从最开始只是个只能由一个人操作的机器,自从time-sharing
(分时)技术的提出,实现了多人同时使用同一台计算机的需求。
虚拟化技术
当一台机器可以由多人操作后,这台机器上的硬件设备资源如何共享呢?虚拟机化技术(将所有硬件接口虚拟化)的提出实现了多个用户共享同一高性能计算设备的资源。
互联网的提出
分时与虚拟化也只能实现多人在同一台机器上操作,上世纪60年代互联系统的提出与实现,实现了互联网的前身,允许不同位置的计算机进行网络连接和资源共享。
大型机,小型机,X86的出现
当同时拥有操作系统,虚拟共享,互联网后,各种类型的服务器开始出现,公共计算推出舞台
虚拟机VMware出现
虚拟机可以在windows和X86机器上运行,正式拉开云计算的序幕。
虚拟化在云计算中的应用
亚马逊AWS的推出宣布着云计算时代的开始,国内外一些传统的IT厂商纷纷转型云计算,比如国内的阿里云,腾讯云。
随着云计算的出现,传统IT开发也发生了变革,AWS最早推出FAAS(Function as a Service)
功能服务化,运行AWS中运行代码而无需配置或管理服务器,研发只需要关注业务代码,而不再关注技术架构。
云计算的几个重要里程碑:
IaaS
: (Instructure as a Service), 基础设施服务,云服务的底层,主要提供一些基础资源。
SaaS
:(Software as a service) 软件服务,软件的开发,管理,部署都交给第三方,不需要关心技术问题,拿来即用。
PaaS
: 平台服务(platform as a service)开发者只需要关注自己的业务逻辑,不需要关注底层。
容器的出现与容器编排大战
云原生应用架构的几个主要特征:
符合12因素应用
面向微服务架构
敏捷架构
基于API的协作和抗脆弱性
云原生的4个要点:DevOps, 持续集成, 微服务架构和容器化
拆分服务,单独迭代
优点:
降低系统复杂度,独立部署,独立扩展和跨语言编程等优点
缺点:
引入了分布式系统的复杂性,如网络延迟,容错性,消息序列化,不可靠网络,异步机制,版本化和差异化的工作负载等。
其他问题:
服务的可测试性,异步机制,调用链路过长等。
微服务主要有两种实践方式:
侵入式架构:服务框架嵌入程序代码,开发者组合各种组件,如RPC,负载均衡,熔断等。
非侵入式架构:以代理的形式,与应用程序部署在一起,接管应用程序的网络且对其透明,开发者只需关注自身业务即可,以服务网格为代表。
单体架构
远古架构,又称为巨石架构,一个应用包含所有业务代码。
优点:
易于搭建,开发,测试,适合个人小项目
缺点:
不易扩展,进行局部改动就需重新部署
垂直分层架构
为了提高机器利用率和性能,单体架构会演化为垂直架构。
将大应用拆分成一个个单体结构的应用,MVC模式就是典型的垂直分层架构。
优点:
项目架构简单,前期开发成本低并且周期短,是小型项目的首选。
缺点:
拆分后的单体架构之间存在数据冗余,耦合性加大等问题。系统性能扩展只能通过扩展集群结点实现,成本高有瓶颈。
SOA面向服务架构
当垂直架构拆分应用越来越多,就会出现多个应用都依赖的业务逻辑组件,这时就会出现云服务商提供自身的PaaS组件服务。
其他小型企业可以使用这些PaaS服务,SOA架构诞生。
SOA架构的关键是建立企业服务总线,外部应用通过企业服务总线调用服务。
服务消费者通过发送消息给服务总线转发至适当的服务实现。
该架构提供一个业务规则引擎(Enterprise Service Engine),该引擎容许业务规则被合并在一个服务里或多个服务里。
提供服务管理基础架构,用来管理服务,提供类似审核,列表,日志等功能
优点:
缺点:
微服务架构
特点:
优点:
缺点:
云原生架构
云原生四要素:微服务,容器化,DevOps和持续交付
云原生的PaaS产品可以为整个服务开发,发布和运维过程提供支持:
Codeless
:提供源码托管功能,开发人员不需要关心代码库的问题
Applicationless
: 工程师不需要申请发布权限,也不需要知道代码如何发布
Serverless
: 工程师不需要关心机器资源,弹性扩容
Go 语言的独特优势
Go kit 微服务框架
该框架主要由三个部分组成:
传输层:用于网络通信,服务通常使用HTTP或gRPC等网络传输方式,或使用NATS等发布订阅系统相互通信
接口层:服务器和客户端的基本构件块。每个接口定义为端点,以便于在服务器和客户端之间进行网络通信。
每个端点使用传输层通过使用HTTP或gRPC等具体通信模式对外提供服务。
服务层:具体的业务逻辑实现。
Go Micro 微服务框架
组件化的框架,每一个基础功能都有对应的接口抽象,方便扩展。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mJwUmNEg-1627951496316)(https://i.loli.net/2021/08/02/IxAnpfj8ZKCySVX.png)]
上层基于下层功能继续向上提供服务
【老生谈算法】基于matlab的运动目标识别与跟踪系统设计与算法原理及程序源码——目标识别算法
使用“Opencv“时遇到terminate called after throwing an instance of ‘cv::Exception‘问题的解决方案
【JavaScript】手撕前端面试题:手写new操作符 | 手写Object.freeze
vscode import别名(如@)文件无法ctrl+左键跳转
图深度学习——简单的图嵌入,图嵌入的通用框架和保留不同信息的图嵌入方法:DeepWalk,LINE,Node2vec,Struc2vec,模块度
garbor 特征 matlab,Gabor小波滤波用于纹理特征提取
《SpringBoot系列十四》:@ConditionalOnBean、@ConditionalOnMissingBean注解居然失效了
横空出世!SpringBoot应用自动化部署神器,IDEA版Jenkins?