微服务的原理以及多线程的使用

2023-05-16

分布式应⽤用核⼼心CAP知识:

CAP定理理: 指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不不可同时获得。
一致性(C):所有节点都可以访问到最新的数据
可用性(A):每个请求都是可以得到响应的,不不管请求是成功还是失败
分区容错性(P):除了全部整体⽹网络故障,其他故障都不不能导致整个系统不不可⽤用

CAP理理论就是说在分布式存储系统中,最多只能实现上⾯面的两点。⽽而由于当前的⽹网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性可用性之间进⾏行行权衡。

                                      

 各种注册中心支持的协议:

 

 结论:
分布式系统中P,肯定要满⾜足,所以只能在CA中二选⼀没有最好的选择,最好的选择是根据业务场景来进⾏行行架构设计;
如果要求一致性,则选择zookeeper/Nacos,如⾦金金融⾏行业 CP;
如果要求可⽤用性,则Eureka/Nacos,如电商系统 AP
CP : 适合⽀支付、交易易类,要求数据强一致性,宁可业务不可⽤用,也不能出现脏数据
AP: 互联网业务,比如信息流架构,不要求数据强一致,更更想要服务可用。

 

base理论:

CAP 中的一致性和可用性进⾏行行一个权衡的结果,核心思想就是:我们无法做到强⼀一致,但每个应用都可以根据自身的业务特点,用适当的⽅方式来使系统达到最终一致性,

                     

 微服务中的面向失败编程:

 限流、隔离、降级、熔断;

流量防卫兵sentinal

以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性
丰富的应⽤用场景:消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

完备的实时监控:Sentinel 同时提供实时的监控功能。

利用docker安装sentinel

1、导入依赖

 <!--流量防卫兵Sentinal-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

2、配置sentinel

 sentinel:
      transport:
        dashboard: 10.229.34.58:8858
        #  port 是这个模块与sentinel进行交互的端口,不能被占用因此选择较大的
        port: 9999 

3、运行之后,可以在sentinel的控制台设置流量控制等信息。

sentinel的流控配置是在控制台直接设置

                        

流量控制(flow control):原理是监控应⽤用流量的 QPS 或并发线程数等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。

 

 

 openfeign负载均衡整合sentinel流量控制

 1、导入sentinel流量控制依赖

  <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
        </dependency>

 2、开启feign对sentinel的支持

feign:
sentinel:
enabled: true

 

 3、创建容错类兜底数据,并实现service层中类的接口

@Service
public class VideoServiceFallBack implements VideoService {
    @Override
    public Video findById(int videoId) {
        // 兜底数据执行
        return null;
    }

    @Override
    public int save(Video video) {
        return 0;
    }
}

 service层中的VideoService接口需要配置fallback

@FeignClient(value = "xdclass-video-service",fallback = VideoServiceFallBack.class)

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

微服务的原理以及多线程的使用 的相关文章

