微服务架构
微服务体系结构是一种面向服务的体系结构。在微服务体系结构中,存在着大量的微服务。通过组合所有的微服务,它构建了一个大的服务。在微服务体系结构中,所有的服务都是相互通信的。
在微服务教程中,我们将了解如何使用Spring Cloud实现微服务。我们将学习如何在微服务之间建立通信,实现负载平衡,放大和缩小微服务。我们还将学习使用SpringCloudConfigServer集中配置微服务。我们将使用springcloudsleuth和Zipkin实现Eureka命名服务器和分布式跟踪。我们将用Zipkin创建容错微服务。
我们的微服务教程讨论了微服务体系结构的基本功能以及相关的例子,以便于理解。
什么是微服务
定义:根据samnewman的说法,“微服务是协同工作的小型服务。”
jameslewis和martinfowler认为,“微服务架构风格是一种将单个应用程序开发为一套小型服务的方法。每个微服务运行其进程并与轻量级机制通信。这些服务是围绕业务能力构建的,由完全自动化的部署机制独立开发。”
这些服务的集中管理是最低限度的,可以用不同的编程语言编写,并使用不同的数据存储技术。
要记住的要点:
- 这些是REST公开的服务。
- 这些是精心挑选的小型可部署部队。
- 服务必须启用云。
微服务定义了一种架构方法,该方法将应用程序划分为实现业务需求的松散耦合服务池。它仅次于面向服务架构( SOA )。基于微服务的体系结构最重要的特性是,它可以执行大型复杂应用程序的连续交付。
微服务有助于打破应用程序,构建逻辑上独立的小型应用程序。例如,我们可以在amazonaws的帮助下以最小的努力构建一个云应用程序。
在上图中,每个微服务都有自己的业务层和数据库。如果我们改变一个微服务,它不会影响其他服务。这些服务通过使用轻量级协议(如HTTP或REST或消息传递协议)相互通信。
微服务原理
微服务有以下原则:
- 单一责任原则
- 围绕业务领域建模
- 隔离故障
- 基础设施自动化
- 独立部署
单一责任原则
单一责任原则规定程序中的一个类或模块应该只有一个责任。任何微服务一次不能承担多个责任。
围绕业务领域建模
Microservice从不限制自己接受适当的技术栈或数据库。堆栈或数据库最适合于解决业务目的。
孤立故障
大型应用程序通常不会受到单个模块故障的影响。服务在任何时候都有可能失败。因此,快速检测故障,如果可能的话,自动恢复故障是非常重要的。
基础设施自动化
基础设施自动化是编写环境脚本的过程。在脚本环境的帮助下,我们可以将相同的配置应用于单个节点或数千个节点。它也称为配置管理、脚本化基础结构和系统配置管理。
独立部署
微服务与平台无关。这意味着我们可以独立地设计和部署它们,而不影响其他服务。
微服务的优势
- 微服务是自包含的、独立的部署模块。
- 扩展的成本相对低于单片架构。
- 微服务是可独立管理的服务。它可以根据需要提供越来越多的服务。它将对现有服务的影响降至最低。
- 可以单独更改或升级每个服务,而不是升级整个应用程序。
- 微服务允许我们开发一个本质上是有机的应用程序(最近通过添加更多功能或模块进行升级的应用程序)。
- 它使事件流技术与重量级的插入式通信相比易于集成。
- 微服务遵循单一责任原则。
- 这项要求很高的服务可以部署在多个服务器上以提高性能。
- 较少的依赖性和易于测试。
- 动态缩放。
- 更快的发布周期。
微服务的缺点
- 微服务具有分布式系统的所有相关复杂性。
- 在不同服务之间进行通信时,出现故障的可能性更高。
- 难以管理大量服务。
- 开发人员需要解决这个问题,比如网络延迟和负载平衡。
- 分布式环境下的复杂测试。