01-35-springcloud-zk-eureka-consul-cap-父工程

news2024/11/23 16:57:57

01-springcloud-入门理论等:

微服务

1、什么是微服务

  • 微服务是一种架构风格
  • 一个应用拆分为一组小型服务
  • 每个服务运行在自己的进程内,也就是可独立部署和升级
  • 服务之间使用轻量级HTTP交互
  • 服务围绕业务功能拆分
  • 可以由全自动部署机制独立部署
  • 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术

2、分布式微服务架构-落地维度

服务调用,服务降级,服务注册与发现,服务熔断,负载均衡,服务消息队列,服务网关,配置中心管理,自动化构建部署,服务监控,全链路追踪,服务定时任务,调度操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cpNbPGwL-1670856750196)(png/image-20220407195615188.png)]

SpringCloud=分布式微服务架构的站式解决方案,是多种微服务架构落地技术的集合体,俗称微服务全家桶

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3XO15mTf-1670856750198)(png/image-20220411215020526.png)]

Spring Cloud技术栈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rDZq3cP4-1670856750200)(png/image-20220411215049198.png)]

3、springboot和springcloud选型

  • Spring Boot 2.X 版

    源码地址:https://github.com/spring-projects/spring-boot/releases/

    Spring Boot 2 的新特性:https://github.com/spring-projects/spring-boot/wiki/spring-Boot-2.0-Release-Notes

    通过上面官网发现,Boot官方强烈建议你升级到2.X以上版本

  • Spring Cloud H版

    源码地址:https://github.com/spring-projects/spring-cloud

    官网:https://spring.io/projects/spring-cloud

  • Spring Boot 与 Spring Cloud 兼容性查看

    文档:https://spring.io/projects/spring-cloud#adding-spring-cloud-to-an-existing-spring-boot-application

    JSON接口:https://start.spring.io/actuator/info

后续使用到的技术版本,参考尚硅谷教程

maven地址:为了确保后期不出问题,暂和尚硅谷教程版本一致。

https://blog.csdn.net/swadian2008/article/details/113530102

https://archive.apache.org/dist/maven/maven-3/3.5.2/binaries/

  • Cloud - Hoxton.SR1
  • Boot - 2.2.2.RELEASE
  • Cloud Alibaba - 2.1.0.RELEASE
  • Java - Java 8
  • Maven - 3.5及以上
  • MySQL - 5.7及以上

父工程的创建

约定 > 配置 > 编码

1、创建聚合父工程8步

1、New Project - maven工程 - create from archetype: maven-archetype-site
2、聚合总父工程名字
3、Maven选版本
4、工程名字
5、字符编码 - Settings - File encoding
6、注解生效激活 - Settings - Annotation Processors
7、Java编译版本选8
8、File Type过滤 - Settings - File Type

git地址:XXXXXXXXXXXX或者参考https://blog.csdn.net/u011863024/article/details/114298270

2、DependencyManagement和Dependencies

dependencyManagement:管理依赖版本号,只是声明依赖,并不实现引入

Dependencies:子项目声明找父类版本号,父类没有,使用子项目具体版本。只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom。

3、初步模块创建

简写创建,详情参考git或者尚硅谷视频教程

1)、支付模块构建:

建Module,改POM,写YML,主启动,业务类(cloud-provider-payment8001

构建表,实体对象,mapper等

工程重构(cloud-api-commons)

Eureka基础知识

1、什么是服务治理

一句话:对多个服务的管理。管理包含调用,负载,容错,注册发现。

Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理,在传统的RPC远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

2、什么是服务注册与发现

Eureka采用了CS的设计架构,Eureka Sever作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到 Eureka Server并维持心跳连接。这样系统的维护人员就可以通过Eureka Server来监控系统中各个微服务是否正常运行。

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息比如服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何RPC远程框架中,都会有一个注册中心存放服务地址相关信息(接口地址)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uD8K9am8-1670856750201)(png/image-20220411220714456.png)]

3、Eureka两个组件

Eureka Server提供服务注册服务

各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观看到。

EurekaClient通过注册中心进行访问

它是一个Java客户端,用于简化Eureka Server的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向Eureka Server发送心跳(默认周期为30秒)。如果Eureka Server在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

4、EurekaServer服务端安装

git(cloud-eureka-server7001) cloud-provider-payment8001 cloud-consumer-order80

5、EureKa集群

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YLqGB33Z-1670856750202)(png/image-20220411221110020.png)]

服务注册:将服务信息注册进注册中心

服务发现:从注册中心上获取服务信息

实质:存key服务命取value闭用地址

1、先启动eureka注主册中心

2、启动服务提供者payment支付服务

