抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

AWS Cloud Map:轻松创建和维护应用程序的自定义地图

2019 年 10 月 14 日

AWS Cloud Map:轻松创建和维护应用程序的自定义地图

目前,各家公司正越来越多地将其应用程序构建为微服务(众多单独的服务,每项服务仅执行一项作业)。微服务通常使公司可以更快地进行迭代和部署。基于微服务的此类现代应用程序有许多使用各类云资源构建而成,并部署在动态变化的基础设施上。以前,您必须使用配置文件才能管理应用程序资源的位置。但是,在基于微服务的应用程序中,依赖项很快就会变得过于复杂,无法通过配置文件轻松管理。此外,许多应用程序使用动态扩展容器构建而成,可响应流量负载的变化。这会提升应用程序的响应速度,但也会带来一类新问题,那就是现在您的应用程序组件需要在运行时发现并连接上游服务。对于动态变化的基础设施和微服务中的这一连接问题,通常通过服务发现予以解决。


AWS Cloud Map 简介



AWS Cloud Map 会跟踪您的所有应用程序组件,以及这些组件的位置、属性和运行状况。现在,您的应用程序使用 AWS SDK、API 甚至 DNS 即可查询 AWS Cloud Map,以发现其依赖项的位置。这使您的应用程序可以动态扩展并直接连接到上游服务,从而提高应用程序的响应能力。


在 AWS Cloud Map 中注册 Web 服务和云资源时,可以使用自定义属性(如部署阶段和版本)对其进行描述。然后,您的应用程序可以发出发现调用,指定所需部署阶段和版本。AWS Cloud Map 将返回与提供的参数匹配的资源位置。它可以简化部署,并降低应用程序的操作复杂性。


对 AWS Cloud Map 中注册的基于 IP 的资源进行集成运行状况检查时,会自动停止将流量路由到运行状况不佳的终端节点。此外,您还可以使用 API 来描述服务的运行状况,以便了解基础设施的潜在问题。这样可以提高应用程序的弹性。


AWS Cloud Map 实际应用


AWS Cloud Map 的入门非常简单。您可以使用 AWS 控制台或 CLI 创建命名空间,例如 myapp.com。对于此示例,我将使用 CLI。让我们创建一个命名空间:


