微服务技术简介

微服务技术简介

  • 服务架构的演变
  • 微服务架构的常见概念
  • 微服务常见的解决方案
    • Spring Cloud
    • Spring Cloud Alibaba
    • 微服务技术对比
    • 常用的微服务组件
  • 微服务架构图

服务架构的演变

单体架构:当一个系统业务量很小的时候,将业务的所有功能集中在一个项目中开发,将这个项目打成一个包部署在一台服务器上。整个项目所有的服务都由这台服务器提供。这就是单体架构。

请添加图片描述
优点: 架构简单。前期开发成本低、开发周期短,适合小型项目。部署成本低。

缺点: 全部功能集成在一个工程中,对于大型项目不易开发、扩展和维护。开发效率低,代码维护困难。
​技术栈受限,只能使用一种语言开发。如果想整体应用采用新的技术,新的框架或者语言,那是不可能的。
任意模块的漏洞或者错误都会影响这个应用,降低系统的可靠性。

垂直应用架构:按照业务进行切割,形成小的单体项目。将原来的一个应用拆成互不相干的几个应用,以提升效率。
请添加图片描述
优点:系统拆分实现了流量分担,解决了并发问题,而且可以针对不同模块进行优化和水平扩展。一个系统的问题不会影响到其他系统,提高容错率。不同的系统可以用不同的编程语言编写。

缺点:系统之间相互独立, 无法进行相互调用。系统之间相互独立, 会有重复的开发任务,功能冗余、数据冗余。

分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。
请添加图片描述
优点:抽取公共的功能为一个独立服务,提高代码复用性。​ 可重用性高。​ 可维护性高。
缺点:系统间耦合度变高,调用关系错综复杂,难以维护。

微服务架构:微服务是一种经过良好架构设计的分布式架构方案。更加强调服务的"彻底拆分"。将每一个服务单独开发,每一个服务都可以看作一个独立的项目。

微服务架构的特征:

  • 单一职责,微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。
  • 面向服务,微服务对外暴露业务接口。
  • 自治,每一个微服务都看作一个独立的项目,可以做到团队独立,技术独立,数据独立,部署独立。
  • 隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题。

请添加图片描述

优点:​ 服务拆分粒度更细,有利于提高开发效率。服务独立打包、部署和升级,保证每个微服务清晰的任务划分,利于扩展。微服务之间采用RESTful等轻量级Http协议相互调用。服务各自有自己单独的职责,服务之间松耦合。服务之间隔离性强。

缺点:分布式系统开发的技术成本高(容错、分布式事务等)。​ 粒度太细导致服务太多,维护成本高。架构非常复杂,运维,监控,部署难度提高。

微服务架构的常见概念

服务治理:
服务治理就是进行服务的自动化管理,其核心是服务的注册与发现。
服务注册:服务实例将自身服务信息注册到注册中心。
服务发现:服务通过注册中心,获取到已经注册到注册中心的服务实例的信息,去请求他们提供服务。
服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到。
服务调用:多个服务之间的远程调用。主流的远程调用的技术有基于HTTP请求的RESTFul接口及基于TCP的RPC协议。
在这里插入图片描述
服务网关:不同的微服务一般会有不同的网络地址,而外部客户端可能需要调用多个服务的接口才能完成一个业务需求。网关是将所有API调用统一接入到API网关层,由网关层统一接入和输出。一个网关的基本功能有:统一接入、安全防护、协议适配、流量管控、长短链接支持、容错能力。请添加图片描述
服务容错:在微服务当中,一个请求经常会涉及到调用几个服务,如果其中某个服务不可用,没有做服务容错的话,极有可能会造成一连串的服务不可用,这就是雪崩效应。
服务容错的三个核心思想是:

  • 不被外界环境影响。
  • 不被上游请求压垮。
  • 不被下游响应拖垮。

请添加图片描述
链路追踪:一次请求往往需要涉及到多个服务。这些服务,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要对一次请求涉及的多个服务链路进行日志记录,性能监控即链路追踪。

微服务常见的解决方案

Spring Cloud

