揭开云的面纱,OpenAPI服务分析

简介: 在上一篇《揭开云的面纱,从云的语言OpenAPI开始》从语言的视角对OpenAPI做了一个案例分析RunInstance。不难发现:RunInstances包含了 计算、存储、网络、安全等核心“部件”,符合“冯诺依曼结构”。对应单个服务器,由计算、存储、网络、安全融合为一个“硬件+软件“的台式机。在云原生环境下,云服务器变成了由分布式的计算池、存储池、网络池、安全服务等通过‘微服务’组装成云上的‘服务器‘,依然符合’冯诺伊曼‘架构’。那么这些微服务,提供计算、存储、网络等是如何‘粘合’一起,完整地支持OpenAPI的服务器请求处理的呢?下面进行分析。

入口分析

揭开云的面纱,从云的语言OpenAPI开始》
从语言角度切入介绍OpenAPI的特征。对应OpenAPI的另外一个入口就是ECS 控制台页面,从控制台页面可以友好地、点点鼠标完成云商品-ECS计算实例购买。而控制台页面最为精简、友好的页面,当之无愧的是“新人首次”进入的提示页面和相关流程。截图如下:
image.png

image.png

从上图不难发现有几个和商品相关的“显现”信息:
信息1: 产品规格
信息2: 操作系统
信息3: 网络带宽
信息4: 云盘大小
信息5: 产品规格族
信息6: 产品所在地域
信息7: 协议
信息8: 购买(或免费试用)

对比完整的非新用户,使用向导创建实例
一共有5个步骤,抽象下如下图所示
image.png

总结:

云算力商品ECS实例,其实还是依赖了很多“信息”的。这些信息的综合请求,构成一次下单购买的后端各种服务的“存在”。

链路抽象