3、支付服务启动后会把自身信息(比服务地址L以别名方式注朋进eureka

4、消费者order服务在需要调用接口时,使用服务别名去注册中心获取实际的RPC远程调用地址

5、消去者导调用地址后,底屋实际是利用HttpClient技术实现远程调用

6、消费者实癸导服务地址后会缓存在本地jvm内存中,默认每间隔30秒更新—次服务调用地址

问题:微服务RPC远程服务调用最核心的是什么
高可用,试想你的注册中心只有一个only one,万一它出故障了,会导致整个为服务环境不可用。

解决办法:搭建Eureka注册中心集群,实现负载均衡+故障容错。互相注册,相互守望。

集群搭建测试

cloud-eureka-server7002 cloud-provicer-payment8001 cloud-provicer-payment8002

  • 找到C:\Windows\System32\drivers\etc路径下的hosts文件,修改映射配置添加进hosts文件
127.0.0.1 eureka7001.com
127.0.0.1 eureka7002.com
  • 修改cloud-eureka-server7001配置文件,互相配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uFyAW4Bt-1670856750202)(png/image-20220411221245261.png)]

6、actuator微服务信息完善

主机名称:服务名称修改(也就是将IP地址,换成可读性高的名字)

修改cloud-provider-payment8001,cloud-provider-payment8002

修改部分 - YML - eureka.instance.instance-id

修改部分 - YML - eureka.instance.prefer-ip-address,访问信息有IP信息提示

7、服务发现Discovery

  • 修改cloud-provider-payment8001的Controller

8、EureKa自我保护理论(重要)

一句话:CAP(AP),保证不会因为网络原因对微服务立刻清理。好死不如赖活着

保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。

如果在Eureka Server的首页看到以下这段提示,则说明Eureka进入了保护模式:

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THANTHRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUSTTO BE SAFE

导致原因

一句话:某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存。属于CAP里面的AP分支。
为什么会产生Eureka自我保护机制?

为了EurekaClient可以正常运行,防止与EurekaServer网络不通情况下,EurekaServer不会立刻将EurekaClient服务剔除

什么是自我保护模式?

默认情况下,如果EurekaServer在一定时间内没有接收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒)。但是当网络分区故障发生(延时、卡顿、拥挤)时,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。Eureka通过“自我保护模式”来解决这个问题——当EurekaServer节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。

自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留)也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定。

禁止自我保护:eureka.server.enable-self-preservation = false可以禁用自我保护模式

zookeeper

zookeeper是一个分布式协调工具,可以实现注册中心功能。关联zookeeper相关。

https://gitee.com/HaoZhouRS/study-notes/tree/master/notes/zookeeper

cloud-provider-payment8004,cloud-consumerzk-order80

consul

Consul官网:https://www.consul.io/

Consul下载地址:https://www.consul.io/downloads

Consul是一套开源的分布式服务发现和配置管理系统。提供了微服务系统中的服务治理、配置中心、控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之Consul提供了一种完整的服务网格解决方案。

  • 服务发现 - 提供HTTP和DNS两种发现方式。
  • 健康监测 - 支持多种方式,HTTP、TCP、Docker、Shell脚本定制化
  • KV存储 - Key、Value的存储方式
  • 多数据中心 - Consul支持多数据中心
  • 可视化Web界面

https://www.springcloud.cc/spring-cloud-consul.html

cloud-providerconsul-payment8006,cloud-consumerconsul-order80,

CAP

组件名语言CAP服务健康检查对外暴露接口Spring Cloud集成
EurekaJavaAP可配支持HTTP
ConsulGoCP支持HTTP/DNS
ZookeeperJavaCP支持客户端已集成

CAP:

  • C:Consistency (强一致性)
  • A:Availability (可用性)
  • P:Partition tolerance (分区容错性)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gukCS5dc-1670856750203)(png/image-20220411223122463.png)]

最多只能同时较好的满足两个。

CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求。

因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:

CA - 单点集群,满足—致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。
AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

1、AP架构(Eureka)

当网络分区出现后,为了保证可用性,系统B可以返回旧值,保证系统的可用性。

结论:违背了一致性C的要求,只满足可用性和分区容错,即AP

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yRi9jnHb-1670856750203)(png/image-20220411223436160.png)]

2、CP架构(ZooKeeper/Consul)

当网络分区出现后,为了保证一致性,就必须拒接请求,否则无法保证一致性。

结论:违背了可用性A的要求,只满足一致性和分区容错,即CP

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SRiwhsvB-1670856750204)(png/image-20220411223514767.png)]

学习路径:https://space.bilibili.com/302417610/,如有侵权,请联系q进行删除:3623472230

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

产品外观设计一一素描

在反映产品外观设计时,应根据产品的不同功能选择反映方法,以便更清晰地表达创作者的设计理念。首先,我们应该运用透视图的规律性来构建空间框架结构,将镜头中的许多外观元素有机地结合起来,并根据设计科学地安排镜头中…

Portal数据清理过程说明

Portal门户集成平台作为统一的门户搭建和展现平台,提供综合门户、信息门户、应用门户、数据门户等不同类型门户的建设能力,可以为企业构建门户网站、内部业务中心,同时对企业文档资料进行整合、统一归档,对内部、外部提供资料。通…

基于微信小程序的劳务咨询系统设计与实现-计算机毕业设计

项目介绍 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于劳务咨询服务平台小程序当然也不能排除在外,随着网络技术的不断成熟,带动了劳务咨询服务平台小程序&#xff0…

[附源码]计算机毕业设计第三方游戏零售平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