官网地址: https://www.springcloud.cc/ (中文)
官网地址: https://spring.io/projects/spring-cloud (英文)

Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

Spring Cloud组件介绍
Eureka:一个基于 Rest 服务的服务治理组件,包括服务注册中心、服务注册与服务发现机制的实现,实现了云端负载均衡和中间层服务器的故障转移。
Hystrix:容错管理工具,实现断路器模式,通过控制服务的节点,从而对延迟和故障提供更强大的容错能力。
Ribbon:客户端负载均衡的服务调用组件。
Feign:基于 Ribbon 和 Hystrix 的声明式服务调用组件。
Zuul:微服务网关,提供动态路由,访问过滤等服务。

Spring Cloud Alibaba

致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。依托 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。

Spring Cloud Alibaba 组件介绍
Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
Nacos:一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Dubbo:Apache Dubbo™ 是一款高性能 Java RPC 框架。
Seata:阿里巴巴开源产品,一个易于使用的高性能微服务分布式事务解决方案。

微服务技术对比

在这里插入图片描述

常用的微服务组件

在这里插入图片描述

微服务架构图

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29340.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32速成笔记—串口通信

文章目录 一、什么是串口通讯二、串口通讯有什么用三、STM32的串口通信四、串口通信相关概念4.1 波特率4.2 全双工和半双工4.3 同步通信和异步通信 五、硬件连接六、串口通讯程序配置6.1 使能串口时钟和GPIO时钟6.2 初始化GPIO6.3 初始化串口参数6.4 使能串口6.5 串口接收中断6…

用python写网络爬虫

第二章 数据抓取 首先 , 我们会介绍一个叫 做Firebug Lite 的浏览器扩展, 用 于检查网页 内容 , 如 果你有一些网络开发背景的话, 可能 己经对该扩展十分熟悉 了 。 然后 ,我们会介绍三 种抽取网 页数据的 方法 &…

java【抽象类与接口】

抽象类与接口 1 抽象类1.1 定义与使用1.2 抽象类和抽象方法使用原则 2 接口2.1 定义2.2 使用规则 3. JDK中内置接口3.1 Comparable接口3.2 Cloneable接口 抽象类与接口的对比 前言:如果强制要求子类必须覆写一些方法,则就会用到抽象类和抽象方法 1 抽象类…

