IaaS之计算

1.1 IaaS概述

IaaS(Infrastructure as a Service )提供托管的 IT 基础架构,供用户调配处理能力、存储、网络和其他基础计算资源。IaaS 提供商运行并管理此基础架构,用户可以在此基础架构上运行选择的操作系统和应用程序软件。

在云平台中还会涉及以下概念:

  1. PaaS:平台即服务。对应于上面所说的提供常用的技术组件方便系统的开发和维护;
  2. SaaS:软件即服务。对应于上面所说的提供开发好的应用或服务,按功能或性能要求付费。
  3. Faas:函数即服务。服务商提供一个平台,允许客户开发、运行和管理应用程序功能,而无需构建和维护通常与开发和启动应用程序相关的基础架构。

1.2 服务部署演进历程

  1. 应用拆分

按照业务功能来划分应用服务,整个职责更清晰,相互之间可以做到独立升级迭代。应用之间可能会涉及到一些公共配置,可以通过分布式配置中心Zookeeper来解决。

架构瓶颈:

不同应用服务之间存在共用的组件,会导致相同代码存在多份,公共功能升级时全部应用代码都要跟着升级。

比如说JSON字符串处理组件, 加密处理组件等。

  1. 微服务应用

如用户管理、订单、支付、鉴权等功能在多个应用中都存在,那么可以把这些功能的代码单独抽取出来形成一个单独的服务来管理, 比如说加密封装,鉴权处理接口等。

微服务架构,应用和服务之间通过HTTP、TCP或RPC请求等多种方式来访问公共服务,每个单独的服务都可以由单独的团队来管理。

在服务治理层面, 可以通过SpringCloud等框架实现服务治理、限流、熔断、降级等功能,提高服务的稳定性和可用性。

架构瓶颈:

不同服务的接口访问方式不同,应用服务可能需要适配多种访问方式, 才能使用服务,应用服务之间也可能相互访问,调用链将会变得非常复杂冗长,逻辑变得混乱。

  1. 企业服务总线ESB

应用统一通过ESB来访问后端服务,服务与服务之间也通过ESB来相互调用,以此降低系统的耦合程度。

使用企业消息总线来解除服务之间耦合问题的架构,就是所谓的SOA(面向服务)架构,这种架构与微服务架构容易混淆,因为表现形式比较相似。

微服务架构更多是指把系统里的公共服务抽取出来单独运维管理的思想,而SOA架构则是指一种拆分服务并使服务接口访问变得统一的架构思想,SOA架构中包含了微服务的思想。

架构瓶颈:

业务不断发展,应用和服务都会不断变多,应用和服务的部署变得复杂,同一台服务器上部署多个服务还要解决运行环境冲突的问题。

对于如大促这类需要动态扩缩容的场景,需要水平扩展服务的性能,就需要在新增的服务上准备运行环境,部署服务等,运维将变得十分困难。

  1. 容器化技术

目前最流行的容器化技术是Docker,最流行的容器管理服务是Kubernetes(K8S),应用/服务可以打包为Docker镜像,通过K8S来动态分发和部署镜像。

Docker镜像可理解为一个能运行你的应用/服务的最小的操作系统,里面放着应用/服务的运行代码,运行环境根据实际的需要设置好。

把整个“操作系统”打包为一个镜像后,就可以分发到需要部署相关服务的机器上,直接启动Docker镜像就可以把服务起起来,使服务的部署和运维变得简单。

架构瓶颈:

使用容器化技术后服务动态扩缩容问题得以解决,但是机器还是需要公司自身来管理,在非大促的时候,还是需要闲置着大量的机器资源来应对大促,机器自身成本和运维成本都极高,资源利用率低。

  1. 云平台

系统可部署到公有云上,利用公有云的海量机器资源,解决动态硬件资源的问题

在大促的时间段里,在云平台中临时申请更多的资源,结合Docker和K8S来快速部署服务,在大促结束后释放资源,真正做到按需付费,资源利用率大大提高,同时大大降低了运维成本。

所谓的云平台,就是把海量机器资源,通过统一的资源管理,抽象为一个资源整体

在云平台上可按需动态申请硬件资源(如CPU、内存、网络等),并且之上提供通用的操作系统,提供常用的技术组件(如Hadoop技术栈,MPP数据库等)供用户使用,甚至提供开发好的应用

用户不需要关心应用内部使用了什么技术,就能够解决需求(如音视频转码服务、邮件服务、个人博客等)。

1.3 云虚拟机

  • 介绍
  1. 阿里云ECS

    ECS(Elastic Compute Service)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。

  2. 亚马逊EC2

    EC2(Amazon Elastic Compute Cloud),是一种 Web 服务,能在云中提供安全且可调整大小的计算能力。该服务旨在让开发人员能够更轻松地进行 Web 规模的云计算。

  3. 腾讯云CVM

    CVM(Cloud Virtual Machine),提供安全可靠的弹性计算服务,可以在云端获取和启用 CVM,来实现计算需求。随着业务需求的变化,可以实时扩展或缩减计算资源。

  • 云虚拟机对比
  1. 性能评测:

(累计值越小, 综合排名越高。)

  1. 成本对比:

1.4 云虚拟机如何选型

  1. 虚拟机类型

    主要类型对比:

    类型 AWS代号 阿里云代号 腾讯云代号
    通用型 M G S
    计算型 C C C、CN
    内存型 R R M
    GPU计算型 P GN AMD、NVIDIA
    存储型 I、D I、D D

    阿里云还包含: 本地SSD型、高主频型、FPGA计算型、NPU计算型、超级计算集群(SCC)、弹性裸金属服务器(自研新一代云服务器)等。

官方参考

腾讯云还包含: 高 IO 型实例族、批量型实例族等。

官方参考

  1. 代别更新

    随着虚拟化技术不断发展, 云厂商需要不断地对虚拟机进行更新:

    1. 硬件方面, 比如CPU的换代, 内存升级等;

    2. 软件层面,比如内核的改进,虚拟化技术的提升等。

  2. 实例配置

    实例按业界标准划分为micro、small、medium、large、xlarge。

    类型 vCPU 内存
    micro 1 1
    small 1 2
    medium 2 4
    large 2 8
    xlarge 4 16
    2xlarge 8 32

1.5 云虚拟机的创建操作

  1. 选择虚拟机类型

如果测试, 可以选取抢占实例, 节省成本。

  1. 网路和安全组配置

  2. 系统配置

  1. 分组设置

  1. 远程连接

通过远程连接可以直接进行操作, 一般会采用远程连接工具进行管理, 比如VNC或SSH连接工具。

如果需要节省成本, 可以选择“停机不收费”, 但不能保障稳定性。

1.6 服务部署访问

  1. 开通80端口访问权限

    在网络与安全 -> 安全组里面, 新增配置:

  1. 安装JDK

    yum -y install java-1.8.0-openjdk.x86_64
    
  2. 打包服务

    maven clean install
    
  3. 配置服务器连接

    直接通过外网IP访问:

  1. 运行服务

    java -jar app-basic.jar
    
  2. 访问验证

    http://47.104.9.75:10692/getOrder

本文由传智教育博学谷 – 狂野架构师教研团队发布
如果本文对您有帮助,欢迎关注和点赞;如果您有任何建议也可留言评论或私信,您的支持是我坚持创作的动力
转载请注明出处!