【Spring Cloud】-服务注册发现

什么是Spring Cloud

Spring Cloud是现在非常流行的微服务架构的开发框架,利用spring boot的开发便利,实现了服务注册,服务注册与发现,负载均衡,数据监控,基本上囊括了分布式框架需要的所有功能;简化了分布式开发,极大的降低了分布式开发的门槛。

什么是服务注册发现

服务注册发现是分布式系统的核心所在,记录了分布式系统中所有服务的信息,其他服务可以将请求发到注册中心,然后注册中心会根据相应策略选择相应的服务。

为什么使用服务注册发现

微服务将传统的”巨石”应用拆分成一个一个的组件应用,每个组件应用提供特定的服务,可以是一个,也可以是多个,并且组件所含服务应该是可以动态扩展的,随着时间推移、系统进化,可任意拆分、合并。

组件化应用和颗粒化的服务,遍布在系统的各个角落,由不同的项目成员进行维护,微服务的核心是化整为零、各司其职,这就要求开发人员不得操作其业务或服务范围以外的数据模型等资源,只能通过接口的访问,使用某一服务

由于服务的跨度很大(公司很大的情况下)、数量很多(数以百计甚至更多),为保障系统的正常运行,必然需要有一个中心化的组件完成对各个服务的整合,即将分散于各处的服务进行汇总并记录,但服务调用方的请求到达时,服务注册中心通过相应的策略选择某一个提供方进行访问,实现服务的调用。

Eureka简介

成熟的分布式调用系统有Zookeeper、Consul、etcd,其中最为成熟的是ZK,今天我们要总结的调用系统是Spring Cloud中的Eureka。

Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务。它包含Servcr和Client两部分。

Eureka Server作为服务注册功能的服务器,是注册中心,提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名称等),Eureka Server会存储这些信息。

Eureka Client是一个java客户端,用来简化与服务器的交互,作为轮询负载均衡器,并提供服务的故障切换支持。系统中的其他微服务使用Eureka Client连接到Eureka Server,并维持心跳连接,这样就可以监控系统中其他微服务是否可以正常运行。

实现Eureka Server

1、添加依赖

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

2、application.yml配置

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/    #设置与Eureka Server交互的地址,查询服务和注册服务都需要依赖这个地址,多个地址可用,分割。
    register-with-eureka: false    #表示是否将自己注册到Eureka Server,默认为true。由于当前应用就是Eureka Server,故而设置为false。
  server:
    enable-self-preservation: false   #自我保护模式,架构哲学是宁可同时保留所有微服务,也不盲目注销任何健康的微服务。
spring:
  application:
    name: eureka

3、编写启动类,在启动类上添加@EnableEurekaServer注解,声明这是一个Eureka Server。

@SpringBootApplication
//@EnableEurekaServer注解,声明这是一个Eureka Server。
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

4、启动,访问http://localhost:8761

Eureka Clienths实现

1、服务提供者和服务消费者注册到Eureka Server,pom.xml添加依赖

  <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-eureka</artifactId>
  </dependency>

2、application.yml配置

spring:
  application:
    name: order
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/  #指定服务注册中心的位置,注册到8761
server:
  port: 8762

3、编写启动类,在启动类上添加@EnableEurekaServer注解,声明这是一个Eureka Client

@SpringBootApplication
@EnableDiscoveryClient
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }
}

4、启动,访问http://localhost:8761,可以看到咱们的服务提供方已经注册到了服务注册中心

Eureka高可用

高可用是服务必须考虑的地方,Eureka作为服务注册中心也不例外。要想实现Eureka的高可用,只需要多准备多台Eureka Server,然后各个Server之间相互注册,然后Eureka Client端注册到多个服务端,若有个服务端宕机,由于注册了多个Eureka Server上,在其他server上依然可以进行访问,从而实现了服务注册中心的高可用。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

木子松的猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值