使用 MATLAB 进行气象激光雷达图像分析(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

STM32——01-开发软件Keil5及STM32CubeMX的安装

1.1开发环境的安装 编程语言:C语言 需要安装的软件有两个:Keil5和STM32CubeMX 安装 安装包(不需要太新,以 MDK324 为例,最新的 MDK327 有问题) 安装过程一路下一步即可(建议不要安装在 C …

2023-06-09:什么是Redis事务?原理是什么?

2023-06-09:什么是Redis事务?原理是什么? 答案2023-06-09: Redis中的事务是以一组命令的形式出现的,这些命令被认为是最小的执行单位。事务可以保证在一个单独独立的隔离操作中执行所有命令,而且所有命令…

深度研究微软的资产负债表和财务状况以及未来投资价值

来源:猛兽财经 作者:猛兽财经 微软股票的关键指标 猛兽财经认为,微软公布的2023财年第三季度财务业绩,有三个关键指标值得投资者关注。 第一个关键指标是利息收入。微软的利息收入目前已经同比增长了44%,从2022财年第…

从搭建hadoop开始学习大数据中分而治之的MapReduce(伪集群模式)

环境准备 首先需要将如下四个必要的文件下载到计算机(已经附上了下载地址,点击即可下载)。 Vmware Workstation 17.x 【官方的下载地址】 CentOS-7-x86_64-Minimal-2009【阿里云镜像站下载地址】 openjdk-8u41-b04-linux-x64-14_jan_2020【开…

踏上极速向未来之旅!——2023年量化科技嘉年华·专场回顾

2023年6月2日—3日,“2023量化科技嘉年华”在上海世博中心召开,这场为期两天的量化科技盛会,多方位呈现了量化科技创新成果,吸引了众多关注。 在嘉年华的第二天,多场主题论坛同步进行。 由华锐技术主办的“极速向未来…

ChatGPT 4 的 6 个最佳使用场景

作者:SYDNEY BUTLER 译者:明明如月 无论是在 ChatGPT 中还是通过 API,对 OpenAI 的 GPT-4 模型的访问比 GPT-3.5 限制更多。这意味着你需要慎重考虑在何种情况下使用 GPT-4,并选择性地将最适合的任务交给它,以便让其发…

短视频seo源代码部署步骤

一、 部署短视频SEO矩阵系统源代码,您需要遵循以下步骤: 准备服务器环境 首先,您需要准备一个服务器环境来托管源代码。您可以选择云服务器(例如AWS,阿里云等)或自己的私人服务器。 安装所需软件 在服务器…

Hbase

Hbase 思考环节: 1.什么是hbase 1.1简介 HBase 是一个面向列式存储的分布式数据库,其设计思想来源于 Google 的 BigTable 论文。 HBase 底层存储基于 HDFS 实现,集群的管理基于 ZooKeeper 实现。 HBase 良好的分布式架构设计为海量数据的…

图神经网络 GNN 入门

参考链接 A Gentle Introduction to Graph Neural Networks (distill.pub) 零基础多图详解图神经网络(GNN/GCN)【论文精读】_哔哩哔哩_bilibili 目录 图的基本构成 图的表示方法 图的示例 图网络的基本任务 图网络的处理 影响图网络效果的超参数 …

快速创建Django项目

环境搭建 安装Django之前需要先安装python环境和pycharm。 目前 Django 1.6.x 以上版本已经完全兼容 Python 3.x。 python安装教程:https://blog.csdn.net/David_house/article/details/100110542 项目创建 打开pycharm,选择文件–>新建项目 创建D…

HUAWEI悦盒ec6108v9c 如何刷成海纳思系统(家用低功耗服务器,使用Home Assistant服务)

环境: 1.HW悦盒ec6108v9c一套 2.16G U盘 3.格式化软件USB_format.exe 4.固件 mv100-mdmo1g-usb-flash.zip(底层是Ubuntu 20.04系统) 5.十字螺丝刀 6.翘片/薄铲子 7.有线网络环境 8.镊子/回形针 问题描述: 最近玩智能家居…

【Linux】基本指令,拥抱Linux的第一步

[Linux]常见指令 Linux基本指令指令的本质ls指令pwd指令cd指令touch指令mkdir指令(重要)rmdir&&rm指令(重要)man指令(重要)cp指令(重要)mv指令(重要)重定向cat指令more指令less指令(重要…

Android Retrofit 给你的接口加上缓存

转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/131200501?spm1001.2014.3001.5501 本文出自 容华谢后的博客 往期回顾: Android Retrofit RxJava使用详解 Android 探讨一下Retrofit封装的最佳姿势 Android 谈谈我所理解的…

export 和 export default 的区别

一、铺垫 ES6模块化主要包含以下3种用法: ① 默认导出和默认导入---export default ② 按需导出和按需导入---export ③ 直接导入并执行模块中的代码 二、默认导出 语法:export default 需要共享的成员 创建一个共享的数据 order.js let name…

详解Eureka服务注册和调用

目录 1.概述 2.环境 2.1.项目结构 2.2.项目架构 2.3.依赖 3.注册中心 3.1.配置使用 3.2.管理页 3.3.集群 4.服务注册 5.服务调用 5.2.Ribbon 5.3.Feign 5.4.OpenFeign 1.概述 我们把从外部进入到微服务集群里的流量称为“南北流量”、微服务集群节点间流转的流量…

从零开发短视频电商 Jmeter插件安装和常用插件

Jmeter插件安装和常用插件 插件安装方式 一种是手动安装各种插件,下载对应的jar包,放到lib\ext目录下就可以使用了。另一种是通过漂亮的 UI ,jmeter 插件管理器Plugins Manager可以方便的管理其他插件的下载和更新。安装一次插件管理器&…