思维导图如下
Eureka在微服务中的位置
Eureka在微服务中的位置为注册中心,注册中心管理的功能有以下几点:
1.服务的注册。
2.服务的发现
3.服务的熔断
4.服务的负载
5.服务的降级
按照网站的发展历史来进行说明。
最开始,是单体应用,所有的都被封装在一个SpringBoot中。
如下图:
后来由于维护不方便等各种原因,开始进行拆分,拆分成为一个个的类
类与类之间通过new的方法相互调用。
伴随着流量的加大,进行应用的拆分。
应用之间通过Feign等方式进行远程调用。
有了注册中心,通过注册中心的方式进行调用。
这个时候的调用就变成了,项目A调用项目B的时候,先通过注册中心,找到代理的地址,通过注册中心的代理地址,找到应用B。
两者之间相互进行调用。
这个时候,各个应用之间,不需要知道各自的ip地址,只需要通过注册中心的方式,由注册中心,代为提供地址。
这个时候,注册中心起到代理的作用。
到这一步,注册中心,就有了相当多的高级功能,例如服务的注册,服务的发现,服务的负载,服务的降级。
客户端-服务端的通信方式
这里将会主要介绍,服务注册中心的通信方式,客户端-服务端的通信方式。
这种通信方式,有两种通信方式,分别为socket通信和Http通信这两种方式。
基础知识
Socket
socket为一种抽象层,应用程序通过其发送和接受数据,使用socket可以把应用程序添加到网络中,与处于同一网络中的应用程序进行通信。
具体分为流套接字,和数据报套接字。这两种套接字,分别基于Tcp,和Udp,这两种方式。
具体通信模型为
Http
Http分为Post,Get,Delete,Put,这四种通信方式。
这四种通信方式,分别描述了对于一个资源的增删查改。
用一张表格进行介绍:
用一句话进行简单的描述,在Get请求的时候,取得了该文章的主题,Post增加了该文章,Put对文章进行修改,Delete表示对文章的删除。
EurekaServer与EurekaClient
EurekaServer与EurekaClient之间的关系如下图所示:
ServiceProvider与ServiceConsumer都为EurekaClient服务的提供方和服务的消费方都通过EurekaServer实现相关的交流通信。
EurekaServer
上方为一个简单的EurekaServer
通过在配置上增加
EnableEurekaServer 并添加相关的Maven依赖
org.springframework.cloud spring-cloud-starter-eureka-server 就可以运行启该EurekaServer。
EurekaClient
EurekaClient为微服务的客户端,分为两个部分,分别为ServiceConsumer与ServiceProvider,这两种方式。一个为微服务的服务提供方,一个为微服务的服务消费方,这两方共同作用,相辅相成,以Server为纽带,相互联系。
客户端向注册中心注册的时候,会提供一系列的元信息,例如主机,端口,健康检查的URL,主页等,服务会不断的发送心跳信息,进行健康检查,如果某个服务在30s外仍然没有接受到注册中心的信息,将会在注册中心,移除掉该列表内容。
最为核心的一点,是健康检查
具体操作为先添加相关的依赖
dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-netflix-eureka-client/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency然后在启动类上添加相关的注解。
EnableDiscoveryClient然后再次添加相关的配置文件server:port:#运行端口号spring:application:name:eureka-client#服务名称eureka:client:register-with-eureka:true#注册到Eureka的注册中心fetch-registry:true#获取注册实例列表service-url:defaultZone: