SpringCloud Day02---服务发现与注册(Eureka+zookeeper+Consul(二)

简介: SpringCloud Day02---服务发现与注册(Eureka+zookeeper+Consul)
  • 修改映射配置

找到C:\Windows\System32\drivers\etc路径下的hosts文件,打开并添加映射配置添加进hosts文件.


1bbdf3120add589c651a30ebc20cc9dd.png


修改完成后,刷新DNS缓存


dd562f878347f228b459faa7483e602e.png


  • 写YML

以下是Eureka7001的yaml文件,Eureka7002,7003类似,只不过port和url需要做点修改.


server:
  port: 7001
eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    register-with-eureka: false     #false表示不向注册中心注册自己。
    fetch-registry: false     #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7004.com:7004/eureka/
  • 主启动

省略…

  • 启动Eureka7001,7002,7004进行 测试

1fcddfe9185b85da98eac22e86916420.png

7fa87627a3724c991a4e41845a6e1be0.png

84e62568a58dd2db3679ed7b228a59c1.png


2.3.3 将支付服务8001微服务发布到上面3台Eureka集群配置中


server:
  port: 8001
spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db2021?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 186259
eureka:
  client:
    #表示是否将自己注册进EurekaServer默认为true。
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
#      defaultZone: http://localhost:7001/eureka
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7004.com:7004/eureka  # 集群版
mybatis:
  mapperLocations: classpath:mapper/*.xml               # 配置Mapper所有接口配置文件的位置.
  type-aliases-package: com.rg.springcloud.pojo    # 所有Entity别名类所在包

2.3.4 将订单服务80微服务发布到上面3台Eureka集群配置中

server:
  port: 80
spring:
  application:
    name: cloud-order-service
eureka:
  client:
    #表示是否将自己注册进EurekaServer默认为true。
    register-with-eureka: true
    #是否从EurekaServer抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetchRegistry: true
    service-url:
      #defaultZone: http://localhost:7001/eureka
       defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7004.com:7004/eureka  # 集群版

2.3.5 测试01


1.先要启动EurekaServer,7001/7002服务


2.再要启动服务提供者provider,8001


3.再要启动消费者,80


测试结果:

b4922ea1e61db6f8b7d946919bc4c493.png

ffaefb4439b83ea2023a9625f25bb492.png

f1cff809317ed32daadc513668fbe382.png


访问: http://localhost/consumer/payment/get/1


9f6b97871f1bbfcb7704faaebfde0418.png


2.3.6 支付服务提供者8001集群环境构建


建Module

参考cloud-provider-payment8001,建立cloud-provider-payment8002


改POM

写YML

主启动

业务类

修改8001/8002的Controller

26234b269c639c6c4a533e928af3a08f.png


2.3.7 负载均衡+测试


1.先要启动EurekaServer,7001/7002/7004服务


2.再要启动服务提供者provider,8001/8002服务


3.访问 http://localhost/consumer/payment/get/1


访问结果


5ce03f5c97f139af04402258096f3b0d.png


原因:订单服务访问地址不能写死,否则无法进行负载均衡的调用,修改OrderController上的访问地址


0dd7bcfa759627d91c231271e8bbd319.png


**再次进行测试:**依旧报错…


8bfc9c77ab8f19cfe0491d1b32b50a54.png


@LoadBalanced注解赋予RestTemplate负载均衡的能力


2bb9e9a0820be04db280c39e7d7f890b.png


再进行测试:成功!!!


2e62d902df849a6cabdce0e11de45c4f.png


2.3.8 对比官方给出的Eureka示意图


5b3098eb61cfd8c94cfb64e85d5a5e59.png

1ca2b63751501d2c9e7e4aeeca3c493b.jpg

95916e9428c8057c0c6eaba8dfdea27e.png

2.4 actuator微服务信息完善


2.4.1 主机名称:服务名称修改


当前问题:含有主机名称.


95916e9428c8057c0c6eaba8dfdea27e.png


修改cloud-provider-payment8001的yaml,添加instance配置

eureka:
  instance:
    instance-id: payment8001

2.4.2 访问信息有IP信息提示

当前问题:没有IP提示

修改cloud-provider-payment8001的yaml

eureka:
  instance:
    instance-id: payment8001
    prefer-ip-address: true     #访问路径可以显示IP地址

085f87e891ce4708591b489cfb453d9f.png


2.5 服务发现Discovery

对于注册进eureka里面的微服务,可以通过服务发现来获得该服务的信息

  • 修改cloud-provider-payment8001的Controller
@Slf4j
@RestController
public class PaymentController {
    //...
    @Resource
    private DiscoveryClient discoveryClient;
    //...
    @GetMapping(value = "/payment/discovery")
    public Object discovery(){
        List <String> services = discoveryClient.getServices();//获取Eureka上所有的服务
        for (String service : services) {
            log.info("*****service:"+service);
        }
        //获得某一个服务所有的实例
        List <ServiceInstance> instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE");
        for (ServiceInstance instance : instances) {
            log.info(instance.getServiceId()+"\t"+instance.getHost()+"\t"+instance.getPort()+"\t"+instance.getUri());
        }
        return this.discoveryClient;
    }
}
  • 为8001主启动类加上**@EnableDiscoveryClient**
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient //服务发现
public class PaymentMain8001 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8001.class,args);
    }
}
  • 测试

先要启动EurekaServer,再启动8001主启动类,需要稍等一会儿,输入 http://localhost:8001/payment/discovery

719111683002209d0729f20d07842ba0.png



相关文章
|
负载均衡 Kubernetes 网络协议
注册中心如何选型?Eureka、Zookeeper、Nacos怎么选
这是小卷对分布式系统架构学习的第9篇文章,继续探讨注册中心的原理及选型。文章详细介绍了Eureka、Nacos的工作机制与特点,并对比了Eureka、Nacos、Consul和Zookeeper在一致性协议、健康检查、负载均衡等方面的差异。最后根据不同的应用场景给出了注册中心的选型建议,帮助读者理解如何选择最适合的注册中心。
1504 100
|
Cloud Native Java Nacos
微服务时代的新宠儿!Spring Cloud Nacos实战指南,带你玩转服务发现与配置管理,拥抱云原生潮流!
【8月更文挑战第29天】Spring Cloud Nacos作为微服务架构中的新兴之星,凭借其轻量、高效的特点,迅速成为服务发现、配置管理和治理的首选方案。Nacos(命名和配置服务)由阿里巴巴开源,为云原生应用提供了动态服务发现及配置管理等功能,简化了服务间的调用与依赖管理。本文将指导你通过五个步骤在Spring Boot项目中集成Nacos,实现服务注册、发现及配置动态管理,从而轻松搭建出高效的微服务环境。
973 0
|
Java Spring 容器
springcloud-config客户端启用服务发现报错找不到bean EurekaHttpClient
解决 Spring Cloud Config 客户端启用服务发现时报错找不到 bean `EurekaHttpClient` 的问题,主要涉及版本兼容性、依赖配置和正确的配置文件设置。通过检查依赖版本、添加必要的依赖项、配置文件的正确性以及启用服务发现注解,可以有效解决此问题。确保日志中没有其他错误信息也是关键步骤之一。通过这些方法,可以确保 Spring Cloud Config 与 Eureka 客户端正常工作。
367 6
|
负载均衡 监控 Java
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
33726 8
SpringCloud常见面试题(一):SpringCloud 5大组件,服务注册和发现,nacos与eureka区别,服务雪崩、服务熔断、服务降级,微服务监控
|
负载均衡 Java Nacos
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
微服务介绍、SpringCloud、服务拆分和远程调用、Eureka注册中心、Ribbon负载均衡、Nacos注册中心
SpringCloud基础1——远程调用、Eureka,Nacos注册中心、Ribbon负载均衡
|
负载均衡 算法 Nacos
SpringCloud 微服务nacos和eureka
SpringCloud 微服务nacos和eureka
418 0
|
缓存 Java Maven
SpringCloud基于Eureka的服务治理架构搭建与测试:从服务提供者到消费者的完整流程
Spring Cloud微服务框架中的Eureka是一个用于服务发现和注册的基础组件,它基于RESTful风格,为微服务架构提供了关键的服务注册与发现功能。以下是对Eureka的详细解析和搭建举例。
352 0
|
负载均衡 Java 微服务
深入理解Spring Cloud中的服务发现与注册
深入理解Spring Cloud中的服务发现与注册
|
10月前
|
消息中间件 分布式计算 资源调度
《聊聊分布式》ZooKeeper与ZAB协议:分布式协调的核心引擎
ZooKeeper是一个开源的分布式协调服务,基于ZAB协议实现数据一致性,提供分布式锁、配置管理、领导者选举等核心功能,具有高可用、强一致和简单易用的特点,广泛应用于Kafka、Hadoop等大型分布式系统中。
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2