Spring Cloud Netflix笔记

网站架构演变过程:

从传统架构(单点应用:其实就是SSH或者SSM)–> 分布式架构(以项目进行拆分)–> SOA架构(面向服务架构,只有业务逻辑层)–> 微服务架构

SOA架构特点:

底层基于SOAP或者ESB(消息总线)实现,底层使用HTTP或者HTTPS协议+重量级XML数据交换格式进行通讯。在后面微服务中,以json格式替换xml。

SOA架构缺点:

1.依赖于中心化服务发现机制。2.因为SOA架构采用SOAP协议(HTTP+XML),XML传输协议比较占用宽带,整个XML报文中有非常大冗余数据,所以在微服务架构中以json轻量级方式替代xml报文传输。3.缺少服务管理和治理设施不完善。

RPC远程调用技术框架:

httpclient、springcloud、dubbo、grpc,核心底层socket技术或者netty实现。

微服务架构与SOA架构区别:

1.微服务架构基于SOA架构演变过来,继承SOA架构优点,在微服务架构中去除SOA架构中的ESB消息总线,采用http+json(restful)进行传输。
2.微服务架构比SOA架构粒度会更加精细,让专业的人去做专业的事情,目的提高效率,每个服务与服务之间互不影响,微服务架构中,每个服务必须独立部署,微服务架构更加轻巧,轻量级。
3.SOA架构中可能数据存储会发生共享,微服务强调每个服务都是单独数据库,保证每个服务与服务之间互不影响。
4.项目体现特征微服务架构比SOA架构更加适合与互联网公司敏捷开发、快速迭代版本,因为粒度非常精细。

SpringCloud简介

SpringCloud是基于SpringBoot基础之上开发的微服务框架,其内容包含服务治理、注册中心、配置管理、断路器、智能路由、微代理、控制总线、全局锁、分布式会话等。这些功能都是以插拔的形式提供出来,方便系统架构演进的过程中,可以合理的选择需要的组件进行集成。

SpringCloud包含众多的子项目:

SpringCloud config 分布式配置中心
SpringCloud netflix 核心组件:
Eureka(服务治理注册中心)
Hystrix(服务保护框架)
Ribbon(客户端负载均衡器)
Feign(基于ribbon和hystrix的声明式服务调用组件)
Zuul(网关组件,提供智能路由、访问过滤等功能)
在这里插入图片描述
*Eureka负责服务的注册与发现,很好将各服务连接起来
*Hystrix负责监控服务之间的调用情况,连续多次失败进行熔断保护
*Hystrix dashboard,Turbine负责监控Hystrix的熔断情况,并给予图形化的展示
*Spring Cloud Config提供了统一的配置中心服务
*当配置文件发生变化的时候,Spring Cloud Bus负责通知各服务区获取最新的配置信息
*所有对外的请求和服务,我们都通过Zuul来进行转发,起到API网关的作用
*最后使用Sleuth+Zipkin将所有的请求数据记录下来,方便进行后续分析

服务治理 SpringCloud Eureka

服务治理 SpringCloud Eureka:https://www.cnblogs.com/tripleDemo/p/11245357.html
Eureka2.0高可用集群搭建:https://www.cnblogs.com/tripleDemo/p/11254664.html

服务治理:

在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

服务注册与发现:

在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自己服务器的信息比如服务地址通讯等以别名方式注册到注册中心上。另一方(服务消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地rpc调用远程。

服务提供者:指提供服务接口
服务消费者:指调用接口进行使用

Eureka由Eureka服务端和Eureka客户端两个组件组成,Eureka服务端用作服务注册中心。支持集群部署。Eureka客户端是一个java客户端,用来处理服务注册与发现。在应用启动时,Eureka客户端向服务端注册自己的服务信息,同时将服务端信息缓存到本地。客户端会和服务端周期性的进行心跳交互,以更新服务租约和服务信息。

自我保护机制:

默认情况下EurekaClient定时向EurekaServer端发送心跳包。如果EurekaServer在一定的时间内没有收到EurekaClient发送心跳包,便会直接从服务注册列表中剔除该服务(默认90秒内)。但是在短时间丢失了大量的服务实例心跳,这时候EurekaServer会开启自我保护机制,不会去剔除该服务。

在自我保护机制,为什么Eureka不会剔除该服务呢?

为了防止EurekaClient是可以正常访问,但只是EurekaClient与EurekaServer网络访问不通。防止误剔除。(建议在本地环境禁止自我保护机制,在生产环境开启自我保护机制)

eureka:
  server:
    ###测试时关闭自我保护机制,保证不可用服务及时踢出
    enable-self-preservation: false
    ###剔除失效服务间隔
	eviction-interval-timer-in-ms: 2000

Ribbon

https://www.cnblogs.com/tripleDemo/p/11320497.html
作用:Ribbon主要提供客户端的软件负载均衡算法
简介:Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。

@Bean  //把RestTemplate注册到SpringBoot容器中,如果使用rest方式以别名方式进行调用,依赖ribbon负载均衡器@LoadBalanced
@LoadBalanced  //@LoadBalanced开启以别名方式去Eureka读取注册信息,然后本地实现rpc远程调用
RestTemplate restTemplate() {
	return new RestTemplate();
}
ribbon:
	#指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
	ReadTimeout: 5000
	#指的是建立连接后从服务器读取到可用资源所用的时间
	ConnectTimeout: 5000
Ribbon与Nginx区别

Ribbon本地负载均衡,原理:在调用接口的时候,会在eureka注册中心上获取注册信息服务列表,获取到之后,缓存在jvm本地,使用本地实现rpc远程调用技术进行调用。即客户端实现负载均衡。
Nginx服务器负载均衡,客户端所有请求都会交给nginx,然后再由nginx实现转发请求。即服务端实现负载均衡。

应用场景:

Ribbon本地负载均衡器适合在微服务rpc远程调用,比如Dubbo、SpringCloud
Nginx服务负载均衡器适合针对服务器端,比如Tomcat、Jetty

Hystrix

https://www.cnblogs.com/tripleDemo/p/11389780.html
作用:断路器,保护系统,控制故障范围
简介:为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证100%可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。

Feign

https://www.cnblogs.com/tripleDemo/p/11375806.html

简介

Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。Feign是一个声明式的伪Http客户端,使用Feign,只需要创建一个接口并注解。Spring Cloud为Feign添加了Spring MVC的注解支持,并整合了Ribbon和Eureka来为使用Feign时提供负载均衡。

RestTemplate 和 Feign 区别

使用RestTemplate时,URL参数是以编程方式构造的,数据被发送到其他服务。
Feign是Spring Cloud Netflix库,用于在基于REST的服务调用上提供更高级别的抽象。Spring Cloud Feign在声明性原则上工作。使用Feign时,在客户端编写声明式REST服务接口,并使用这些接口来编写客户端程序。当定义的Feign中的接口被调用时,通过JDK的动态代理来生成RequestTemplate。
就是简化了编写,RestTemplate还需要写上服务器IP这些信息等等,而FeignClient则不用。

Zuul

https://www.cnblogs.com/tripleDemo/p/11649966.html
作用:api网关,路由,负载均衡等多种作用
简介:类似Nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。
在微服务架构中,后端服务往往不直接开放给调用端,而是通过一个API网关根据请求的url,路由到相应的服务。当添加API网关后,在第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制,后将请求均衡分发给后台服务器。

Config

https://www.cnblogs.com/tripleDemo/p/11656992.html
作用:配置管理
简介:SpringCloud Config提供服务器端和客户端。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。这个还是静态的,得配合Spring Cloud Bus实现动态的配置更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值