K8S-微服务组件

2023-11-06

在这里插入图片描述

微服务组件包括哪些?

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

  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)
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

K8S-微服务组件 的相关文章

随机推荐

  • fatal: Authentication failed for又不弹出用户名和密码 解决办法

    各位 如果能弹出来 一定是你账号密码搞错了 就别继续看了 image png 切换命令行 image png 依然报错 说到这个问题 又可以长篇大论了 我使用的是tortoisegit window电脑平常都是用ppk文件组合 netrc文
  • 51单片机---IE寄存器,TCON寄存器,TMOD寄存器

    寄存器IE 中断允许寄存器IE的作用 是控制所有中断源的开放或禁止 以及每个中断源是否被允许 寄存器IE的位格式如下 EX0 外部中断0允许位 EX0 1 允许外部中断0中断 EX0 0 禁止外部中断0中断 ET0 T0溢出中断允许位 ET
  • KNN学习之图像分类与KNN原理

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 简介 KNN算法 即K近邻算法是一种监督学习算法 本质上是要在给定的训练样本中找到与某一个测试样本A最近的K个实例 然后统计k个实例中所属类别计数最多的那个类 就是A的类
  • Java进阶(2) - 特殊对象(Class类)

    存在的意义位于java lang包下 和java lang reflect包下的类共同支持java反射功能jvm在类加载时 在堆中为每个类生成一个Class对象 用于记录每个类的属性 方法等信息 同时每个对象生成时都有特殊的标记位来指向堆中
  • js预编译习题解题思路

    js预编译习题解题思路 function fn a c console log a function a var a 123 console log a 123 console log c function c function a if
  • Linux知识概括

    Linux知识概括 Linux介绍 VMware工具与远程登录 Linux目录结构 Vi和Vim编辑器 开关机与登录注销与用户管理 Linux常用系统文件 实用指令 其他常用指令 帮助指令 文件目录类 时间日期类 搜索查找类 压缩和解压类
  • Spring AOP如何使用AspectJ注解进行开发呢?

    转自 Spring AOP如何使用AspectJ注解进行开发呢 下文讲述Spring AspentJ中采用注解的方式定义切面 切入点和增强处理的示例 Annotation注解 注解名称 备注 Aspect 用于定义一个切面 Pointcut
  • 字节跳动P0级事故:实习生删除GB以下所有模型,直接上了今日头条......

    大家好 我是小猿 曾经我招过一个实习生 他曾经干过一件让我感到匪夷所思的事 我当时忙 让他把服务器重启 他直接来了个电源重启 最近脉脉上有网友爆料 字节跳动一位实习生删除了公司所有轻量级别的机器学习模型 什么是lite模型 该楼主表示 li
  • mysql优化之为什么我limit10也会全表扫描

    先上结果 优化前 优化后 工作中有一个业务场景一条命中记录会存储到一张命中记录A表 并且推送给用户 每一条推送记录存储到B表 AB是一对多的关系 现在一条sql语句是用户查看命中记录列表 按照命中的时间倒序排序 表结构如下 A表 CREAT
  • 上传大文件(文件流分段上传、base64分段转码)

    java http方式上传大文件 文件流分段上传 base64分段转码 李梦成的博客 CSDN博客 java 分块上传
  • 哪些因素影响阻抗控制?网格铜的妙用

    原文来自微信公众号 工程师看海 前文介绍了传输线 特性阻抗以及信号的反射概念 如果阻抗不连续信号会发生反射严重时将会导致系统不能正常工作 都有哪些参数会影响阻抗呢 了解相关参数后我们就可以知道有哪些方法来控制阻抗了 线宽W 走线加宽 则单位
  • sizeof笔试题

    http www xici net b700278 d44576087 htm 1 常规 char str1 Hello char str2 5 H e l l o char str3 6 H e l l o 0 char p1 Hello
  • Android有线IPV6总结(二):内核中RS与RA的一点学习

    RS Router Solicitation路由器请求 RA Router Advertisement路由器公告 在Android系统中我们想要打开一个网络接口 比如eth0 的ipv6功能 用命令的话我们有如下两种办法 1 echo 0
  • vscode ( Visual Studio Code )设置中文、字体和字号

    全拼是 Visual Studio Code 简称 VS Code 是由微软研发的一款免费 开源的跨平台代码编辑器 目前是前端 网页 开发使用最多的一款软件开发工具 下载网址 https code visualstudio com Down
  • WeChat结合文档开发

    1 获取accessToken 2 根据测试号给的ID和秘钥 生成accessToken 3 拿到accessToken之后 尝试使用其中的某一个接口 比如说消息推送 创建模板 生成模板ID 生成之后会产生模板ID 4 根据openID 模
  • 网络通信深入解析:探索TCP/IP模型

    http协议访问web 你知道在我们的网页浏览器的地址当中输入url 未必是如何呈现的吗 web浏览器根据地址栏中指定的url 从web服务器获取文件资源 resource 等信息 从而显示出web页面 web使用HTTP 超文本传输协议
  • linux bitcoin-qt程序运行时 缺少 libboost.so 动态库

    这是因为该程序在系统变量的路径下未找到自己的依赖库 所以就启动不了 执行将缺省的依赖库补上 能让程序搜索的到就可以了 bitcoin可执行程序的运行错误截图 执行打开后发生的错误提示 bitcoin qt home cly project
  • Linux epoll 详解

    最近 异想天开 想用D实现一个web服务器 似乎已经想这件事好久了 只不过之前是C 自然而然得开始研究epoll 早就听说过epoll的大名 只不过网上的教程似乎没多少 并且感觉也没怎么把用法给讲完整 好在 通过几天的学习 也算是有所积累
  • 解决使用InfluxDBClient报错influxdb.exceptions.InfluxDBClientError: 401 unauthorized

    解决方案 查看自己的InfluxDB数据库版本 如果版本是1 8 或是2 x 则 首先卸载influxdb pip uninstall influxdb 然后安装 pip install influxdb client ciso 后续使用i
  • K8S-微服务组件

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