IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Spring Cloud服务注册中心--Eureka的介绍和使用 -> 正文阅读

[网络协议]Spring Cloud服务注册中心--Eureka的介绍和使用

1,为什么使用服务注册中心?
当系统的微服务越来越多的时候,那么他们之间的调用关系就越来越复杂,这时候提出了服务注册中心,我理解的,服务注册中心,起初就是规范各个微服务之间的调用
2,什么是服务治理?
Spring Cloud封装了Netflix公司开发的Eureka模块实现服务治理
在传统的rpc调用框架中,管理每个服务与服务之间依赖关系比较复杂,所以服务服务治理,用于管理服务之间的依赖关系,可以实现服务调用、负载均衡、容错等,实现服务注册和发现。
3,什么是服务注册与发现?
Eureka 采用了CS(服务器-客户端)设计结构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接,这样系统管理人员就可以通过Eureka Server 来监控系统中各个微服务是否正常运行。
在服务注册与发现中,有一个注册中心,当服务启动的时候,会把当前服务器的信息比如服务器地址等信息以别名的方式注册到注册中心上,另一方(消费者/服务提供者)以该别名的方式去服务器上获取到实际服务器地址,然后再本地实现RPC调用,RPC吊桶的核心设计思想:在于注册中心,因为使用注册中心管理每个服务于服务之间的一个依赖关系(服务治理)。在任何rpc远程调用框架中,都会有一个注册中心(存放服务地址等信息)

4,Eureka
Eureka 目前官网已停止更新。
Eureka 的系统结构如下:

在这里插入图片描述
Eureka 包含两个组 件: Eureka Server 和Eureka Client
为了便于理解,我们将Eureka client再分为Service Provider和Service Consumer。

Eureka Server 提供服务注册和发现
各个微服务节点通过配置启动成功后,会在Eureka Server 中注册,这样Eureka Server 中的服务注册表会存储所有可用服务节点的信息,服务节点信息可以在界面清晰看到

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

5,单机版Eureka的搭建
1),新建工程
在这里插入图片描述
2),pom文件中引入依赖包

<!--Eureka server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

3),编写application.yml文件

eureka:
  instance:
    hostname: localhost  #eureka服务端的实例名字
  client:
    register-with-eureka: false    #表识不向注册中心注册自己
    fetch-registry: false   #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
    service-url:
      #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

4),编写启动类

@SpringBootApplication
@EnableEurekaServer
public class SingleEurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(SingleEurekaApplication.class,args);
    }
}

5),项目启动
在这里插入图片描述
到这里Eureka Server 服务端已经搭建好
6),编写客户端
在这里插入图片描述
7),编写客户端application.yml文件

eureka:
	instance-id: provider-payment8011 
    prefer-ip-address: true
  client:
    register-with-eureka: true #是否向注册中心注册自己
    fetchRegistry: true #是否从注册中心抓取已有的注册信息 默认true,集群必须设置为true
    service-url:
    #      设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
          defaultZone: http://localhost:7001/eureka #单机版

8),编写客户端的启动类

@SpringBootApplication
@EnableEurekaClient
public class ProviderPaymentApplication {
    public static void main(String[] args) {
        SpringApplication.run(ProviderPaymentApplication.class,args);
    }
}

9),客户端启动后
在这里插入图片描述
通过上图可以看到服务已注册到Eureka Server中。

6 集群版Eureka搭建
1)搭建多个Eureka server(如eureka7001.com:7001,eureka7002.com:7002) 同 “”5 单机版Eureka搭建 “”中 Eureka server 搭建步骤一样
主要更改每个Eureka server 中application.yml 文件(每个Eureka server 都是相互注册 相互守望如下图所示)
在这里插入图片描述

eureka:
  instance:
    hostname: eureka7001.com  #eureka服务端的实例名字 
  client:
    register-with-eureka: false    #表识不向注册中心注册自己
    fetch-registry: false   #表示自己就是注册中心,职责是维护服务实例,并不需要去检索服务
    service-url:
      #设置与eureka server交互的地址查询服务和注册服务都需要依赖这个地址
      #集群
      defaultZone: http://eureka7002.com:7002/eureka/

2)把客户端注册中集群中
只需要更改客户端的application.yml 文件

eureka:
	instance-id: provider-payment8011
    prefer-ip-address: true
  client:
    register-with-eureka: true #是否向注册中心注册自己
    fetchRegistry: true #是否从注册中心抓取已有的注册信息 默认true,集群必须设置为true
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka  #集群版

7 服务提供者搭建成集群

创建多个服务提供者为(provider:8001 provider:8002)
创建消费者80

以上服务创建参考地址:https://editor.csdn.net/md/?articleId=122621346

然后更改80 服务中controller代码
在这里插入图片描述
红框中的地址改为:
//provider-payment 为提供者服务名
public static final String PAYMENT_URL = “http://provider-payment”;

再赋予RestTemplate 负载均衡能力

@Configuration
public class RestTemplateConfig {


    @Bean
    @LoadBalanced  //让这个RestTemplate在请求时拥有客户端负载均衡的能力 
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

启动后就可以轮询访问 provider:8001 provider:8002

8 服务的发现Discovery
可以通过代码知道注册中心都注册了哪些服务,并且每个服务有多少个实例

启动类上添加
@EnableDiscoveryClient


具体实现的写法:

类中注入
   @Resource
    private DiscoveryClient discoveryClient;
    
代码实现
//获取有多少个服务
   List<String> services = discoveryClient.getServices();
        services.forEach(System.out::println);

//单独的某个服务有多少个实例
        List<ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        instances.forEach(instance -> {
            System.out.println(instance.getServiceId() + "\t" + instance.getHost() + "\t" + instance.getPort() + "\t" + instance.getUri());
        });

9 Eureka的自我保护

概述:某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保护。属于CAP(一致性,可用性,分区容错性)中的AP分支

在这里插入图片描述
关闭自我保护机制:
在Eureka server 中设置:

#  server:
##    关闭自我保护机制,保证不可用服务被及时踢除(默认是开启的)
#    enable-self-preservation: false
#    eviction-interval-timer-in-ms: 2000

在Eureka client中设置:

  instance:
#    Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30)
#    lease-renewal-interval-in-seconds: 1
#    Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90),超时将剔除服务
#    lease-expiration-duration-in-seconds: 2
  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-16 13:30:42  更:2022-02-16 13:31:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:01:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码