SpringCloud基础知识整理-by 狂神

springCloud介绍

1、单体架构系统:

所有功能都放在一个应用里,便于开发,测试,部署。我们平时自己做的都是单体架构系统,便于开发,测试,部署。不过也有弊端,最主要体现在高访问,高并发。访问量过高的话就会非常卡,影响业务。仅仅靠单体架构本身,就很难突破这个瓶颈。

2、分布式和集群:

为了解决单体架构高访问,高并发问题,通常解决办法就是采用分布式和集群来做

3、SpringCloud:

SpringCloud就是一套工具,帮助我们很容易的搭建出来集群和分布式的架子出来。
	服务注册中心:Eureka
	客户端:Ribbon Feigh
	断路保护:Hystrix
配置服务,消息总线等概念

先导知识

JavaSE、
数据库、
前端、
Servlet、Http、
Mybatis、Spring、SpringMVC、SpringBoot、
Dubbo、Zookeeper、分布式基础、
MAVEN、GIIT、
AJAX、JSON

一、SpringCloud

框架:

	Spring IOC AOP
	SpringBoot。新一代的JAVAEE开发标准。自动装配,约定大于配置
	模块化 - all in one
	SpringCloud。

微服务架构四个核心问题

1、服务很多,客户端怎么访问,服务分发
2、服务之间如何通信。订单--->交易
3、服务太多了,如何治理。
4、服务挂了怎么办。

解决方案:

	Spring Cloud ----生态。
	
1、Spring Cloud NetFlix--一站式解决方案2018-12 停更
		分发:api网关,zuul组件,
		通信:Feign --HttpClint---Http通信方式、同步、阻塞
		治理:服务注册和发现:Eureka
		熔断:熔断机制:Hystrix
		-------------------
2、Apache Dubbo Zookeeper---半自动,需要整合别人的
		分发:API:没有、找第三方组件、或者自己实现
		通信:Dubbo
		治理:Zookeeper
		熔断:没有借助Hystrix	
方案不完善

3、Spring Cloud Alibaba---一站式解决方案、成本更低、更简单
万变不离其宗
1、API
2、HTTP、RPC
3、服务的注册和发现
4、熔断机制
网络不可靠
新概念:服务网格--Server Mesh

二、微服务

1、什么是微服务

	1、架构模式、架构风格,提倡将单一的应用程序划分成一组小的服务,模块化,看可以根据业务上下文选择合适的语言,工具进行构建,可以有一个轻量级的集中式管理这些服务。可以使用不同的语言编写服务。也可以使用不同的数据存储
	2、将传统的一站式应用拆分成一个一个的服务,彻底的解耦,每个微服务提供单个业务功能的服务。一个服务做一件事情。

2、优缺点

	优点
		§ 单一职责原则。
		§ 服务内聚足够小,代码容易理解
		§ 开发简单,效率高,可以被小团队单独开发
		§ 松耦合
		§ 可以使用不同语言开发
		§ 易于和第三方继承,通过持续集成工具部署
		§ 只是业务逻辑代码,不会和HTML、CSS和其他页面混合
		§ 每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统一的数据库
	缺点
		开发人员要处理分布式系统的复杂性
		运维难度增加
		系统部署依赖
		服务间通信的成本
		数据一致性
		系统集成测试
		性能监控

3、技术栈

在这里插入图片描述

4、SpringCloud和SpringBoot的关系

	1、SpringBoot专注于快速方便的开发单体微服务
	2、SpringCloud是关注全局的微服务协调治理框架,将SpringBoot开发的单体微服务整合起来并管理,
	为各个服务之间提供:配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、
	分布式会话等等集成服务。
	3、SpringBoot可以离开SpringCloud独立使用,开发项目,但是SpringCloud离不开SpringBoot
	4、SpringBoot专注于快速、方便的开发单个个体微服务,SpringCloud关注全局的服务治理框架

5、Dubbo和SpringCloud技术选型

	1、分布式+服务治理Dubbo

Dubbo

	2、Dubbo与SpringCloud
	Dubbo定位是一款RPC框架、Spring Cloud目标是微服务架构下的一站式解决方案
	3、设计模式+微服务拆分思想

三、SpringCloud能干什么

1、分布式、版本控制配置
2、服务注册与发现
3、路由
4、服务到服务的调用
5、负载均衡配置
6、断路器
7、分布式消息管理
……

四、下载

网站参考
	1、https://www.springcloud.cc/spring-cloud-netflix.html
	2、中文APIhttps://www.springcloud.cc/spring-cloud-dalston.html
	3、SpringCloud中文社区http://springcloud.cn/
	4、springCloud中文网https://www.springcloud.cc
