在这里插入图片描述

微服务组件包括哪些?

一个完整的微服务包括的组件:注册中心、配置中心、熔断、限流、链路跟踪、路由
在微服务中,有些组件为必须组件,(必须启动存在),客户端才能正常调用。

  1. 必须组件:注册中心、后台服务(Provider)
  2. 非必须组件:配置中心、熔断、限流、链路跟踪、路由

在这里插入图片描述

需要用到的组件

在这里插入图片描述

注册中心组件

注册中心组件

什么是注册中心

注册中心可以说是微服务架构中的“”地址簿“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。

为什么需要注册中心?

服务注册中心给客户端提供可供调用的服务列表,客户端在进行远程服务调用时,根据服务列表然后选择服务提供方的服务地址进行服务调用。服务注册中心在分布式系统中大量应用,是分布式系统中不可或缺的组件

注册中心是整个服务调用的核心部分,如果服务不存在注册中心,那么通过网关会调用不到,导致失败。

注册中心–地址簿

在这里插入图片描述

注册中心分类注册中心分为两大类

  1. 临时实例
    在nacos中Ja客端自动注册的服务实例一般为临时实例并且客户端会间隔几秒发送心跳到注册中心,告诉注册中心是否还存活,如果不存在,那么注册中心会自动从列表中去掉此节点

  2. 永久实例
    可以通过i的方式人工填写客户端信息,注册中心不会去掉节点(不管是否在线)。注册中心会主动检查客户端是否在线(手工注入)

注册中心-类型

常见的注册中心

在这里插入图片描述

consul、eureka、nacos对比

配置中心
eureka不支持
consul支持但用起来偏麻烦,不太符合springBoot框架的命名风格,支持动态刷新
nacos支持用起来简单,符合springBoot的命名风格,支持动态刷新

注册中心
eurekad
依赖:依赖ZooKeeperd
应用内/外:直接集成到应用中,依赖于应用自身完成服务的注册与发现,
ACP原则:遵循AP(可用性+分离容忍)原则,有较强的可用性,服务注册快,但牺牲了一定的一致性。
版本迭代:目前已经不进行升级
集成支持: 只支持SpringCloud集成
访问协议:HTTP
雪崩保护:亨持雪崩保护(限流)
界面:英文界面,不符合国人习惯上手:容易

consule
依赖:不依赖其他组件:
应用内/外:属于外部应用,侵入性小
ACP原则:遵循CP原则(一致性+分离容忍) 服务注册稍慢,由于其一致性导致了在Leader挂掉时重新选举期间真个consul 不可用。
版本迭代:目前仍然进行版本迭代
集成支持:支持SpringCloud K8S集成
访问协议:HTTP/DNS
雪崩保护:不支持雪崩保护

nacos(常用)
依赖:不依赖其他组件
应用内/外:属于外部应用,侵入性小
ACP原则:通知遵循CP原则(一致性+分离容忍)和AP原则(可用性+分离容忍):
版本迭代:目前仍然进行版本迭代
集成支持:支持Dubbo、SpringCloud、K8S集成
访问协议:HTTP/动态DNS/UDP
雪崩保护:支持雪崩保护

配置中心组件

什么是配置中心

管理各个环境的配置文件参数,比如说数据库,缓存,存储。业务应用并且支持管理每个不同的环境的配置

为什么需要配置中心
  1. 本地配置在服务启动加载,修改配置不需要重启服务
  2. 多个环境(dev、prod、sit、uat)容易混淆,会产生错误,导致服务运行异常。
  3. 出现配置错误时,不容易回滚到指定的版本
配置中心演进

从单一的单机部署到多机的负载均衡,以及后来应用的微服务容器化。不可以避免的使用多个环境的配置。
在这里插入图片描述

常见配置中心功能对比

在这里插入图片描述

API路由网关组件

什么是AP1网关1

AP!网关是微服务架构中提供路由转发与鉴权等功能。首先,它会提供最基本的路由服务,将客户端请求转发后台业务服务。其次,作为一个入口,它还可以进行认证,鉴权,限流等操作。

