Spring Cloud服务发现/注册

简介: 服务发现/注册服务发现(Service Discovery)在计算机网络中,一种自发现设备或者服务的技术,通过服务发现协议(Service Discovery Protocol)实现。常见协议java:jini(Apache River)REST:HATEOASWeb Services:UDDI(Universal Description Discovery and lntegration)服务注册(Service Registration)在计算机网络中,为了更好地治理多个设备或者服务,这些设备或者服务主动或者被动注册到管理中心,以便服务被发现和消费。

服务发现/注册

服务发现(Service Discovery)

在计算机网络中,一种自发现设备或者服务的技术,通过服务发现协议(Service Discovery Protocol)实现。

常见协议

  • java:jini(Apache River)
  • REST:HATEOAS
  • Web Services:UDDI(Universal Description Discovery and lntegration)

服务注册(Service Registration)

在计算机网络中,为了更好地治理多个设备或者服务,这些设备或者服务主动或者被动注册到管理中心,以便服务被发现和消费。

常见注册中心

  • Apache Zookeper 性能最差
  • Netflix Eureka 高可用,高 一致性差
  • Consul 高可用,高一致性(某些方面)
    c2

c1

高可用架构

高可用(High Availability)

一种系统特性,致力于确保可接受程度的执行操作,通常采用上线时间作为基准。其中,以一年内的上线时间与自然时间的比率来描述可用性。

基本原则

  • 消灭单点故障
  • 可靠性交迭
  • 故障探测

Spring Cloud Netflix Eureka

服务发现:Eureka

Eureka是由Netflix公司发明的服务发现中间件,包括服务发现服务器和客户端的。

核心组件

  • Eureka Server
  • Eureka Client
    服务端:Eureka Server

Eureka Server是Eureka Client的注册服务中心,管理所有注册服务、以及其实例信息和状态。

运行Eureka Server

  • 依赖:org.springframework.cloud:spring-cloud-starter-eureka-server
  • 激活:@EnableEurekaServer

1.引入Maven依赖

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

2.激活Erueka服务器

package com.example.springcloudlesson4eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class SpringCloudLesson4EurekaServerApplication {

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

}

3.调整Eureka服务器配置
application.properties

##服务器应用名
spring.application.name=spring-cloud-eureka-server
##服务器端口
server.port=9090
##管理端口安全失效
management.security.enabled=false

检查Eureka Server

com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
    at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:111) ~[eureka-client-1.7.2.jar:1.7.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.7.2.jar:1.7.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator$6.execute(EurekaHttpClientDecorator.java:137) ~[eureka-client-1.7.2.jar:1.7.2]
    at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.7.2.jar:1.7.2]
    at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.getApplications(EurekaHttpClientDecorator.java:134) ~[eureka-client-1.7.2.jar:1.7.2]
    at com.netflix.discovery.DiscoveryClient.getAndStoreFullRegistry(DiscoveryClient.java:1027) [eureka-client-1.7.2.jar:1.7.2]

检查Eureka Server

http://localhost:9090
运行效果:
c3

问题原因:Eureka Server即是注册服务器,也是客户端,默认情况,也需要配置注册中心地区。

客户端:Eureka Client

Eureka Client为当前服务提供注册、同步、查找服务以及其实例信息或状态等能力。

运行Eureka Client

  • 依赖:org.springframework.cloud:spring-cloud-starter-eureka
  • 激活:@EnableEurekaClient或者@EnableDiscoveryClient

1.引入Maven依赖

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

2.激活Eureka客户端

package com.example.springcloudlesson4eurekaclient;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class SpringCloudLesson4EurekaClientApplication {

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

}

@EnableDiscoveryClient比@EnableEurekaClient好一些
因为不绑定某种实现,注册不到,服务不会发现而这个重启一下就好了
3.配置Euraka 客户端


##客户端应用名称
spring.application.name=spring-cloud-eureka-client
##客户端端口
server.port=8080
##管理端口安全失效
management.security.enabled=false

4.启动时会报连接拒绝错误

检验Eureka客户端
发现与Eureka服务器端出现相同异常

需要再次调整Eureka客户端


##客户端应用名称
spring.application.name=spring-cloud-eureka-client
##客户端端口
server.port=8080
##管理端口安全失效
management.security.enabled=false
##Spring Cloud Eureka客户端 注册到服务器
eureka.client.serviceUrl.defaultZone=http://localhost:9090/eureka

配置完成后出现下面截图情况表示连接成功
_

目录
相关文章
|
29天前
|
负载均衡 Java API
Spring Cloud 面试题及答案整理,最新面试题
Spring Cloud 面试题及答案整理,最新面试题
131 1
|
29天前
|
Java Nacos Sentinel
Spring Cloud Alibaba 面试题及答案整理,最新面试题
Spring Cloud Alibaba 面试题及答案整理,最新面试题
136 0
|
30天前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
130 0
|
2天前
|
负载均衡 Java 开发者
细解微服务架构实践:如何使用Spring Cloud进行Java微服务治理
【4月更文挑战第17天】Spring Cloud是Java微服务治理的首选框架,整合了Eureka(服务发现)、Ribbon(客户端负载均衡)、Hystrix(熔断器)、Zuul(API网关)和Config Server(配置中心)。通过Eureka实现服务注册与发现,Ribbon提供负载均衡,Hystrix实现熔断保护,Zuul作为API网关,Config Server集中管理配置。理解并运用Spring Cloud进行微服务治理是现代Java开发者的关键技能。
|
2天前
|
Java API 对象存储
对象存储OSS产品常见问题之使用Spring Cloud Alibaba情况下文档添加水印如何解决
对象存储OSS是基于互联网的数据存储服务模式,让用户可以安全、可靠地存储大量非结构化数据,如图片、音频、视频、文档等任意类型文件,并通过简单的基于HTTP/HTTPS协议的RESTful API接口进行访问和管理。本帖梳理了用户在实际使用中可能遇到的各种常见问题,涵盖了基础操作、性能优化、安全设置、费用管理、数据备份与恢复、跨区域同步、API接口调用等多个方面。
19 2
|
17天前
|
负载均衡 网络协议 Java
构建高效可扩展的微服务架构:利用Spring Cloud实现服务发现与负载均衡
本文将探讨如何利用Spring Cloud技术实现微服务架构中的服务发现与负载均衡,通过注册中心来管理服务的注册与发现,并通过负载均衡策略实现请求的分发,从而构建高效可扩展的微服务系统。
|
30天前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
61 1
|
30天前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
184 0
|
30天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
775 0
|
7月前
|
Dubbo Java 应用服务中间件
深入了解Spring Cloud Alibaba Dubbo
在现代分布式系统开发中,构建高性能、可伸缩性和弹性的微服务架构变得越来越重要。Spring Cloud Alibaba Dubbo(简称Dubbo)是一个开源的分布式服务框架,可以帮助开发者构建强大的微服务架构,具备负载均衡、服务治理、远程调用等强大功能。本文将深入介绍Spring Cloud Alibaba Dubbo,帮助你理解它的核心概念、工作原理以及如何在你的项目中使用它。

热门文章

最新文章