aws servicediscovery create-public-dns-namespace --name myapp.com (http://myapp.com/)
复制代码


此时,需要决定是否希望应用程序仅通过 AWS SDK 和 API 调用发现资源,或者是否需要通过 DNS 进行可选发现。为命名空间启用 DNS 发现时,需要为注册的所有资源提供 IP 地址。如果您计划注册其他云资源(例如 ARN 的 DynamoDB 表或 Amazon API Gateway 上部署的 API 的 URL),则需要选择 API 发现模式。


创建命名空间后,就可以创建服务了。服务代表您的应用程序组件,例如用户、身份验证或付款,并且可以包含许多动态变化的资源。您可以为您的服务指定一个友好的名称,然后选择 DNS 发现和运行状况检查选项。您可以创建这样的服务:


aws servicediscovery create-service --name frontend --namespace-id %namespace_id%”
复制代码


创建服务后,您可以使用自定义属性注册服务实例:


aws servicediscovery register-instance --service-id %service_id% --instance-id %id%--attributes AWS_INSTANCE_IPV4=54.20.10.1,stage=beta,version=1.0,active=yes
aws servicediscovery register-instance --service-id %service_id% --instance-id %id%--attributes AWS_INSTANCE_IPV4=54.20.10.2,stage=beta,version=2.0,active=no
复制代码


现在,您的应用程序可以执行 API 调用以发现服务实例,同时选择性地提供查询参数以筛选结果:


aws servicediscovery discover-instances --namespace-name myapp.com --service-name frontend --query-parameters version=1.0,active=yes-->{"Instances": [{"InstanceId": "1","NamespaceName": "myapp.com","ServiceName": "users","HealthStatus": "HEALTHY","Attributes": {"version":"1.0","active":"yes","stage":"beta","AWS_INSTANCE_IPV4": "54.20.10.2" }}]}
复制代码


就这么简单! Amazon Elastic Container Service (ECS) 和 AWS Fargate 与 AWS Cloud Map 紧密集成。创建服务并启用服务发现时,所有任务实例会自动在扩展时在 AWS Cloud Map 中注册,在缩小时注销。ECS 还通过将始终最新的运行状况信息发布到 AWS Cloud Map,确保仅在发现调用上返回运行状况良好的任务实例。


对于 Amazon Elastic Container Service for Kubernetes (EKS) ,您可以在 AWS Cloud Map 中自动发布在 EKS 中运行服务的外部 IP。为此,我们发布了一个开源项目 ExternalDNS 的更新,以便可以通过 AWS Cloud Map 发现 Kubernetes 资源。您可以在此处找到有关 Kubernetes 外部 DNS 的更多详细信息。


目前一般可用


您可以使用 AWS Cloud Map 开始构建应用程序,立即享用与 Amazon ECS 和 EKS 的集成、丰富且安全的 API 查询界面、无处不在的 DNS 名称解析以及集成的运行状况检查支持。想要尝试吗? 请前往 https://console.aws.amazon.com/cloudmap/home. 如需测试与 ECS 的集成,请前往 https://console.aws.amazon.com/ecs/home,并启用“服务发现”以开始测试。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/aws-cloud-map-easily-create-and-maintain-custom-maps-of-your-applications/


2019 年 10 月 14 日 15:29349
用户头像

发布了 1286 篇内容, 共 39.4 次阅读, 收获喜欢 42 次。

关注

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布
暂无评论
发现更多内容

厉害了!这群95后正在用三维成像技术让科幻变成现实

华为云开发者社区

视频 华为云 三维 裸眼 光学

【LeetCode】重塑矩阵Java题解

HQ数字卡

算法 LeetCode 2月春节不断更

LeetCode题解:1091. 二进制矩阵中的最短路径,BFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

面试的季节到了,老哥确定不来复习下数据结构吗

Silently9527

面试 数据结构与算法

哲少荐书:鞋狗

Jackey

书籍推荐

端口隔离和VLAN的区别

区块链挖矿系统APP开发|区块链挖矿软件开发(现成)

v16629866266

心理声学基础

行者AI

心理 音乐

ElasticSearch.04 - 基础操作

insight

elasticsearch 2月春节不断更

14. Python 与数据库那点事儿,滚雪球学 Python

梦想橡皮擦

python 爬虫 2月春节不断更

阿里云大佬爆裂推荐“redis全新手册”,内容即精华

比伯

Java redis 程序员 架构 程序人生

字幕组时代落幕,翻译的未来可能是?

字节跳动技术团队

一维数组的动态和

小马哥

算法

话题讨论 | 如何使用“网站SEO”,让网站排在最前面?

魔王哪吒

前端 后端 话题讨论 SEO 2月春节不断更

日记 2021年2月18日(周四)

Changing Lin

2月春节不断更

【函数计算实践】nodejs初探示例——本地mac环境

程序员架构进阶

架构 nodejs 函数计算 七日更 2月春节不断更

Elasticsearch mapping 复杂数据类型

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

华为云FusionInsight MRS在金融行业存算分离的实践

华为云开发者社区

大数据 金融 华为云 存算分离 FusionInsight MRS

不满于CRUD,五面阿里成功斩获Offer!鬼知道我怎么过来的!

程序员小毕

Java 程序员 面试 分布式 微服务

2021程序员修炼内功必备:阿里新产Java并发编程原理笔记(全彩版)限时开源!

程序员小毕

Java 程序员 面试 多线程 高并发

2021新年最新分享:阿里Java岗5轮技术面经整理

比伯

Java 编程 架构 面试 程序人生

用例文档

三生赤水

如何 1 天快速集成自己的“Clubhouse”?

融云 RongCloud

音视频 clubhouse 语音社交 融云

【STM32】EXTI---外部中断/事件控制器

AXYZdong

硬件 stm32 2月春节不断更

什么是阻抗?

不脱发的程序猿

阻抗 电路设计 电子元器件

Java中多线程启动,为什么调用的是start方法,而不是run方法?

云流

Java 编程 架构

被说烂了的Java垃圾回收算法,我带来了最“清新脱俗”的详细图解

Crud的程序员

Java 架构

3.Fiber(我是在内存中的dom)

全栈潇晨

React React Hooks react源码

门诊数字化:患者信息识别方式

boshi

医疗 数字化基础 七日更

算法从有序数组中移除重复的数据,AI学习资源2020 John 易筋 ARTS 打卡 Week 38

John(易筋)

ARTS 打卡计划 ai youbute学习资源

第 4 周作业

老元宵

Study Go: From Zero to Hero

Study Go: From Zero to Hero

AWS Cloud Map:轻松创建和维护应用程序的自定义地图-InfoQ