为什么需要网关?
  1. 客户端访问的统一对接的接口
  2. 防止内部接口直接暴露给外部客户端(隐藏内部服务)
  3. API网关通过提供一个额外的保护层来防止恶意攻击,例如SQL注入,XML解析器漏洞和拒绝服务
  4. 服务网关的前置过滤器中,所有请求过来进行权限校验
  5. 日志访问与审计(获取客户真实IP)
网关架构说明
  1. 调用之前所有的客户端通过7层负载均衡反向代理后台的服务。
  2. 调用之后所有的客户端通过微服务框架网关负载到后台的服务。
    在这里插入图片描述
常见网关组件
  1. KONG是一个通过lua-nginx-module实现的在Nginx中运行的Lua应用程序:
  2. Spring Cloyd Gateway是由Spring官方基于Spring5.0等技术开发的网关,目的是代替原先版本中的Zuule (常用)
  3. Zuuk

服务限流组件

什么是服务限流
  1. 服务限流:指当系统资源不够的情况下,不足以应对大量的用户与数据接口清求时,为了保证有限的资源能够正常服务,因此对系统按照预设的规则进行流量限制或功能限制的一种方法。
为什么需要限流?
  1. 发生错误或者超时,不让调用接口,调用本地fallback(容错)熔断
  2. 解决高并发请求,一旦达到规定请求,熔断,报错
    在这里插入图片描述
组件代表
  1. 阿里Sentinel(哨兵)--------限流
  2. Hystrix (Spring Cloud)豪猪--------熔断(配置中心配置熔断时间,研发添加熔断功能)

链路跟踪(调用链)组件:

什么是调用链(APM)

调用链是整个分布式系统中跟踪一个用户请求的过程,包括数据采集、数据传输、数据存储、数据分析和数据可视化展示工具也是微服务中代码的调试和服务监控的性能分析工具。

为什么需要调用链?

分布式Web系统中,客户端的一次请求操作,可能需要经过系统中多个模块、多个中间件、多台机器的相互协作才能完成,并且这一系列调用请求中,有些是串行处理的,有些是并发执行的,那么如何确定客户端的一次操作背后调用了哪些应用、哪些模块,经过了哪些节点,每个模块的调用先后顺序是怎样的,每个模块的性能问题如何?随着业务系统模型的日趋复杂化,分布式系统中急需一套链路追踪(Trace)系统来解决这些问题(快速定位)。

在这里插入图片描述
注意!!!
采样率越高,数据越详细,性能损耗越多

  1. 为什么要用这个组件(能解决什么问题)
  2. 有哪些组件
  3. 优劣势
  4. 性能测试
常见组件

SkyWalkig 用于追踪、监控和诊断分布式系统,特别是使用微服务架构,云原生或容积技术

  1. agent:采集tracing(调用链数据)和netric(指标)信息并上报:
  2. OAP:收集tracing和metric信息通过analysis core模块将数据放入持久化容器中(ES,H2(内存数据库),mysql等等),并进行二次统计和监控告警(11800端口)
  3. webapp:前后端分离,前端负责呈现,并将查询请求封装为graphQL提交给后端,后端通过ribbon做负载均衡转发给OAP集群,再将查询结果渲染展示

Zipkin的一个叫Brave的组件来实现对应用内部的性能分析数据采集,通过实现一系列的java拦截器,来做到对htp请求、数据库访问的调用过程跟踪。
Pinpoint 是开源在github上的一款APM监控工具,它是用Java编写的,用于大规模分布式系统监控。它对性能的影响最小 (只增加约3%资源利用率),安装agent是无侵入式的。

调用链调用过程

通过调用接口可以查看到每个接口所调用的层次,并且可以查看调用的方法名。
在本例中,客户端访问网关服务在调用系统中会显示,服务端先启动tomcat,如果程序调用auth方法,最后对外服务。
也可以看到接口调用时间

在SOA架构发展之后,相比Micro Service能够基于框架快速的开发应用程序,甚至都不需要专用的启动web服务(性能瓶颈) 来启动微服务。而自身的软件框架已经携带。下图,自带了http tomcat(默认并发1000)
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