互联网电商大厂的分布式事务使用案例

事务的原子性、持久性可确保在一个事务内,更新多条数据都成功/失败。在一个系统内部,我们可以使用数据库事务来保证数据一致性。那如果一笔交易,涉及到跨多个系统、多个数据库的时候,用单一的数据库事务就没办法解决了。 在之前大…

Altova MissionKit Enterprise 2023 SP1 Crack

屡获殊荣的 XML、JSON、SQL 和 UML 工具套件 以低于 2 个的价格获得 7 个 XML、JSON SQL 和 UML 工具! Altova MissionKit 是面向信息架构师和应用程序开发人员的企业级 XML、JSON、SQL 和 UML 工具的软件开发套件。MissionKit 包括 Altova XMLSpy、MapForce、Styl…

Python 中的垃圾回收机制总结(1)

1.背景 对于Python来说,一切皆为对象,所有的变量赋值都遵循着对象引用机制。 程序在电脑上运行的时候,需要在内存中开辟出一块空间,用于存放运行时产生的临时变量,一方面,内存的容量是有限的;…

JNPF3.4.5消息模块:多渠道应用,配置灵活多样,满足更多使用场景

自11月15日,JNPF 3.4.5 JAVA版本上线,就受到了众多用户的广泛好评,此次更新为用户带来了不同以往的使用体验。 在本次更新中,所有工作流都可以实现自主配置消息模板的操作,同时包括站内信,也可以实现自主配…

sublime json美化

sublime 的插件 json美化感觉很难用,好多正常的json串都 不能正常解析 ,自己写了一个json解析插件,此插件跟网上教程的json美化插件 不同的是: 只对json的特殊字符进行格式化 { [ ] } : , 这种不是很严格但是正好解决了我的问…

【Redis】Redis 持久化

文章目录概述RDB触发机制如何恢复 rdb 文件?RDB 优点:RDB 缺点:AOFAOF 优点AOF 缺点概述 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么服务器一旦进程退出,服务器中的数据库状态也会消失…

【C语言进阶】一文速通面试中的指针相关疑难杂症(内含模拟库函数 qsort 的实现)

目录 🥇前言🥇: 一、指向函数指针数组的指针🤯: 1.书写格式🦚: 2.指向函数指针数组指针示例🦩: 二、回调函数🧐: 1.回调函数的定义&#x1f99…

嵌入式软件工程师技能树——应用编程/网络编程/驱动开发/操作系统/计算机网络

文章目录Linux驱动开发1、Linux内核组成2、用户空间与内核的通讯方式有哪些?3、系统调用read/write流程4、内核态用户态的区别5、bootloader内核 根文件的关系6、BootLoader的作用7、BootLoader两个启动阶段1、汇编实现,完成依赖于CPU体系架构的设置&…

Win10安装Linux虚拟机-安装与使用

Win10安装Linux虚拟机-安装与使用 1、VMware 的下载 VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。 下载地址:https://customerconnect.vmware.com/en/downloads/#all_products 在搜索中…

用 Charles 断点调试 HTTPS 请求,原理解析

现在的网站基本都是 https 的,而 charles 是常用的 http 抓包工具,所以用 charles 调试 https 请求是常见的需求。 今天就分享下如何用 charles 调试 https 请求,如何打断点。 首先安装 charles,点击 start recording&#xff1…

FineReport平台数据分析-图表显示部分系列接口

1. 概述 1.1 应用场景 当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。以决策报表为例,实现效果如下图: 1.2 实现思路 通过FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartInde…

静态HTML旅行主题网页作业——青岛民俗7页html+css+javascript+jquery 地方民俗网页设计与实现

👨‍🎓静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计👩‍🎓,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…

web开发:linux常用命令总结

1.关于目录操作: (1)ls 列出当前目录下都有哪些文件/目录 也可以写成: ls 指定目录 列出指定目录下的文件/目录 还可以写成 ls -l 指定目录 以列表的形式列出 或缩写成 ll 指定目录 (2)pwd 查看当前…

shared_ptr

先看源码 template<typename _Tp> class shared_ptr : public __shared_ptr<_Tp> {template<typename... _Args>using _Constructible typename enable_if<is_constructible<__shared_ptr<_Tp>, _Args...>::value>::type;template<ty…

【TuyaOS开发之旅】环境搭建

前言 涂鸦最近更新了打磨良久的TuyaOS&#xff0c;整体使用感受非常的nice。所以决定写一个专栏讲解一下TuyaOS的入门使用&#xff0c;来方便小白快速的入门和熟悉TuyaOS的开发。 官方环境搭建教程 Tuya Wind IDE-TuyaOS-涂鸦开发者 报错和解决 暂无 补充 程序下载方法 …

MetaFormer实际上是你所需要的视觉

transformer在计算机视觉任务中显示出了巨大的潜力。人们普遍认为&#xff0c;他们基于注意力的token混合器模块对他们的能力贡献最大。然而&#xff0c;最近的工作表明&#xff0c;transformer中基于注意力的模块可以被空间mlp取代&#xff0c;得到的模型仍然表现相当好。基于…