大家好,自从我上次写文章已经很久了。事实上,这几年,我总是忙于工作。我现在是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