版本是通过字母表顺序来对应时间版本顺序
![在这里插入图片描述](https://img-blog.csdnimg.cn/c9d93274909d4269abca0c30d26ec474.png)

在这里插入图片描述

五、创建项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://localhost/consumer/dept/list --- 即可直接访问80端口 内部访问8001端口 自动执行

六、Eureka服务注册与发现

保证了AP原则,保证了可用性和分区容错性
简介:
	Netflix在设计Eureka时,遵循的是AP原则,基于REST的服务,用于定位服务,实现云端中间层服务发现和故障转移。
	有了服务发现注册,只需要使用服务的标识符,就可以访问到服务,不需要修改服务调用的配置文件了,
	功能类似于Dubbo的注册中心,比如Zookeeper
	
原理:
	1、封装了NetFlix公司开发的Eureka模块来实现服务注册与发现,C-S架构设计,
	2、EurekaServer作为服务器注册功能的服务器。是服务中心
	3、其他服务使用Eureka的客户端连接到EurekaServer并维持心跳连接。这样系统的维护人员就可以通过
	EurekaServer来监控系统中各个微服务的是否正常运行,SpringCloud的一些其他模块,
	就可以通过EurekaServer来发现系统中的其他微服务。并执行相关逻辑

在这里插入图片描述

两个组件
	1、Eureka Server提供服务注册服务,各个节点启动后,在EurekaServer中进行注册,这样Eureka的服务注册表中会存储所有可用服务的信息,服务节点的信息可以在页面直观的看到
	2、Eureka Client 是一个Java客户端,用于简化EurekaServer的交互,客户端同时也具备一个内置的,使用轮询负载算法的,负载均衡器。在应用启动后,向EurekaServer发送心跳(默认周期30秒)。在多个心跳周期没接收到某个节点的心跳,EurekaServer就会把服务注册表中得到服务节点移除掉,(默认周期为90秒)
三大角色
	Eureka Server	提供服务的注册与发现,zookeeper
	Service Provider	将自身服务注册到Eureka中,从而消费方能够找到
	Service Consumer	服务消费方从Eurekka中获取注册服务列表,从而找到消费服务
	
步骤

在这里插入图片描述

	1、eureka客户端
		1、导入依赖

在这里插入图片描述

		2、编写配置文件

在这里插入图片描述

		3、开启功能

在这里插入图片描述

	2、其他微服务,服务注册、服务发现、服务监控信息打印
		1、导包

在这里插入图片描述

		2、编写配置信息

在这里插入图片描述

		3、在主配置文件开启Eureka

在这里插入图片描述

		4、测试

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

自我保护机制(好死不如赖活着):
	○ 某一时刻,某个微服务不可用了,eureka不会立刻清理,依旧会对服务的信息进行保存
	○ 一定时间没有收到某个微服务实例的心跳,就会注销实例,默认90秒
	○ 当在短时间内丢失大量客户端时,比如断电。Eureka就会进入自我保护模式,此时保存注册表的信息,不再删除注册表中的数据,恢复后,退出自我保护模式
	○ 综上所述,是一种应对网络遗异常的安全保护措施,宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例
	○ 也可以关闭这个机制,eureka.server.enable-self-preservation=false 禁用自我保护机制
eureka集群
	任何一个崩了其他的依然可以运行

在这里插入图片描述

	1、设置url映射
		C:\Windows\System32\drivers\etc

在这里插入图片描述

		需要保证 eureka.instance.hostname eureka服务的实例名称在集群中保证唯一。

在这里插入图片描述

		需要保证 eureka.client.service-url.defaultZone 的主机名(或IP)要唯一。如果是 Eureka 集群在同一个主机上时(学习和开发时),通过配置 hosts ,保证主机名的唯一。
		win10 环境修改,在 C:\Windows\System32\drivers\etc 的 hosts 文件修改:
	
	127.0.0.1  eureka7002.com
	127.0.0.1  eureka7003.com
	127.0.0.1  eureka7001.com
	
	7001里配置添加7002、7003
	7002里配置添加7001、7003
	7003里配置添加7001、7002

在这里插入图片描述

	启动项目后
		访问7001可以看到7002、7003,在7001上挂载一个项目7002、7003也能看到,假如7001崩了 7002 7003也能用
	
CAP原则
	在一个分布式系统中,一致性C、可用性A、分区容错性P不可兼得
	一致性		C	数据备份,在同一时刻是否是同样的值
	可用性		A	保证每个请求不管成功或者失败都有响应
	分区容错性	P	任意信息丢失都不会影响系统的继续运作。
	
	CA	单点集群,满足一致性、可用性,可扩展性比较差
	CP	通常性能不是很高
	AP	对一致性要求较低
	
	Eureka和Zookeeper对比
		分布式系统中一般都需要必须保证分区容错性
		Zookeeper保证CP
			可以容忍注册中心返回几分钟之前的注册信息,但是不能容忍服务down掉。对可用性的要求高于一致性。主机down掉会选举,但是时间较长30s~120s在此期间服务瘫痪,这个选举时间导致的服务不可用是不能容忍的。
		Eureka保证AP
			eureka首先保证的是可用性。各个节点都是平等的,节点挂掉其他的节点仍然可以正常工作。服务向Eureka注册时,如果发现连接失败就会自动切换至其他节点,此外还有自我保护机制,--->15分钟超过85%的节点没有心跳,就启动该机制
				1、Eureka不再移除注册列表中的服务
				2、Eureka仍能接受新服务的注册和查询请求,但不会同步到其他节点上
				3、网络稳定后,把新的注册信息同步到其他节点
			总之:eureka可以很好的而应对因网络故障导致的部分节点失去联系的情况,不会像zookeeper那样使整个注册服务瘫痪
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琰玥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值