转向面向微服务的数据服务


最近有很多关于微服务的讨论。很多注意力都集中在服务本身。但是这些服务需要和使用的数据呢?数据应该与微服务紧密耦合吗?服务和数据之间应该有抽象吗?在这个博客中,我们将讨论微数据服务以及我认为如何创建它们。

微服务是一种软件架构风格,是应用程序开发的一种形式,其中应用程序作为一套服务来构建和组合。这些服务规模小、独立、自成一体、可独立部署且可扩展。他们高度分离,专注于一个小任务或能力。所以正式的定义是:

微服务是一种体系结构方法,它强调将应用程序功能分解为由跨职能团队管理的单一用途、松散耦合的服务,以当今数字业务所需的速度和质量交付和维护复杂的软件系统。

马丁·福勒在他的微服务文章中描述了微服务的特征之一,称之为分散数据管理。他将此描述为让每个服务管理自己的数据库。同一个数据库技术的不同实例或者完全不同的数据库系统。正如他所指出的,这是一种叫做多语种持久性的方法。在数据库的概念中,这是指使用混合数据库的服务,以利用不同的数据库适用于不同类型的程序这一事实。当然,可能已经存在微服务需要使用的筒仓或整体数据库。

因此,首先让我们讨论一下从单一服务到微服务的可视化,然后让我们讨论一下数据虚拟化如何帮助企业转向微服务。

整体应用程序是单层的,用户界面和数据访问代码放在单一平台的单一程序中。通常,整体描述的是主框架类型的应用,组件之间紧密耦合,而不是重用模块化。使用整体方法有几个缺点:

  • 由于大型代码库和复杂的集成点以及许多依赖性,迭代次数更少
  • 维护大型代码库
  • 代码质量会因代码基数大而变差

微服务架构将应用程序组件包含在一个独立的小型服务中,包括数据访问。我想强调使用微服务的一些优势:

  • 微服务架构赋予开发人员独立开发和部署服务的自由

  • 微服务可以由一个相当小的团队开发

  • 不同服务的代码可以用不同的语言编写(尽管许多从业者不赞成)

  • 易于集成和自动部署(使用开源的持续集成工具,如Jenkins、Hudson等)。(

  • 易于开发人员理解和修改,因此可以帮助新团队成员快速提高工作效率

  • 开发者可以利用最新的技术

  • 代码是围绕业务能力组织的

  • 更快地启动web容器,因此部署也更快

  • 当应用程序的某个部分需要更改时,只能修改和重新部署相关的服务,而不需要修改和重新部署整个应用程序

  • 更好的故障隔离:如果一个微服务失败,另一个将继续工作(尽管单个应用程序的一个有问题的区域会危及整个系统)

  • 易于扩展并与第三方服务集成

  • 对技术堆栈没有长期承诺

现在让我们转向与微服务的数据讨论。如何创建微数据服务,以便微服务可以访问它需要的数据,并且只能访问它需要的数据?这就是我们可以引入JBoss数据虚拟化来实现微服务的轻松迁移和采用的地方。如下图所示,我们有很多微服务可能需要的不同数据源。因此,我们可以使用数据虚拟化为每个微服务添加微数据服务。我们还可以向虚拟数据库(VDB)添加安全性,如低级安全性和列屏蔽。可以为每个微服务创建VDB,或者我们可以在虚拟数据库中创建多个微视图。将数据虚拟化用于微数据服务有什么好处?

  • 连接到许多数据源

  • 根据功能创建虚拟数据库和视图

  • 通过微服务的不同标准(ODBC、JDBC、OData、REST、SOAP)公开虚拟数据库

  • 能够在Openshift上将您的微数据服务置于xPaaS中

  • 基于角色创建访问级别,以实现细粒度访问

  • 使用新的数字视频视图保持数据存储的原样,并使用数字视频轻松迁移到新的数据源

向商业智能分析工具提供微服务中使用的相同数据服务现在您已经看到了优势,我也满足了您的好奇心,请查看视频、文档和下载,开始您的第一个微服务使用的数据服务:

  • 查看文档:http://www.jboss.org/products/datavirt/resources/
  • 下载产品:http://www.jboss.org/products/datavirt/download/
  • 观看入门视频:http://www.jboss.org/products/datavirt/get-started/#!

参考文献:http://martinfowler.com/articles/microservices.html·http://microservices.io/patterns/microservices.html