百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

微服务架构组件详解(8大核心组件)

ccwgpt 2024-10-05 14:08 22 浏览 0 评论

微服务架构组件主要是:服务的发现、注册、路由、熔断、降级、分布式配置等,下面我分别详解@mikechen

1.服务注册

注册系统中所有服务的地方,所有的服务都会注册在这里,如下图所示:

关系调用说明:

  • 服务生产者启动时,向服务注册中心注册自己提供的服务;
  • 服务消费者启动时,在服务注册中心订阅自己所需要的服务;
  • 消费者从提供者中调用服务;

2.服务注册

首先服务注册与发现是来自于微服务架构的产物。

服务注册指的是将自身服务信息注册到注册中心,服务信息包括:服务所在主机IP、服务的端口号Port、暴露服务协议等信息。


如下图所示:

Service B 把自己注册到注册中心,这就叫 服务注册。


当下用于服务注册的工具非常多ZooKeeper,Consul,Etcd, 还有Netflix家的Eureka 等等。

不论使用那种工具,服务注册一定是要确保高可用的,否则重则的是所有的服务都没法调用,轻则新的服务不能上线。

3.服务发现

服务发现即通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务。

如下图所示:

ServiceA去注册中心获取服务实例的信息,这就是服务发现。

4.负载均衡

当多个服务提供者时,可以根据负载均衡算法,比如:如简单轮询、随机连接等,自动地选择需要调用的服务地址。

例如:Spring Cloud 微服务架构中的Ribbon,客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问,在客户端就进行负载均衡算法分配。

如下图所示:

总共有七种负载均衡策略可供选择,可以根据自己的业务场景进行选择:

  1. 轮询RoundRobinRule:这也是Ribbon默认的策略
  2. 随机RandomRule;
  3. 响应时间权重ResponseTimeWeightedRule:为每个服务设置权重,响应时间越短,权重越大;
  4. 最少并发数策略BestAvailableRule;
  5. 重试策略RetryRule;
  6. 可用性敏感策略AvailabilityFilteringRule;
  7. 区域性敏感策略ZoneAvoidanceRule;

5.服务熔断

服务熔断其实可以理解为类似于电表的保险丝,一旦某个时刻电压过载,那么保险丝就熔断了。

服务熔断的实现,大体流程如下图所示:

对于熔断机制的实现,设计了三种状态:

1.熔断关闭状态(Closed)

服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。

2.熔断开启状态(Open)

在固定时间窗口内,比如:默认10秒,接口调用出错比率达到一个阈值,会进入熔断开启状态,进入熔断状态后,后续对该服务接口的调用不再经过网络。

3.半熔断状态(Half-Open)

在进入熔断开启状态一段时间之后,比如:Hystrix默认5秒,熔断器会进入半熔断状态。

6.服务网关

服务网关也称为API网关,是服务调用的唯一入口。

例如,在微服务架构中,Zuul是Spring Cloud中的微服务网关,是为微服务架构中的服务提供了统一的访问入口。

Gateway服务网关主要功能,如下图所示:

例如包含上图中的Gateway功能:

  1. 服务路由;
  2. 安全认证;
  3. 流量控制;
  4. 日志监控;
  5. 熔断保护等功能。

7.服务跟踪

随着微服务架构的流行,服务按照不同的维度进行拆分,在复杂的微服务架构系统中,会形成一个复杂的分布式服务调用链路,如下图所示:

面对复杂的调用链路就带来一系列问题:

  • 如何快速发现问题?
  • 如何判断故障影响范围?
  • 如何梳理服务依赖以及依赖的合理性?
  • 如何分析链路性能问题以及实时容量规划?

而链路追踪的出现正是为了解决这种问题,它可以在复杂的服务调用中定位问题。

例如:Spring Cloud Sleuth链路追踪 是 Spring Cloud的链路追踪组件,实现了分布式跟踪解决方案。

8.分布式配置中心

将本地化的配置信息,比如:properties、yml等配置信息,注册到配置中心,实现程序包在开发、测试、生产环境的无差别性方便程序迁移。

以上

更多分布式架构系列、阿里架构师进阶系列,请查看以下文章:

阿里架构师进阶从0到1全部合集(建议收藏)

相关推荐

十分钟让你学会LNMP架构负载均衡(impala负载均衡)

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

AGV仓储机器人调度系统架构(agv物流机器人)

系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...

远程热部署在美团的落地实践(远程热点是什么意思)

Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...

springboot搭建xxl-job(分布式任务调度系统)

一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...

大模型:使用vLLM和Ray分布式部署推理应用

一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...

国产开源之光【分布式工作流调度系统】:DolphinScheduler

DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...

简单可靠高效的分布式任务队列系统

#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...

虚拟服务器之间如何分布式运行?(虚拟服务器部署)

  在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...

一文掌握 XXL-Job 的 6 大核心组件

XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...

京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?

京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...

企业级项目组件选型(一)分布式任务调度平台

官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...

python多进程的分布式任务调度应用场景及示例

多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...

SpringBoot整合ElasticJob实现分布式任务调度

介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...

SpringBoot任务调度:@Scheduled与TaskExecutor全面解析

一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...

取消回复欢迎 发表评论: