我有一个场景,我必须在AWS ECS上部署多个微服务。我想让服务能够通过每个微服务中开发的API相互通信。我想把前端也部署在AWS ECS上,可以公开访问,也可以与其他部署在AWS ECS上的微服务通信。我怎样才能做到这一点呢?我是否可以使用AWS ECS服务发现,将所有服务都放在一个专用子网中,以启用每个服务之间的通信?我可以使用弹性负载均衡器使前端微服务仅通过HTTP/HTTPS协议在internet上被终端用户访问,同时保持它在私有子网中吗?
AWS负载平衡器(用于公共访问)和Amazon ECS服务发现(用于内部通信)的组合是web应用程序的完美选择。
ECS中内置的服务发现是另一个特性,它使开发动态容器环境变得很容易,而不需要管理应用程序之外的资源。ECS和路由53组合以提供高可用性、完全管理和安全的服务发现
服务发现是一种使用容器的直接IP地址将流量从一个容器发送到另一个容器的技术,而不是像负载均衡器这样的中介。它适用于多种用例:
是的,您可以使用负载均衡器使前端微服务通过Internet被终端用户访问。您可以查看这个图,它显示了ECS中Web应用程序的AWS、LB和服务发现。
您可以看到后端容器,它位于私有子网中,通过ALB服务公共请求,而容器的其余部分则使用AWS服务发现。
Amazon ECS服务发现
@app.route("/")
namespace = os.getenv("namespace")
worker_host = "worker" + namespace
def backend():
r = requests.get("http://"+worker_host)
worker = socket.gethostbyname(worker_host)
return "Worker Message: {]\nFrom: {}".format(r.content, worker)
您可以在这里阅读关于AWS服务发现和用例的更多信息amazon-ecs-service-discovery和
我有一个由两个Symfony应用程序使用的库,该库定义了一组我希望公开的服务(我希望能够通过容器直接检索这些服务)。当我尝试访问一个服务时,我有: 编译容器时,已删除或内联库\Service\DerivedServices\OneSpecific实现"服务或别名。您应该将其公开,或者直接停止使用容器,转而使用依赖注入。 问题是,所述服务是公开的。 基本上有: 一个库\服务\BaseService类
如何在Kotlin中创建一个具有私有getter(或只是没有)但具有公共setter的属性? 不能使用错误: 在我的例子中,原因是Java Interop:我希望我的Java代码能够调用,但不能调用。
问题内容: 我纯粹是出于问题的速度方面而问这个问题。 在对象是私有或公共(Java)时从对象获取值之间在速度上有什么区别? 我知道我可以测试它,但是如果任何人都知道,它就不会受伤:)预先感谢! 问题答案: 公共和私有访问无非就是在编译时确定您是否有权访问变量。在运行时,它们完全相同。这意味着,如果您可以诱使JVM认为您具有访问权限(通过反射,不安全或修改字节码),则可以。公共和私人只是编译时间信息
我正在aws中运行openshift 我有一个主节点和两个节点。如何向aws公共IP公开服务?我可以在内部访问服务: 我怎么把它暴露给公共IP呢?是否可以在openshfit web控制台中完成?我尝试使用https://docs.openshift.com/container-platform/3.4/dev_guide/expose_service/expose_internal_ip_ser
我需要一个代码(更喜欢在pyhton3),知道如何认证和下载URL直接从谷歌文档。
问题内容: 什么时候以及为什么要在类中使用,和函数以及变量?它们之间有什么区别? 例子: 问题答案: 你用: 范围,以使该属性/方法可从任何位置,对象的其他类和实例使用。 当您希望您的属性/方法仅在其自己的类中可见时。 要使属性/方法在扩展当前类的所有类(包括父类)中可见时显示范围。 更多:( 有关全面信息) PHP手册-可见性