6

我目前正在绘制一个新的服务云,我们正在使用面向服务的架构构建。这个想法是这样的:

  • 一个云,比如说 10 个服务。
  • 3 个完全不同的业务逻辑层 (BL),可以自由混合和匹配这些服务。
  • BL 处理授权和访问管理,服务只接收和响应。

问题是这种设置是否可以通过 PaaS(最好是 Heroku 或 Google App Engine)实现,主要问题是拥有多个非公开但同时可从不同应用程序 (BL) 访问的服务。

基本上:如何保护服务免受公共访问(最好没有身份验证和令牌),但同时让我的任何应用程序访问它们?

在此处输入图像描述

4

2 回答 2

2

您可能想要查看 WSO2 Cloud。它由一个 App Cloud 和一个 API Cloud 组成。对于您的场景,您可以使用 WSO2 API Cloud 隔离您的服务云。您可以向 WSO2 API Cloud 公开您的服务云,并仅向您的租户域提供一些 API。在 WSO2 App Cloud 中,您可以部署可公开访问的应用程序,这些应用程序可以使用与您的域隔离的服务云 API。

此外,WSO2 App Cloud 不仅是托管解决方案,它还为您提供了一个开发平台。您可以从头开始开发服务和应用程序。它为您提供构建设施、数据库配置、编辑器等。

以上两种云都具有自动缩放功能(您无需担心)。应用云为您提供了一个开发、测试和生产环境来管理您的应用/服务生命周期。WSO2 API Cloud 不仅允许您在开发者社区中创建、管理和发布您的 API,还允许您在云中共享它们

更多信息可以在 https://docs.wso2.com/display/AppCloud/WSO2+App+Cloud+Documentation https://docs.wso2.com/display/APICloud/WSO2+API+Cloud+Documentation找到

请注意,WSO2 Cloud 目前是一个测试版服务。

免责声明:我为 WSO2 Cloud 工作。

于 2014-09-27T14:44:32.770 回答
1

对于 App Engine 中的 SOA,我会查看https://cloud.google.com/appengine/docs/python/microservices-on-app-engine

在 GAE 中,人们使用完全不同的项目或项目中的不同“模块”作为服务,这些可以具有不同的“版本”,例如 AB 测试和更容易的回滚。

一个模块及其不同的版本都有单独的 url 并使用 HTTP。

使用模块确实意味着您最终会获得一个共享的全局数据库,您必须记住不要以最终获得“共享数据库架构”的方式构建事物,例如,每个服务库都应该是实现这一目标的唯一方法服务数据(尽量不要通过 http 接口/数据访问层直接进入服务数据库,因为您将能够做到)。

对于任务队列等其他事物也是如此,您将能够让模块使用彼此的队列,并且您应该保持警惕并为每个模块队列使用不同的命名空间。

对于 Heroku,我想你可以有一个类似的选择,要么使用完全不同的 Heroku 项目,这些项目使用一个配置了环境变量的共享库,以与另一个共享的 Heroku 项目与其他代码进行对话,或者一个大的 Heroku 项目。Heroku 相当强烈地遵循http://12factor.net/并且很好地设置为使用其他人的微服务和插件

于 2013-11-08T05:02:56.787 回答