云服务商品在线购买(无须物流运输),典型的web服务模式。那么web服务模式,就离不开典型[LAMP架构的基本要素](https://blog.51cto.com/xxrenzhe/1381844)。

早些时候简单的web应用完全可以follow 经典的LAMP模式搭建。如今,在微服务化架构普遍使用的背景下。典型的综合性页面的架构基本要素更加丰富。Microservices Architecture for Modern Digital Platforms
结合LAMP、微服务以及ECS购买入口信息,下面给出ECS的微服务一种示意图,用于表达:ECS购买页面背后的一些关键功能模块。注意这里省略了中间件的一些信息。本文重点在OpenAPI背后的“功能”分析。

image.png

部分功能的探讨

整个云服务后面一个庞大的体系,本文仅就作者个人观察或者接触思考的点做一个抛砖引玉。

服务链接协议

不难发现,服务链接协议有多层,服务协议链接内外部的系统。例如,用户与平台之间的协议。这里典型的就是OpenAPI透露的信息。如RunInstances
这一层协议典型的要求:功能向后兼容、功能原子性、功能可重入(也就是幂等性)、功能安全性、语言无关性(多语言的支持)等。

例如,平台内部组件之间的协议。从阿里云公开的资源[云原生架构白皮书](https://developer.aliyun.com/article/768699)不难发现,平台内部组件之间的协议典型如:
Apache Dubbo
Spring Cloud
Eclipse MicroProfile
Tars
SOFAStack
Dapr

微服务部分技术点的选择

技术点 优势 劣势
队列 为什么要使用队列?队列带来的优点:如可以做到对请求任务有序处理、优先级处理、高吞吐量(异步并行化处理) 需要持久化做到万无一失
事件驱动 为什么要使用事件驱动?事件驱动带来的优点:如可以接偶系统,对大型系统的高效演进、协作非常有帮助。准实时响应 事件的依赖关系处理
状态驱动 为什么要使用状态驱动?典型的面向服务的场景下,根据业务状态进行动作的执行。类似形式化语言 如编译原理的状态机工作原理 需要定义和掌握所有的状态和变化关系
轮询驱动 为什么要使用轮询驱动?持久化异步并行处理,可以实现最终一致性。如工作流 受任务量的突发性,可能导致部分任务等待时间过长
演进式驱动 为什么要使用演进式驱动?往往这组织、发展决定了系统很难一步设计到位,多半是随着业务发展而发展,带着这或那的问题演进 问题不到非解决不可的时候,很难停下来做重构、优化

这里带给我们的思考:
云这种长周期、在线服务的输出,要求服务向后兼容性(客户服务使用,不同于互联网的有些免费使用场景),同时支持业务发展。面临时间越久,积淀的包袱越多,在软件中的各种各样的“补丁”会严重拖累研发效能和功能的质量。

难点和挑战

并发
这是分布式系统天生面临的问题。总会在系统的某个地方需要采用锁服务,乐观锁或者悲观锁。在大型分布式系统中,在那个节点加锁、加什么锁,对整体性能影响还是满关键的。目前,业界需要一种自动检测、优化,系统的最佳加锁的位置和类型。

分布式一致性
CAP 在大型分布式系统中,不同的场景有不同的取舍。其中,通过存储一致性解决业务一致性是非常好的解决方案。例如:任务从A到B到C,可以依赖数据存储的状态变化来管理页面状态的变化,实现分布式一致性。例如:分布式抢锁服务,依赖分布式锁服务实现:分布式存储一致性。

确定性
确定性这里一方面是:请求身份的唯一性、合法性保障,另外一方面是重复请求的幂等性。
在遇到异常的情况下,资源或者数据的回滚、清理非常重要。越是成熟的系统,越害怕异常的出现。因为成熟系统中的异常,排查更加复杂,成本更大。

稳定性
毫无疑问稳定性从没过时,并且只要系统发生变更,稳定性就可能面临威胁。可能目前最好的防范就是:不停地人为制造一些问题,时不时做演练,锤炼系统的稳定性。

总结

本文从ECS实例购买入口分析起,给出后端功能的抽象分析和拆解,并对支撑这种拆解的微服务部分技术点做分析。整体上可以帮助大家对ECS OpenAPI、背后功能实现有一个概括性的认识。

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
Java API 微服务
【Spring Boot系列】通过OpenAPI规范构建微服务服务接口
【4月更文挑战第5天】通过OpenAPI接口构建Spring Boot服务RestAPI接口
195 0
|
2月前
|
人工智能 自然语言处理 API
深度融合与创新:Open API技术促进AI服务生态构建
【7月更文第21天】在数字化转型的浪潮中,人工智能(AI)已从概念探索走向实际应用,深刻改变着各行各业。Open API(开放应用程序接口)作为连接技术与业务的桥梁,正成为推动AI服务普及和生态构建的关键力量。本文将探讨Open API技术如何通过标准化、易用性和灵活性,加速AI服务的集成与创新,构建一个更加丰富多元的AI服务生态系统。
82 2
|
4月前
在使用阿里云OpenAPI的翻译服务时,下载地址的使用是有一定要求的
在使用阿里云OpenAPI的翻译服务时,下载地址的使用是有一定要求的【1月更文挑战第17天】【1月更文挑战第83篇】
74 5
|
4月前
在使用阿里云OpenAPI的翻译服务时
在使用阿里云OpenAPI的翻译服务时【1月更文挑战第15天】【1月更文挑战第74篇】
41 2
|
存储 弹性计算 安全
揭开云的面纱,从云的语言OpenAPI开始
前面博主汇总了主流云厂商的公开的技术资料,也对云的关键技术按分层做了梳理,其中虚拟化、调度、管控构成了三项基础、核心的服务和功能。所有这些技术最终通过云的语言:OpenAPI表达出来。把OpenAPI看作云的语言,意味着OpenAPI具备语言的基本特性,如指向性、描述性、逻辑性、交际性、传播性、名族性。同时,我们知道语言具备创造性、结构性,使用语言时候要求:具体、准确、简练。本文就尝试从语言的这些特性来分析、学习云的OpenAPI。
505 1
揭开云的面纱,从云的语言OpenAPI开始
|
域名解析 JSON 网络协议
利用阿里云 OpenAPI 以及 DNS 云解析自建 DDNS 动态域名解析服务
家里闲置着一台老款的Mac mini Server,跑OS X越来越慢,索性装上了Cent OS 7,变成了一台家庭服务器,装上了Plex媒体服务器和Transmission下载服务,同时,也装上了Nginx、Mysql、MongoDB、Redis等,可以调试代码,甚至担当一些小型项目的服务器。 不过,只在家庭内网使用,功能太有限,于是接下来面临的一个问题就是内网穿透。使用过花生壳和花生棒,服务相当不稳定,而且种种受限,每要多加一个端口就要多花钱,安全性也有问题。
4860 0
利用阿里云 OpenAPI 以及 DNS 云解析自建 DDNS 动态域名解析服务
|
分布式计算 DataWorks BI
DataWorks OpenAPI实现数据资产分布和排行分析
3.1 资产总览: odps项目数量, 表数量,分区表数量,表总大小 3.2 资产分布 按工作空间划分、按所有者划分 3.2(b) 资产分布 按工作空间(名称)划分、按所有者(nick)划分
1993 0
DataWorks OpenAPI实现数据资产分布和排行分析
|
4月前
|
JavaScript API 开发工具
阿里云OpenAPI AssignJobs返回404错误可能有以下几个原因:
【2月更文挑战第20天】阿里云OpenAPI AssignJobs返回404错误可能有以下几个原因:
136 1
|
4月前
|
域名解析 弹性计算 tengine
阿里云DNS常见问题之阿里云OpenAPI判断域名的dns服务器是否在阿里云失败如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
4月前
|
JSON 数据格式
在使用阿里云OpenAPI时获取和打印错误信息的基本步骤
在使用阿里云OpenAPI时获取和打印错误信息的基本步骤【1月更文挑战第8天】【1月更文挑战第39篇】
226 4