前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Bluemix,NoSQL DB和Watson创建云应用程序

使用Bluemix,NoSQL DB和Watson创建云应用程序

作者头像
Hi胡瀚
发布2018-01-08 15:51:14
2K0
发布2018-01-08 15:51:14

大家好,因为近几年工作很忙,我已经很久没有写过文章了。我现在是IBM的Bluemix平台的云架构师。我曾经使用Tomcat服务器上的Web应用程序编写了一个在Bluemix上运行的示例应用程序。这个应用的前端web页面的是用JavaScript开发,服务器端以Java开发,我还在此应用开发中使用了DBaaS(数据库即服务)--Cloudant(一款NoSQL数据库)。并且还使用了Watson语言作为翻译服务。

我开发此应用是为了解决下面我将讲到问题:

世界著名厨师Gabriel,他的食谱广受欢迎,Gabriel还不断地把自己的新灵感加入到食谱中。他希望能够与世界各个国家的人分享他的食谱,因此他找到了IBM来寻求解决方案。

建议的解决方案

IBM架构师Gabriel建议厨师Gabriel可以使用SoftLayer Cloud(一个云服务提供商)将所有食谱存储在Cloudant---一个NoSQL数据库(当然数据库的具体技术实现我们并没有和Gabriel说明)。

厨师Gabriel的网站也可以在Bluemix(由SoftLayer提供服务支持的)中进行托管。该网站将连接到存储着食谱数据的数据库。由于访问者会来自各个国家,所以我们将使用Watson进行翻译工作。这将极大地方便浏览者,在浏览者浏览网站时,应用程序会先从数据库中检索数据,再译为浏览者选择的语系。

架构图

chefg_architecture
chefg_architecture

序列图

chefg_seq
chefg_seq

Web应用程序将分别从Watson语言翻译器和Cloudant DB中检索语言列表以及食谱列表。然后浏览者可以选择他们想要的食谱配方和语言。Web应用程序将检索该食谱配方,然后通过Watson语言翻译器将其翻译成相关语言。

至此一个食谱分享网站就构建成功,你可以获取不同语言的食谱配方了。

还有一个我不得不考虑的问题。Cloudant DB似乎不可以通过Java SDK(Software Development Kit)来设置文档的ids,它只能自动生成id。因此,每次的食谱搜索只能全库检索。这将是计算密集型任务(意指耗费大量的数据库性能)并影响大规模系统的性能。当然这只是一个演示程序,我就没有去完成了。

我使用的技术是:

  • 基于REST的HTTP / HTTPS调用
  • JQuery-用于网页
  • Gson(这是Google提供的Java 对象和JSON数据之间进行映射的Java 类库)
  • CSS(样式表)
  • 用户服务器端的开发语言Java
  • 用于存储的Cloudant NoSQL数据库
  • Watson语言翻译程序

我将包含一个显示RecipeRequest(食谱数据请求)和Recipe以及Language对象之间关系的UML(Unified Modeling Language即统一建模语言)图。注意RecipeRequest实际上是一个将食谱配方连接到要翻译的语言的关联类。这是因为食谱本身食谱仅仅包含菜品的制作方法,并不包含语言的属性,食谱翻译是通过关联类来完成。从理论上讲,即使是图画也可能是一个配方。语言本身也是一个独立的概念。因此,我使用关联RecipeRequest将食谱连接到语言。

chefg_architecture
chefg_architecture

此实例的网址是https://gabrieljcampbell.mybluemix.net/。您可以点击查看下。相关代码已经放在我的GitHub上。您可以通过git下载我的代码库。注意,您需要使用Cloud Foundry命令将代码部署到Bluemix上运行。以下是网站的截图。

屏幕截图:

chefg_screenshot
chefg_screenshot

当我们选择西班牙语时食谱配方就被翻译为西班牙语:

chefg_screenshot
chefg_screenshot

我的文章到此结束,你这也可以在这里找到此文章

祝各位编程愉快。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 建议的解决方案
  • 架构图
  • 序列图
相关产品与服务
文档服务
文档服务(Document Service,DS)是腾讯云数据万象提供云上文档处理服务,支持多种类型的文件生成图片或 html 格式的预览,可以解决文档内容的页面展示问题,满足 PC、App 等多端的文档在线浏览需求。同时,本产品还提供文本隐私筛查能力,可以有效识别文本中的身份证号、银行卡号、手机号等敏感数据,满足数据可用性和隐私保护的各种要求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档