海外 谷歌 app api_Google App Engine Java功能和命名空间API

海外 谷歌 app api

功能API

使用Capabilities API,您的应用程序可以检测特定API功能的停机和计划停机时间。 您可以使用此API来检测应用程序何时不可用,然后绕过它来减少应用程序的停机时间。

我们该如何处理呢?

1.优雅:创建一个切入所有数据存储写入的方面,并检查其功能。 失败,出现友好错误消息。
2.不太优雅:在每次写入之前将功能检查添加到存储库代码中。 失败,出现友好错误消息。
3.快速:写过滤器,包装整个事务并检查数据存储写。

我们如何在本地环境中对此进行测试?

1.没有API挂钩。 目前,我无法找到或使用GAE Java代理来测试功能调用。
2.解决方案是使用模拟能力服务创建一个不同的版本,该服务能够返回CapabilityStatus.DISABLED标志并进行测试。

由于时间原因,我选择了快速方法。 稍后,我将尝试重新讨论此问题,并合并AspectJ或Google Juice以利用各个方面来解决这一明显的跨领域问题。

Map<Capability, Boolean> apis = new HashMap<Capability, Boolean>();

public void init(FilterConfig filterConfig) throws ServletException {
    apis.put(Capability.DATASTORE, true); 
    apis.put(Capability.MEMCACHE,  false);  
}

public void doFilter(ServletRequest req, ServletResponse res, 
        FilterChain chain) throws IOException, ServletException {

    HttpServletResponse httpResponse = (HttpServletResponse)res;
    HttpServletRequest httpRequest = (HttpServletRequest)req;

    CapabilitiesService service = CapabilitiesServiceFactory.getCapabilitiesService();

    for(Map.Entry api : apis.entrySet()) {

        if(api.getValue()) {
            CapabilityStatus status =  service.getStatus(api.getKey()).getStatus();

            if (status != CapabilityStatus.ENABLED) {
                log.warn("API " + api.getKey().getPackageName() + ":" + 
                        api.getKey().getName() + " has been disabled!");
                httpResponse.sendRedirect(NEPAL_RES_HOST + "/html/read-only.html");
                return; 
            }
        }   
    }  
    chain.doFilter(req, res);  
}

命名空间API

在讨论此API之前,让我们介绍一下Multitenancy的概念。

名称空间API最引人注目的用途之一是多租户。 多租户是一种软件体系结构的名称,在该体系结构中,在远程服务器上运行的一个应用程序实例为许多客户端组织(也称为租户)提供服务。

多租户简化了租户的管理和供应。 您可以提供更简化的,定制的用户体验,还可以在单​​个数据库架构下聚合不同的数据孤岛。 结果,您的应用程序在扩展时变得更具可扩展性和成本效益

由于所有租户共享相同的数据库架构,因此数据在租户之间的分离和分析变得更加容易。

多租户与多实例不同:

  • 在多实例中,为不同的客户组织设置了不同的软件实例。
  • 在多实例中,应用程序通常不了解客户的差异,而在多租户中,该应用程序可用于隔离和分区数据。

Google App Engine中的Namespaces API使创建Google App Engine数据孤岛变得容易。 该API是通过名为“命名空间管理器”的新程序包实现的。

在名称空间管理器中设置名称空间时,这些API将获取当前名称空间并在全局范围内使用它。

任何App Engine请求都可以访问任何名称空间,而使应用程序可以跨多个名称空间实施访问控制策略。 在这种方法中,应用程序负责设置工作名称空间。

支持名称空间的API:

1.数据存储
2. Memcache
3.任务队列

使用Namespaces API,您只需为每个租户指定一个唯一的命名空间字符串,就可以在租户之间轻松地对数据进行分区。 您只需使用“名称空间管理器”为全局每个租户设置名称空间。 默认情况下,启用了名称空间的API始终使用当前名称空间。

在数据存储区中,名称空间管理器会将名称空间应用于每个键和查询对象。

没有Java API可以显式设置键或查询的名称空间,所有这些操作都是通过名称空间管理器进行的。

参考:我们的JCG合作伙伴 ReflectiveThought的 Google App Engine Java功能和命名空间API

相关文章:


翻译自: https://www.javacodegeeks.com/2011/04/app-engine-capabilities-namespaces-api.html

海外 谷歌 app api

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值