海外 谷歌 app api_Google App Engine Java功能和命名空间API
海外 谷歌 app api
功能API使用Capabilities API,您的應(yīng)用程序可以檢測特定API功能的停機和計劃停機時間。 您可以使用此API來檢測應(yīng)用程序何時不可用,然后繞過它來減少應(yīng)用程序的停機時間。
我們該如何處理呢?
1.優(yōu)雅:創(chuàng)建一個切入所有數(shù)據(jù)存儲寫入的方面,并檢查其功能。 失敗,出現(xiàn)友好錯誤消息。
2.不太優(yōu)雅:在每次寫入之前將功能檢查添加到存儲庫代碼中。 失敗,出現(xiàn)友好錯誤消息。
3.快速:寫過濾器,包裝整個事務(wù)并檢查數(shù)據(jù)存儲寫。
我們?nèi)绾卧诒镜丨h(huán)境中對此進行測試?
1.沒有API掛鉤。 目前,我無法找到或使用GAE Java代理來測試功能調(diào)用。
2.解決方案是使用模擬能力服務(wù)創(chuàng)建一個不同的版本,該服務(wù)能夠返回CapabilityStatus.DISABLED標志并進行測試。
由于時間原因,我選擇了快速方法。 稍后,我將嘗試重新討論此問題,并合并AspectJ或Google Juice以利用各個方面來解決這一明顯的跨領(lǐng)域問題。
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最引人注目的用途之一是多租戶。 多租戶是一種軟件體系結(jié)構(gòu)的名稱,在該體系結(jié)構(gòu)中,在遠程服務(wù)器上運行的一個應(yīng)用程序?qū)嵗秊樵S多客戶端組織(也稱為租戶)提供服務(wù)。
多租戶簡化了租戶的管理和供應(yīng)。 您可以提供更簡化的,定制的用戶體驗,還可以在單??個數(shù)據(jù)庫架構(gòu)下聚合不同的數(shù)據(jù)孤島。 結(jié)果,您的應(yīng)用程序在擴展時變得更具可擴展性和成本效益
由于所有租戶共享相同的數(shù)據(jù)庫架構(gòu),因此數(shù)據(jù)在租戶之間的分離和分析變得更加容易。
多租戶與多實例不同:
- 在多實例中,為不同的客戶組織設(shè)置了不同的軟件實例。
- 在多實例中,應(yīng)用程序通常不了解客戶的差異,而在多租戶中,該應(yīng)用程序可用于隔離和分區(qū)數(shù)據(jù)。
Google App Engine中的Namespaces API使創(chuàng)建Google App Engine數(shù)據(jù)孤島變得容易。 該API是通過名為“命名空間管理器”的新程序包實現(xiàn)的。
在名稱空間管理器中設(shè)置名稱空間時,這些API將獲取當前名稱空間并在全局范圍內(nèi)使用它。
任何App Engine請求都可以訪問任何名稱空間,而使應(yīng)用程序可以跨多個名稱空間實施訪問控制策略。 在這種方法中,應(yīng)用程序負責設(shè)置工作名稱空間。
支持名稱空間的API:
1.數(shù)據(jù)存儲
2. Memcache
3.任務(wù)隊列
使用Namespaces API,您只需為每個租戶指定一個唯一的命名空間字符串,就可以在租戶之間輕松地對數(shù)據(jù)進行分區(qū)。 您只需使用“名稱空間管理器”為全局每個租戶設(shè)置名稱空間。 默認情況下,啟用了名稱空間的API始終使用當前名稱空間。
在數(shù)據(jù)存儲區(qū)中,名稱空間管理器會將名稱空間應(yīng)用于每個鍵和查詢對象。
沒有Java API可以顯式設(shè)置鍵或查詢的名稱空間,所有這些操作都是通過名稱空間管理器進行的。
參考:我們的JCG合作伙伴 ReflectiveThought的 Google App Engine Java功能和命名空間API 。
相關(guān)文章:
- Java Code Geeks Andygene Web原型
- 每個程序員都應(yīng)該知道的事情
- Spring MVC開發(fā)–快速教程
- 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
總結(jié)
以上是生活随笔為你收集整理的海外 谷歌 app api_Google App Engine Java功能和命名空间API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行上班时间表
- 下一篇: 使用活动记录执行CRUD