海外 谷歌 app api_Google App Engine Java功能和命名空间API
海外 谷歌 app 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 。
相关文章:
- Java Code Geeks Andygene Web原型
- 每个程序员都应该知道的事情
- Spring MVC开发–快速教程
- SmartGWT入门,提供出色的GWT界面
- GWT 2 Spring 3 JPA 2 Hibernate 3.5教程
翻译自: https://www.javacodegeeks.com/2011/04/app-engine-capabilities-namespaces-api.html
海外 谷歌 app api
海外 谷歌 app api_Google App Engine Java功能和命名空间API相关推荐
- Google App Engine Java功能和命名空间API
功能API 使用Capabilities API,您的应用程序可以检测特定API功能的停机和计划停机时间. 您可以使用此API来检测应用程序何时不可用,然后绕过它来减少应用程序的停机时间. 我们该如何 ...
- 使用Netbeans开发App Engine Java
如果您刚开始进行App引擎开发,那么您可能会感觉Eclipse是首选的IDE. 而且,Google还单独提供了它的Eclipse IDE 官方插件 . 但是不使用Eclipse的人呢? 当然,您始终可 ...
- app engine_Google App Engine:在您自己的域中托管应用程序
app engine 在Google App Engine中创建新应用程序时,您将获得一个域名" yourapp.appspot.com". 但是,谁会想要以这样的后缀托管他们的应 ...
- 谷歌滤镜软件叫什么_谷歌app爆红的拍照功能:你最像名画中的谁?
原标题:谷歌app爆红的拍照功能:你最像名画中的谁? 谷歌一个名叫艺术文化的app是世界上最大的线上博物馆.虽然这个app2016年就已经有了,不过直到最近才爆红,原因是开发人员在其中添加了一个有趣的 ...
- 如何在海外高效的推广APP?海外推广产品该注意哪些点?
如今全球互联网人口红利转移到东南亚.南亚.南美等地区,全球移动互联网硬件环境成熟,海外智能手机有一定的数量规模,同时全球5G网络连接量提升,整体移动互联网网速增加,发展环境变好,带动了休闲娱乐应用发展 ...
- Frida Hook Android App 进阶用法之 Java 运行时
FridaHookAndroid 本文旨在覆盖使用 Frida 对 Android App 进行 hook 的绝大多数场景.文章提到的所有代码以及被测 App,详见:https://github.co ...
- 人脸识别撞脸名画_测测自己的自拍最像哪幅世界名画?谷歌这款App逆天了
原标题:测测自己的自拍最像哪幅世界名画?谷歌这款App逆天了 一款匹配人脸与著名画作的谷歌APP在周末引发了一波自拍狂潮. 本周末,谷歌旗下的数字博物馆App,Google Arts and Cult ...
- android自带语音识别,Android如何实现自带谷歌语音识别垃圾分类APP
基于Android实现自带谷歌语音识别垃圾分类APP 此次做的项目是垃圾分类APP,涵盖内容各类垃圾的分类详情,关于软件的介绍,分享软件,语音识别,基于API搜索.文章末尾附源码,源码全注释. 项目主 ...
- 互联网日报 | 1月15日 星期五 | 百度App上线出行政策查询功能;铁路部门调整车票预售期为15天;知乎十周年宣布品牌升级...
今日看点 ✦ 铁路部门调整车票预售期为15天,开车前8天及以上退票免费 ✦ 百度App上线出行政策查询功能,全国各地隔离政策快速了解 ✦ 联想集团计划科创板上市融资100亿,选择中金作为保荐人 ✦ 知 ...
最新文章
- robot简单功能测试脚本设计(例子)
- mysql5.6 thread pool_mysql5.6 thread pool
- 让你的输入框使用Google云语音输入技术
- EMNLP 2020 | 基于Wasserstein距离的正则化序列表示
- 使用QT的一些小Tipster
- elementUI vxe-table结合使用(通用表格)
- Qt5:渐变效果的实现
- 【写作技巧】毕业论文格式要求
- python气象绘图速成_气象数据可视化——利用Python绘制温度平流
- Atitit.软件控件and仪表盘(23)--多媒体子系统--视频输出切换控制cvbs av s-video Ypbpr pal ntsc
- 【POJ 1113】Wall【凸包+一点思维】
- 下载pyboard的flash中的驱动程序_HASP加密狗驱动程序没有安装成功如何解决
- visio 2003密钥
- 企业选人的三个阶段和几个标准
- Django Hello,Word!(Windows10)
- 利用PHPExcel转Excel饼图
- 【杂谈】想成为机器学习学霸?先学会做笔记吧(Evernote,BoostNote,Leanote等)
- matlab启动慢的解决方法
- TopK Question
- 金属射流、门罗效应和密室杀人
热门文章
- 数字奇数和偶数的判断
- 时间格式转换2020-04-09T23:00:00.000+08:00
- 旅游系统_数字洛江智慧旅游系统助力提升旅游安全水平
- jdk8 获取上一个月时间_JDK 10:FutureTask获取一个toString()
- thymeleaf与jsp_PagingAndSortingRepository –如何与Thymeleaf一起使用
- hazelcast 使用_使用HazelCast进行Hibernate缓存:JPA缓存基础知识
- java cr_WildFly 10 CR 2发布– Java EE 7,Java 8,Hibernate 5,JavaScript支持热重载
- orcad自上而下_开发自上而下的Web服务项目
- Java 14的新功能
- file.getpath_Java中File的getPath(),getCanonicalPath()和getAbsolutePath()之间的区别...