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

大家好,因为近几年工作很忙,我已经很久没有写过文章了。我现在是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进行翻译工作。这将极大地方便浏览者,在浏览者浏览网站时,应用程序会先从数据库中检索数据,再译为浏览者选择的语系。

架构图

技术架构图

序列图

请求处理顺序示意图

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将食谱连接到语言。

统一建构语言图

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

屏幕截图:

屏幕截图

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

变换语言

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

祝各位编程愉快。

本文的版权归 Hi胡瀚 所有,如需转载请联系作者。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信宝典

我想做信号通路分析,但我就是不想学编程

这篇文章就教大家,如何一句代码都不用敲,通过简单的复制粘贴还有点两下鼠标,就能实现通路富集的分析。

19950
来自专栏zhisheng

MacBook Pro 初体验

背景 在 Mac 到手之前就在各种群里看到人说 Mac 多好用,也有很多人鼓吹过 Mac 的好处,最后也坚定我的年前目标了 —— 就是买台 Mac,之前请原谅我...

36670
来自专栏安富莱嵌入式技术分享

【安富莱原创开源应用第1期】花式玩转网络摄像头之TCP上位机软件实现,高端大气上档次,速度2MB/S,华丽丽的界面效果

说明: 1、例子是两年前做的,一直没有顾上整理出来,今天特地整理出来,开源出来给大家玩。 2、上位机是emWin模拟器开发的,大家估计很难猜到,所以你会emWi...

17830
来自专栏友弟技术工作室

工欲善其事,必先利其器之------MAC工具类

前面分享了一篇《工欲善其事,必先利其器之------Ubuntu工具类》,今天分享MAC的工具。 由于我是一个程序员可能,工具偏开发一点。 ? 通用类的工具 ...

37980
来自专栏大魏分享(微信公众号:david-share)

大魏的思考:从纯技术角度看数字化转型

14730
来自专栏腾讯大数据的专栏

全民拥抱Docker云--Lhotse系统经验分享

前言 “只要站在风口,猪也能飞起来”,这碗心灵鸡汤不知道激励了多少英雄豪杰踏上寻风口之路。而现如今,Docker这阵龙卷风呼啸来袭,更让众人生起迎风而上、直冲云...

28690
来自专栏FreeBuf

简谈渗透测试各阶段我常用的那些“神器”

本人所有文章都很用心的写作完成,并时常总结如何分享更有用的东西给朋友们。这篇更是如此,晚上准备到凌晨四点开始写作,为了需要的朋友而写,不喜欢的右上角点叉不要像上...

65930
来自专栏blackpiglet

使用 minikube 启动 rook 集群

  今天我想谈一下 rook 这个项目,我目前工作的方向是分布式存储,这个领域里 Ceph 是接近于标准级别的解决方案了,而 Rook 就是 Ceph 来应对 ...

14540
来自专栏FreeBuf

走进科学:揭秘如何入侵电视机

[从可恶的广告开始] 前几天家里买了台新创维电视,安装好兴冲冲的开机,突然蹦出的广告让我心凉了半截,进了安卓系统,发现啥都没有,不能自己装软件,只能从那...

32690
来自专栏Android机动车

我和极光那些事 | 我和Android推送的时间简史

关于作者:夏韦子 博客: http://blog.leanote.com/xiaweizi

11710

扫码关注云+社区

领取腾讯云代金券