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

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 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



相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
缓存 负载均衡 监控
SpringCloud&Eureka理论与入门
SpringCloud&Eureka理论与入门
32 0
|
26天前
|
安全 Java 开发者
Java一分钟之-Spring Cloud Netflix Eureka:服务注册与发现
【6月更文挑战第8天】Spring Cloud Eureka是微服务架构的关键,提供服务注册与发现功能。本文讲解Eureka工作原理、配置、常见问题及解决方案。Eureka包含Server(管理服务状态)和Client(注册服务实例并发现服务)。快速入门包括启动Eureka Server和创建Eureka Client。常见问题涉及服务注册不上、服务下线和客户端注册信息不准确,可通过检查网络、理解自我保护机制和配置元数据解决。此外,文中还提及健康检查、安全配置和集群部署等高级实践,以增强系统健壮性和扩展性。
61 8
|
6天前
|
Java Maven 微服务
Spring Cloud Netflix 之 Eureka
Spring Cloud Netflix Eureka是服务发现组件,由Netflix开发,Spring Cloud集成为微服务治理工具。Eureka采用客户端/服务器架构,包含Eureka Server(服务注册中心)和Eureka Client(服务提供者和服务消费者)。服务提供者注册到Eureka Server,服务消费者通过它查找并调用服务。
|
9天前
|
微服务
springCloud之服务注册与发现Eureka
springCloud之服务注册与发现Eureka
6 0
|
2月前
|
负载均衡 算法 Java
【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现
【SpringCloud】Eureka原理分析、搭建Eureka服务、服务注册、服务发现
32 3
|
2月前
|
容灾 Java 测试技术
低成本、高稳定性 |满帮集团 Eureka 和 ZooKeeper 的上云实践
充分了解和利用云的能力,能够让满帮技术团队从底层的持续投入中解脱出来,聚焦更上层的系统稳定性和工程效率,从架构层面实现更高的 ROI。
|
2月前
|
容灾 Java 测试技术
低成本、高稳定性 | 满帮集团 Eureka 和 ZooKeeper 的上云实践
业务体量增大后,日益凸显的架构稳定性问题该如何解决?满帮集团选择了上阿里云,采用阿里云 MSE Nacos,MSE ZooKeeper 产品替换原先的 Eureka 和 Zookeeper 集群,做到了低成本快速的架构升级,以及上云期间业务流量的无损平滑迁移。
57072 6
|
2月前
|
负载均衡 监控 容灾
【SpringCloud】详解Eureka注册中心
【SpringCloud】详解Eureka注册中心
40 0
|
2月前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
431 2
|
2月前
|
监控 Dubbo 前端开发
快速入门分布式系统与Dubbo+zookeeper Demo
快速入门分布式系统与Dubbo+zookeeper Demo
437 0