随机推荐

  • ROS2的RVIZ2无法启动

    在新安装的 xff32 xff2f xff33 2中启动rviz2 xff0c 启动错误 xff0c 显示 Failed to create an OpenGL context BadValue integer parameter out
  • 【TCP 重传、滑动窗口、流量控制、拥塞控制】

    文章目录 重传机制超时重传快速重传SACK方法Duplicate SACK 滑动窗口流量控制那操作系统的缓冲区 xff0c 是如何影响发送窗口和接收窗口的呢 xff1f 窗口关闭 拥塞控制慢启动拥塞避免拥塞发生快速恢复 重传机制 TCP 实
  • 【TCP四次挥手】

    文章目录 TCP 四次挥手过程是怎样的 xff1f 为什么挥手需要四次 xff1f 第一次挥手丢失了 xff0c 会发生什么 xff1f 第二次挥手丢失了 xff0c 会发生什么 xff1f 第三次挥手丢失了 xff0c 会发生什么 xff
  • FreeRTOS事件组----任务同步

    有时 xff0c 应用程序的设计需要两个或多个任务才能彼此同步 例如 xff0c 考虑一个设计 xff0c 其中任务A接收一个事件 xff0c 然后将事件所需的一些处理提供给其他三个任务 xff1a 任务B xff0c 任务C和任务D 如果
  • Qt中给按钮设置颜色的方法

    Qt中给按钮设置颜色的方法 第一种 CSS风格第二种 使用QPalette类第三种 使用QColor的另一种方法 对于界面编程来说 xff0c 色彩无疑是一个重点关注的对象 xff0c 界面好不好看 xff0c 色彩占据一大半 这里我在学习
  • codeblocks下载安装教程(完整详细)

    最近又将codeblocks下载了一下 xff0c 将完整的过程记录一下 一 下载教程 进入codeblocks官网 xff0c http www codeblocks org 点击downloads 一般都会选择第一个Download t
  • 使用VSCode需要安装的一些插件

    下载安装VSCode 下载安装 xff1a https code visualstudio com Download 通用插件 Auto Close Tag xff1a 匹配标签 xff0c 关闭对应的标签 Auto Rename Tag
  • QNAP之Container Station(docker)配置Redis

    本文目的 xff1a 使QNAP通过内置的docker安装redis 安装篇 首先ContainerStation中直接搜redis xff0c 有一个qnap官方提供的3 07版本的redis xff08 3年前 xff09 命令处请务必
  • QNAP之基于Container Station(docker)创建Ubuntu可视化桌面vnc

    型号 xff1a TS 231P 配置 xff1a ARM Cortex A15 CPU 64 1 70GHz 1G内存 目的 xff1a 为nas配置一个基于docker的vnc桌面 步骤概要 xff1a 1 创建一个ubuntu 2 安
  • Docker之基于docker-compose创建vsftpd容器

    前言 因为本人很菜 xff0c 每次配置vsftpd都头疼的要死 又因为网上vsftpd的教程会版本不一导致配置总是会出错 因此尝试使用docker来解决这个问题 而单纯只是用docker每次启动需要输入长串命令 xff0c 因此再结合do
  • 驻点运维人员被客户投诉要求换人,换还是不换?

    项目背景 xff1a 一位朋友提到了这样的情况 xff1a 项目背景是 xff1a 我的项目已经进入到运维阶段 xff0c 公司安排了一个运维人员现场驻点 到现在为止 xff0c 我这边已经多次接到客户的投诉 xff0c 说运维人员做事没有
  • 前端通过Ajax,向后端发送form表单的JSON数据,并后端接收JSON,使用fastJSON解析的一个完整案例

    前端代码 lt DOCTYPE html gt lt html lang 61 34 en 34 gt lt head gt lt meta charset 61 34 UTF 8 34 gt lt meta name 61 34 view
  • Linux下饥荒远程服务器配置教程(包含mod的配置)(19/08/22/更新游戏更新后搜索不到服务器的对策)

    目录 xff1a 前言安装环境库安装steamcmd创建默认文件夹关于mod后记 xff1a 关于游戏更新 keyword 关键词 xff1a 饥荒 服务器 配置 linux ubuntu 参考链接 xff1a https blog csd
  • QNAP之基于ContainerStation(docker)下Aria2的配置方法

    型号 xff1a TS 231P 配置 xff1a ARM Cortex A15 CPU 64 1 70GHz 1G内存 目的 xff1a 为nas配置一个基于docker的aria2服务器 qnap从某个版本开始支持ContainerSt
  • BGP协议

    BGP协议 工作层工作原理BGP简单配置 含密码认证配置个人图解BGP 工作层 BGP是工作在应用层的协议 xff0c 但基于传输层的TCP协议 工作原理 路由协议通常分为内部网关协议 xff08 IGP Interior Gateway
  • Docker配置Ubuntu容器、ssh远程连接该容器

    span class token comment 详细请参考 https juejin cn post 6982419819211522079 span span class token comment 1 拉取 ubuntu 镜像 spa
  • Eth-Trunk链路聚合原理、静态和动态配置

    Eth Trunk原理 静态和动态配置 Eth Trunk链路聚合概述Eth Trunk链路聚合模式静态配置模式LACP动态模式 Eth Trunk链路聚合概述 在组网中经常遇到的问题 xff0c 单条链路的宽带无法满足整个园区的流量需求时
  • FreeRTOS学习笔记

    FreeRTOS学习历程 总结 xff1a 关键词 xff1a 动态创建 静态创建 任务级 中断级 一个任务至少有一个 span class token keyword do span span class token punctuatio
  • idea2020.1 常用设置

    idea2020 1 常用设置 停用自动更新设置版权自动编译设置插件设置字体大小行间距idea卡顿调整修改快捷键自动生成序列化ID自动导入包 停用自动更新 停用自动更新 xff0c 因为我也不知道更新后能不能用 xfffc 设置作者和代码相
  • 微服务的原理以及多线程的使用

    分布式应 用核 心CAP知识 xff1a CAP定理 指的是在一个分布式系统中 xff0c Consistency xff08 一致性 xff09 Availability xff08 可用性 xff09 Partition toleran