百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

使用GraphQL和Oracle NoSQL数据库云服务部署容器化视频应用程序

sinye56 2024-10-20 13:39 9 浏览 0 评论

想象一下,您正在使用一款点播式视频流应用程序。它向全球各地的客户提供多种节目。这些节目可能包含多个季度,每个季度又有多个剧集。您需要一个现代化的、持久性的元数据存储系统来跟踪客户的活动。


通常,客户感兴趣的是追踪他们观看的剧集、每集的观看时间、观看的季度总数等信息。此外,客户还希望流媒体应用能够从他们上次观看停止的地方开始播放——毕竟,谁愿意从头开始呢?


本架构将带您了解由多个微服务组成的点播式视频流应用程序,这些微服务使用了各种Oracle Cloud Infrastructure服务。在这个架构中,重点是一个活动跟踪微服务。流应用程序的后端收集数据,以生成诸如最受欢迎的节目和每个节目的平均观看时间等报告。


架构

该应用程序采用了三层架构,代表了应用程序的核心智能。这些服务的特点使您能够构建一个无服务器的生产应用程序,该应用程序具有高可用性、可扩展性和安全性。应用程序可以使用成千上万的服务器,然而,通过利用无服务器范式,您无需管理任何服务器。


近年来,REST已成为设计Web API的标准。REST架构风格允许在无状态服务器上运行,并提供对资源的结构化访问。然而,当跟上访问它们的客户端迅速变化的需求时,REST API已显示出不灵活性,例如移动使用的增加、低功耗设备和网络质量差。


针对这些应用程序,我们寻找了一种解决方案,旨在最小化网络上传输的数据量,并允许用户通过直接使用API轻松查询数据。


GraphQL是一个用于API的开源数据查询和操作语言,您可以用多种不同的语言编写。GraphQL为您的API中的数据提供了完整且易于理解的描述,同时提供运行时能力,以使用现有数据满足查询需求。虽然GraphQL经常被误解为数据库技术,但它并不依赖于任何特定的数据库或存储引擎,而是由您现有的数据支持。


面对决定何时以及如何持久化数据的问题时,现代应用程序开发者有许多选择。近年来,NoSQL数据库越来越受欢迎,现在被视为每个应用程序开发者必须掌握的必备工具之一。虽然“久经考验”的关系型数据库在解决经典应用程序问题(如数据规范化、严格一致性以及访问数据的任意复杂查询)方面表现出色,但NoSQL数据库采取了不同的方法。


运行容器化应用程序可能需要大量开销,包括实例化虚拟机、安装运行容器映像的组件(以及支持它们的所有依赖项,包括软件和操作系统更新),以及监控应用程序以确保它们运行最佳、可用且未受到威胁。


作为开发者,您可以连接到Oracle NoSQL数据库云服务,并使用多种语言提供的NoSQL SDK来操作NoSQL表。Oracle Cloud Infrastructure Container Instances是一个完全托管的服务,适用于不需要像Kubernetes这样的容器编排平台来部署GraphQL应用程序的容器化工作负载。当您的开发团队希望可靠地构建、部署和管理云原生应用程序时,请使用Oracle Cloud Infrastructure Container Engine for Kubernetes(OKE)。Oracle Cloud Infrastructure API Gateway使您能夠发布具有私有端点的API,这些端点可以从您的网络内部访问,并在您希望它们接受互联网流量时公开公共IP地址。端点支持API验证、请求和响应转换、CORS、认证/授权和请求限制。这一切都提供了无服务器体验,让客户可以专注于为他们的应用程序增加价值,而不是部署和管理基础设施。


以下是使用Oracle NoSQL数据库云服务的一些好处:


数据建模:

Oracle NoSQL数据库云服务支持基于模式和无模式(JSON)的建模。它提供了一种直观的方式来开发基于GraphQL的应用程序。GraphQL架构使用嵌套数据结构设计,与开发者在进行NoSQL数据建模时所使用的匹配。这是一种天然的选择。


更快的开发周期:

开发者编写他们的应用程序。Oracle负责数据库管理、存储管理、高可用性和可扩展性,以帮助开发者专注于交付高性能应用程序。开发者部署和管理表或表层级结构,而不是他们的GraphQL微服务的集群或数据库。


身份访问和管理:

Oracle NoSQL数据库云服务使用Oracle Cloud Infrastructure身份和访问管理来提供对Oracle Cloud的安全访问。Oracle Cloud Infrastructure身份和访问管理使您能够创建动态组,并授权检查、读取、使用或管理Oracle NoSQL数据库云服务表。


数据安全性和冗余:

Oracle NoSQL数据库云服务将数据存储在多个可用性域(AD)或单一AD区域的故障域(FD)中。如果AD或FD不可用,用户数据仍然可以从另一个AD或FD访问。对区域端点的请求不特定于AD/FD,因此AD/FD的不可用性是透明的。


高性能和可预测性:

Oracle NoSQL数据库云服务利用Oracle Cloud Infrastructure中的最新组件技术,提供大规模高性能。开发者知道,他们的应用程序即使在吞吐量和存储需求增加时,也能以可预测的延迟返回数据。


全面托管,零管理:

开发者无需管理数据服务器或底层基础设施和安全性。Oracle维护硬件和软件,使开发者能够专注于构建应用程序。


按需吞吐量和存储配置:

Oracle NoSQL数据库云服务可根据应用程序的吞吐量性能要求进行扩展,延迟低且可预测。随着业务周期性波动的工作负载增加,应用程序可以增加其配置的吞吐量,以保持一致的用户体验。随着工作负载的减少,同样的应用程序可以降低其配置的吞吐量,从而降低运营开支。通过按需容量,您无需为每个表配置读取或写入能力。您只需为实际消耗的读取和写入单位付费。


下图说明了这一参考架构。


架构包含以下组件:


租户

当您注册Oracle Cloud Infrastructure时,Oracle会在Oracle Cloud内为您设置一个安全且独立的分区,即租户。您可以在您的租户内创建、组织和管理您在Oracle Cloud中的资源。

租户可与公司或组织等同。通常,一家公司会有一个租户,并在该租户内反映其组织结构。单个租户通常与单个订阅关联,而单个订阅通常只有一个租户。


区域

Oracle Cloud Infrastructure区域是一个地理上的本地化区域,包含一个或多个数据中心,称为可用性域。区域彼此独立,它们之间可能相隔很远(跨越国家甚至大洲)。


分区

分区是Oracle Cloud Infrastructure租户内的跨区域逻辑分区。使用分区来组织Oracle Cloud中的资源,控制对资源的访问,并设置使用配额。要控制对特定分区中资源的访问,您需要定义策略,指定谁可以访问资源以及他们可以执行什么操作。


可用性域

可用性域是区域内独立的、独立运行的数据中心。每个可用性域中的物理资源与其他可用性域的资源相隔离,提供容错能力。可用性域不共享基础设施,如电力或冷却系统,或内部可用性域网络。因此,一个可用性域的故障不太可能影响该区域内的其他可用性域。


故障域

故障域是可用性域内的硬件和基础设施分组。每个可用性域有三个故障域,拥有独立的电源和硬件。当您在多个故障域中分配资源时,您的应用程序可以承受物理服务器故障、系统维护和故障域内的电力故障。

虚拟云网络(VCN)和子网

VCN是您在Oracle Cloud Infrastructure区域内设置的可自定义的软件定义网络。与传统数据中心网络一样,VCN让您完全控制您的网络环境。VCN可以有多个不重叠的CIDR块,您可以在创建VCN后更改它们。您可以将VCN划分为子网,这些子网可以是区域级别的,也可以是可用性域级别的。每个子网包括一个连续的地址范围,不与VCN中的其他子网重叠。您可以在创建后更改子网的大小。子网可以是公共的或私有的。


安全列表

对于每个子网,您可以创建安全规则,指定必须允许进出子网的流量的来源、目的地和类型。


服务网关

服务网关提供从VCN到其他服务(如Oracle NoSQL数据库云服务)的访问。从VCN到Oracle服务的流量通过Oracle网络结构传输,不经过互联网。


互联网网关

互联网网关允许公共子网中的流量与公共互联网之间的通信。


API网关

Oracle API网关使您能够发布具有私有端点的API,这些端点可以从您的网络内部访问,并在需要时暴露给公共互联网。端点支持API验证、请求和响应转换、CORS、认证和授权以及请求限制。


身份和访问管理(IAM)

Oracle Cloud Infrastructure身份和访问管理(IAM)是Oracle Cloud Infrastructure(OCI)和Oracle Cloud应用程序的访问控制平面。IAM API和用户界面使您能够管理身份域和身份域内的资源。每个OCI IAM身份域代表一个独立的身份和访问管理解决方案或不同的用户群体。


策略

Oracle Cloud Infrastructure身份和访问管理策略指定谁可以访问哪些资源,以及如何访问。访问权是在组和分区级别授予的,这意味着您可以编写一个策略,赋予一个组在特定分区或租户内特定类型的访问权限。


NoSQL数据库

Oracle NoSQL数据库云服务使开发人员易于使用文档、列式和键值数据库模型构建应用程序,提供可预测的单位毫秒级响应时间,并具有数据复制功能以提高可用性。该服务提供ACID事务、无服务器扩展、全面安全性以及按需和预配置容量模式的低按使用量定价,包括与本地Oracle NoSQL数据库100%兼容。

容器实例

Oracle Cloud Infrastructure容器实例是一种无服务器计算服务,使您能够立即运行容器,而无需管理任何服务器。


Kubernetes容器引擎

Oracle Cloud Infrastructure容器引擎用于Kubernetes是一个完全托管的、可扩展的、高可用性服务,您可以使用它将容器化应用程序部署到云中。您指定应用程序所需的计算资源,容器引擎用于Kubernetes将它们配置在现有租户的Oracle Cloud Infrastructure中。容器引擎用于Kubernetes使用Kubernetes自动化跨主机集群的容器化应用程序的部署、扩展和管理。



建议

以下建议可以作为一个起点。您的需求可能与这里描述的架构不同。


  • API网关
  • API网关可用于提供初步的筛选和使用控制,例如:
    • 服务认证和授权
    • 服务控制,如速率限制
    • 捕获服务使用分析
  • API网关(而非防火墙或负载均衡器)应执行解决方案感知的路由,以便任何GraphQL功能无法满足的端点都可以被引导到正确的位置。应考虑合理的速率限制,基于后端解决方案支持的最大性能能力以及任何单个服务用户的峰值权益。


考虑因素

部署此参考架构时,请考虑以下因素。

  • 安全性
  • 您应在API网关解决应用程序级别的安全性。您可以通过使用GraphQL指令(例如@auth)解决细粒度的GraphQL特定安全性(例如属性级访问)。

部署

要部署此架构,请按照此Live Lab中的活动跟踪应用程序部署指南进行操作:Oracle NoSQL支持点播应用程序。


开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。


Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。


利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。


Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: