1.什么是微服务架构
Posted 飞四海
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.什么是微服务架构相关的知识,希望对你有一定的参考价值。
初认识:
我理解每个行业、每个公司具有不同的业务体系和产品形态,微服务架构是一种架构模式,区别于其他系统架构的构建方式和技术方案,微服务架构具有其固有特点。
微服务架构的提出者 Martin Fowler 在其文章Microservices中定义了包括服务组件化、去中心化、基础设施自动化在内的多个微服务架构特点。
一般公司可以把业务体系中的服务分成如下几种类型:基础服务、通用服务、定制服务和其他服务等。我司就是这么玩的。
用什么技术:
目前业界主流的微服务实现技术提炼了八大技术体系,包括服务通信、服务治理、服务路由、服务容错、服务网关、服务配置、服务安全和服务监控。
-
服务通信 Spring Cloud Gateway
采用异步转同步的实现机制,也就是说开发人员使用同步的方式进行方法调用,而框架本身会基于 Future 等机制实现异步的远程处理。 -
服务治理 Eureka
通过服务治理实现自动化的注册和发现。称为服务注册中心。 -
服务路由 Ribbon
可以理解为负载均衡,是最常见的一种路由方案,常见的客户端/服务器端负载均衡技术都可以完成服务路由。Spring Cloud 等主流的微服务框架也都内置了 Ribbon 等客户端负载均衡组件。 -
服务容错 Spring Cloud Circuit Breaker
服务在自身失败引发生错误的同时,还会因为依赖其他服务而导致失败。除了比较容易想到和实现的超时、重试和异步解耦等手段之外,我们需要考虑针对各种场景的容错机制。 -
服务网关 Spring Cloud Gateway
服务网关也叫 API 网关,封装了系统内部架构,为每个客户端提供一个定制的 API。在微服务架构中,服务网关的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在网关层处理所有的非业务功能。 -
服务配置 Spring Cloud Config
在微服务架构中,考虑到服务数量和配置信息的分散性,一般都需要引入配置中心的设计思想和相关工具。
与注册中心一样,配置中心也是微服务架构中的基础组件,其目的也是对服务进行统一管理,区别在于配置中心管理的对象是配置信息而不是服务的实例信息。 -
服务安全 Spring Cloud Security
服务安全是一块非常重要的。访问安全性,都是围绕认证和授权。也就是说我们首先需要确定用户身份,然后再确定这个用户是否有访问指定资源的权限。 -
服务监控 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.什么是微服务架构的主要内容,如果未能解决你的问题,请参考以下文章