转向微服务的数据服务

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

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

微服务是一种软件架构风格,是一种应用程序开发形式,其中应用程序被构建和组合为一组服务。这些服务是小型的、独立的、自包含的、可独立部署和可扩展的。他们高度解耦,专注于一个小任务或能力。所以一个正式的定义:

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

Martin Fowler 在他的微服务文章中描述了微服务的特征之一,称为去中心化数据管理。他将此描述为让每个服务管理自己的数据库。相同数据库技术的不同实例或完全不同的数据库系统。正如他所指出的,这是一种称为 Polyglot Persistence 的方法。在骗局 数据库的文本,这是指使用混合数据库的服务,以利用不同数据库适用于不同类型程序的事实。当然,可能已经存在微服务需要使用的孤岛或单体数据库。

因此,首先让我们谈谈从视觉上从整体式架构到微服务的转变,然后让我们谈谈数据虚拟化如何帮助企业转向微服务。

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

  • 由于大型代码库和具有许多依赖项的复杂集成点而减少迭代
  • 维护大型代码库
  • 大型代码库的代码质量可能很差

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

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

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

  • 不同服务的代码可以用不同的语言编写(尽管许多从业者不鼓励这样做)

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

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

  • 开发人员可以利用最新技术

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

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

  • 当应用的某个部分需要变更时,只需要修改和重新部署相关的服务即可——无需修改和重新部署整个应用

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

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

  • 对技术栈没有长期承诺

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

  • 连接到许多数据源

  • 根据功能创建 VDB 和视图

  • 通过微服务的不同标准(ODBC、JDBC、OData、REST、SOAP)公开 VDB

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

  • 根据角色创建访问级别以实现细粒度访问

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

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

  • 查看文档: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 http://www.codingthearchitecture.com/2014/11/19/what_is_a_monolith.html https:/ /impact.hackpad.com/Advantages-and-Disadvantages-of-a-Monolith-Application-ZlrQRl3LHCg http://smartbear.com/all-resources/articles/what-is-microservices-architecture/