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

2018-01-05 16:46:16 浏览数 (1)

大家好,自从我上次写文章已经很久了。事实上,这几年,我总是忙于工作。我现在是IBM的Bluemix平台的云架构师。我在Tomcat服务器上用Web应用程序编写了一个在Bluemix上运行的示例应用程序,该应用程序网页由JavaScript编写和用于后端Java编写的的网页。我使用DBaaS - Cloudant数据库。我也使用Watson语言翻译服务。

我上面做的应用是为了解决像下面的问题:

世界知名厨师Gabriel是这个地球上最有名的厨师之一。他的食谱受到来自世界各地的每个人的高度追捧。

人们对于他惊人的食谱的需求是非常高的,因此,他希望能够与地球上,不管说什么语言的每个人分享。此外,当他有新想法时,他不断地改变和更新他的食谱,然后联系IBM寻求解决方案。

建议的解决方案

IBM架构师Gabriel建议厨师Gabriel可以使用Cloudant(一个NoSQL DB)将所有食谱存储在SoftLayer Cloud中(数据库的确切细节不会与厨师共享,因此厨师不需要理解技术术语)。

厨师Gabriel的网站也可以在Bluemix(SoftLayer)中进行托管。该网站将连接到数据库,其中包含他所有的食谱。由于来他网站的访问者使用不同的语言,我们将使用Watson语言翻译服务。这将使所有访问者能够选择语言来查看他们想要的食谱。网站应用程序会从数据库中检索语言,然后将文本翻译成访问者选择的语言。网站的访问者可以用他们首选的语言查看食谱。

架构图

序列图

Web应用程序将从Watson语言翻译器中检索语言列表以及在Cloudant DB中存储的食谱列表。这将出现在屏幕上,访问者可以选择他们想要的配方和语言。Web应用程序将检索该配方,然后将其翻译成相关语言。

我的最终结果是一个存储食谱的网站。只要该语言由Watson Language Translator提供,您就可以用您选择的语言访问一个食谱。

有一个工作还需要去做的,我不得不强调。Cloudant DB似乎不允许通过Java SDK为数据库中的文档编写id。它只允许他们自动生成。因此,我必须检索所有配方文件才能得到特定食谱的名称。这将是处理器密集型过程并影响大规模系统的性能。幸运的是,这是一个演示。不过请注意,我意识到这个方面。

我使用的技术是:

  • 基于REST的HTTP / HTTPS调用
  • JQuery-用于网页
  • Gson的JSON
  • 样式表的CSS
  • Java的后端
  • 用于数据库的Cloudant NoSQL
  • 沃森语言翻译的语言翻译

我将包含一个显示RecipeRequest和Recipe以及Language对象之间关系的UML图(Unified Modeling Language 又称统一建模语言或标准建模语言)。注意RecipeRequest实际上是一个将食谱连接到要翻译的语言的关联类。这是因为食谱不能具有语言的属性。食谱纯粹是一种方法。从理论上讲,甚至是图片也可能是一个食谱。语言本身就是一个概念。因此,我使用关联RecipeRequest将食谱连接到语言。

该网站的网址是https://gabrieljcampbell.mybluemix.net/。请尝试一下。代码放在我的GitHub上。您可以克隆存储库。请记住,您需要使用Cloud Foundry命令部署到Bluemix运行时。以下是网站的截图。

屏幕截图:

当我们改变语言,食谱就会被翻译了:

以上就是我的文章,你也可以在这里找到。

祝您编码愉快!

nosqlnosql

0 人点赞