1.什么是微服务架构

Posted 飞四海

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.什么是微服务架构相关的知识,希望对你有一定的参考价值。

初认识:

我理解每个行业、每个公司具有不同的业务体系和产品形态,微服务架构是一种架构模式,区别于其他系统架构的构建方式和技术方案,微服务架构具有其固有特点。

微服务架构的提出者 Martin Fowler 在其文章Microservices中定义了包括服务组件化、去中心化、基础设施自动化在内的多个微服务架构特点。

一般公司可以把业务体系中的服务分成如下几种类型:基础服务、通用服务、定制服务和其他服务等。我司就是这么玩的。

用什么技术:

目前业界主流的微服务实现技术提炼了八大技术体系,包括服务通信、服务治理、服务路由、服务容错、服务网关、服务配置、服务安全和服务监控。

  1. 服务通信 Spring Cloud Gateway
    采用异步转同步的实现机制,也就是说开发人员使用同步的方式进行方法调用,而框架本身会基于 Future 等机制实现异步的远程处理。

  2. 服务治理 Eureka
    通过服务治理实现自动化的注册和发现。称为服务注册中心。

  3. 服务路由 Ribbon
    可以理解为负载均衡,是最常见的一种路由方案,常见的客户端/服务器端负载均衡技术都可以完成服务路由。Spring Cloud 等主流的微服务框架也都内置了 Ribbon 等客户端负载均衡组件。

  4. 服务容错 Spring Cloud Circuit Breaker
    服务在自身失败引发生错误的同时,还会因为依赖其他服务而导致失败。除了比较容易想到和实现的超时、重试和异步解耦等手段之外,我们需要考虑针对各种场景的容错机制。

  5. 服务网关 Spring Cloud Gateway
    服务网关也叫 API 网关,封装了系统内部架构,为每个客户端提供一个定制的 API。在微服务架构中,服务网关的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。

  6. 服务配置 Spring Cloud Config
    在微服务架构中,考虑到服务数量和配置信息的分散性,一般都需要引入配置中心的设计思想和相关工具。
    与注册中心一样,配置中心也是微服务架构中的基础组件,其目的也是对服务进行统一管理,区别在于配置中心管理的对象是配置信息而不是服务的实例信息。

  7. 服务安全 Spring Cloud Security
    服务安全是一块非常重要的。访问安全性,都是围绕认证和授权。也就是说我们首先需要确定用户身份,然后再确定这个用户是否有访问指定资源的权限。

  8. 服务监控 Spring Cloud Sleuth 与 Zipkin 的集成
    在微服务架构中,当服务数量达到一定量级时,我们难免会遇到两个核心问题。
    一个是如何管理服务之间的调用关系?另一个是如何跟踪业务流的处理过程和结果?
    这就需要构建分布式服务跟踪机制。

云原生-什么是微服务?什么是微服务架构?

什么是微服务架构?

微服务架构(通常简称为微服务)是指开发应用所用的一种架构形式。通过微服务,可将大型应用分解成多个独立的组件,其中每个组件都有各自的责任领域。在处理一个用户请求时,基于微服务的应用可能会调用许多内部微服务来共同生成其响应。

容器是微服务架构的绝佳示例,因为它们可让您专注于开发服务,而无需担心依赖项。现代云原生应用通常使用容器构建为微服务。

性。


微服务架构的重要特征

  • 整个应用程序被拆分成相互独立但包含多个内部模块的子进程。

  • 与模块化的单体应用(Modular Monoliths)或 SOA 相反,微服务应用程序根据业务范围或领域垂直拆分。

  • 微服务边界是外部的,微服务之间通过网络调用(RPC 或消息)相互通信。

  • 微服务是独立的进程,它们可以独立部署。

  • 它们以轻量级的方式进行通信,不需要任何智能通信通道。

微服务架构的优点

  • 更好的开发规模。

  • 更快的开发速度。

  • 支持迭代开发或现代化增量开发。

  • 充分利用现代软件开发生态系统的优势(云、容器、 DevOps、Serverless)。

  • 支持水平缩放和细粒度缩放。

  • 小体量,降低了开发人员的认知复杂性。

微服务架构的缺点

  • 更高数量级的活动组件(服务、数据库、进程、容器、框架)。

  • 复杂性从代码转移到基础设施。

  • RPC 调用和网络通信的大量增加。

  • 整个系统的安全性管理更具有挑战性。

  • 整个系统的设计变得更加困难。

  • 引入了分布式系统的复杂性。

构建微服务架构

可以在许多不同的框架中构建微服务。下面几个是目前较受欢迎的:

  • Spring Boot with Spring Cloud —基于 Java Spring Cloud 的全栈微服务框架,扩展功能丰富。

  • Vert.x —运行于 JVM 之上的一个工具,支持选择不同语言并提供简单的 API 接口。

  • Akka —一款 Actor 模型框架,非常适合响应式微服务。

  • Quarkus —用于构建模块化微服务应用程序的 Kurbernetes Native Java 框架

  • Falcon —一个专注于质量控制并针对微服务进行了优化的 Python 框架。

  • Molecular —一款支持事件驱动的 Node.js 微服务框架。

如何部署微服务

  • 下面是几种选择。也可以选择其中的几个合并使用进行微服务部署。

  • 云上部署,拥有非常好的扩展能力,可以为不同地区的用户提供相应服务

  • 容器部署,可以大大缩短产品上线时间,同时可以轻松扩展应用并快速解决问题

  • PaaS(Platform-as-a-Service,平台即服务)部署,从云提供商租用开发工具,基础架构和操作系统

  • Serverless 部署,应对弹性的高峰流量场景时考虑使用该部署方式

  • 构建自己的 IT 基础设施,如果有足够的资源,可以考虑使用该方式部署。

如何对微服务进行监控

  • 有很多监控工具供你挑选使用,下面是我的一些推荐:

  • Datadog该工具常用于业务监控、日志追踪分析以及异常告警。在异常检测及性能监控方面非常高效。

  • Dynatrace一款由 AI 驱动的平台,可用于监控动态混合云环境。

  • NewRelic一款用于云环境的集中监控及报告的监控工具。

  • Splunk一款用于日志分析的轻便工具。

  • AppDynamix一款实时监控应用程序和服务器性能的工具。

  • — 一个开源的性能监控及网络监控工具。

如何自动化CI/CD过程

  • 从完整的云基础架构设置到使用 Kubernetes 在云中交付应用程序和服务,Microtica涵盖整个软件交付自动化过程。Microtica 针对开发人员在云中开发、测试和代码部署的方式制定了相应标准。这让他们的工作在未来的项目中得以复用。

如何进行测试

  • 下面是我们使用的一些方法:

  • 使用Mocha+Chai进行单元集成测试

  • 使用Postman进行 API 自动化测试。我们为每个公共 API 定义了一个测试用例,在每天凌晨时执行它们,并立即获得测试报告。如果出现问题时,我们会立即修复问题并将变更部署到生产环境。

何时使用微服务?

  • 项目未来会有很多新功能

  • 项目经常发布新功能

  • 项目有多个子域名及子服务

  • 公司业务正在计划扩张

  • 项目有一个大型团队可以同时处理不同的微服务

  • 拥有敏捷的、跨职能的团队并且正在进行大型的项目协作

  • 但是,在开始使用微服务架构前,请务必仔细考虑下面几个问题:

  • 项目需要多少存储空间?如果项目依赖本地存储,则将无法灵活地进行服务扩展。应用也将无法处理大量工作负载。

  • 应用程序是事件驱动吗?如果是这样,那么程序应该能实现异步处理,因为你的应用程序将跨多台机器进行部署扩展。

  • 需要灵活的消息传输机制。微服务项目中有多个事件源,并且都必须对其进行处理。因此,需要一个强大的消息传递模型。

  • 由于微服务将使用其 API 进行通信,因此创建 API 通信模式是必不可少的。

  • 微服务需要一个更加安全的模型,该模型允许一个微服务仅能访问其所需的资源,而不会使其他微服务受到安全威胁。微服务在软件体系架构方面进行了重大的革命。在构建微服务应用时,应认真考虑各种情况。Netflix、Amazon、Uber 和 Spotify 决定将微服务架构应用于构建各自大型复杂的应用程序,以充分利用微服务的特有优势。然而,能够充分做到微服务架构并发挥其优势的,仅仅是科技巨头中的一小部分而已。但是,是否迁移到微服务应取决于项目以及团队结构。这对整个公司来说都是非常重要的,因此在使用微服务之前,应该认真进行讨论和评估。



以上是关于1.什么是微服务架构的主要内容,如果未能解决你的问题,请参考以下文章

1.什么是微服务架构

什么是微服务架构?主流的微服务如何实现?

什么是微服务架构?

微服务架构:什么是微服务

什么是微内核架构设计?

什么是微服务架构啊?