springCloud学习总结

springCloud

1.它分布式服务的技术栈(全家桶),

即提供分布式服务的相关技术模块,比如配置中心、服务注册与发现、微服务间调用、负载均衡、熔断、路由网关、安全等

2.与Dubbo对比:Dubbo专注与RPC框架,其它的分布式技术需要依赖第三方技术,来组装出一个分布式架构。

	而springCloud是一站式服务,提供了所有分布式架构需要的技术,不用依赖其它第三方技术,所以各组件间的兼容性很好。各微服务之间通过http等简单协议调用。

3.服务注册与发现(Eureka)

	Eureka的自我保护机制:
		在短时间内大量微服务没有心跳链接,会开启保护模式,不会立即删除注册表中没有心跳的微服务。当心跳回到阀值时,自动关闭保护模式。
	服务注册中心:所有的微服务集群都可以是它的客户端,来注册和订阅。
		启动一个springBoot应用,需要依赖spring-cloud-starter-eureka-server组件,无需编写其它代码。
		并将主启动类标识@EnableEurekaServer。在yml配置文件中配置自己的访问地址等信息。
	服务注册:
		依赖spring-cloud-starter-config
		启动一个springBoot应用,需要依赖spring-cloud-starter-eureka和spring-cloud-starter-config组件。
		并将主启动类标识@EnableEurekaClient。在yml配置文件中指定注册中心的访问地址等信息。
		这样本服务启动后会自动注册进eureka服务注册中心中。
	服务发现:
		@EnableDiscoveryClient 本应用的主启动类上添加此注解表示:服务发现。
		进而可以在所有bean中使用DiscoveryClient接口来访问Eureka.
		或结合RestTemplate来访问Restful风格的http服务。
	Eureka集群:
		各Eureka相互知晓。每个客户端要知晓所有Ereka,类似RocketMQ的NameServer。
	与Zookeeper比较:
		有自我保护机制。没有主从概念。
		Zookeeper出现网络故障时会花30-120s来选举新master,而导致注册中心不可用,可用性不好。

4.负载均衡(Ribbon、Feign)

	科普:将用户请求平摊的分配到多个服务。
	负载均衡分两种:
		1、集中式:在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如Nginx、LVS),由该设施负责把请求通过某种策略转发至服务的提供方。
		2、进程内:将LB逻辑集成到消费方(如dubbo、Ribbon),消费方从服务注册中心获知有哪些地址可用,然后自己从这些地址中选择出一个合适的服务器。

Ribbon:

		构建过程:依赖Eureka
		客户端首先引入Eureka客户端组件,再在RestTemplate的bean上加@LoadBalanced注解,就可以用微服务的名称来从Eureka集群中获取服务列表,进而选出一台服务器。
		核心组件:IRule根据特定算法从服务列表中选取一个要访问的服务。自带7种均衡策略。默认轮询。
		修改默认策略:向容器中注册一个IRule的bean,这样ribbon就会使用用户自己的策略来覆盖默认策略。
		自定义策略:
			在主启动类上加@RibbonClient(name="服务名", configuration=XxxRuler.class),从而在启动服务的时候就能去加载自定义的Ribbon配置类。
			代码中向容器注入自己的XxxRuler的bean.
			
	架构图:
				Eureka集群
			       /	  \
		消费端(ribbon)  -----	   服务提供集群

Feign:

		Feign集成了Ribbon.同样默认使用轮询策略实现客户端负载均衡。Feign=Ribbon+RestTemplate.
		在Eureka和ribbon的基础上,把restful风格的http接口包装成接口的形式便于客户端使用。
		使用步骤:
			1.主启动类添加@EnableFeignClients注解。并用@ComponentScan("包路径")来扫描到步骤2定义的接口。
			2.新建一个跟服务端相似的接口类,再用@FeignClient注解标识,从而在启动时向容器中注入实现此接口的bean,后续就可以方便从容器中获取并使用。

5.短路器(Hystrix)

	功能:服务降级、服务熔断、服务限流、接近实时的监控
	服务端服务熔断步骤:
		1.主启动类添加@EnableCircuitBreaker注解。
		2.在@RequestMapping处增加@HystrixCommand(fallbackMethod="方法名"),新建一个出入参相同的类似方法,以便在原方法抛出异常时代替原方法。
		3.默认每次原方法抛出异常都会触发熔断。
	客户端服务降级步骤:
		科普:整体资源快不够了,忍痛将某些服务先关掉,待度过难关,再开启回来。它依赖Feign。
		步骤:
		     1.新建一个FallbackFactory接口的实现类,重写create方法。
		     2.在@FeignClient注解中加fallbackFactory属性值。例如:@FeignClient(value="", fallbackFactory=xxxFallbackFactory.class)
		     3.开启Feign对Hystrix的支持。在yml配置文件中配置feign.hystrix.enabled: true

6.路由网关(zuul)

	科普:路由和过滤的作用。也是一个微服务集群,也需要注册到Eureka中。可以设置统一的访问入口。所有服务都可以通过它来间接访问。
	使用步骤:
		1.添加Eureka和Zuu的maven依赖。
		2.主启动类上添加@EnableZuulProxy注解,无需@EnableDiscoveryClient注解。
		3.配置Eureka的相关配置信息。
		4.使用http://路由网关的ip+port/要请求的微服务名称/原微服务访问地址
		5.还可以将“微服务名称”进行映射。

7.配置中心(Config)

	科普:它是一个类似于Eureka的服务,有服务端和客户端。每个微服务作为客户端,spring-config作为服务端,它来监控远程配置中心的配置文件是否发生变化。
		远程配置中心默认采用git来存储配置信息,这样有助于对环境配置进行版本管理,并可以通过git客户端工具来方便的管理和访问配置内容。
	使用步骤:
		1.在gitHub上建立一个仓库。
		2.创建一个微服务,主启动类上添加@EnableConfigServer注解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值