2.cloud-Eureka服务注册与发现

1.Eureka单点

1.1 建Module

1.2 POM

复制代码
<dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

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

1.3 Yml

复制代码
server:
  port: 7001

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

1.4 主启动

复制代码
@EnableEurekaServer
@SpringBootApplication
public class EurekaMain7001 {

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

2.支付服务注册

2.1 增加POM

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

2.2 写YML

复制代码
server:
  port: 8001
spring:
  application:
    name: cloud-payment-service
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

2.3 主启动

复制代码
@EnableEurekaClient
@SpringBootApplication
public class PaymentMain {

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

2.4 服务中心

3.订单服务注册

3.1 增加POM

复制代码
<!--eureka-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

3.2 写Yml

复制代码
server:
  port: 8001

eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka
spring:
  application:
    name: cloud-payment-service

3.3 使用@LoadBalanced

复制代码
@Configuration
public class ApplicationContextConfig {

    @LoadBalanced
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

3.4 业务代码

复制代码
@RestController()
@RequestMapping("order")
@Slf4j
public class OrderController {
 
    public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE";


    @GetMapping("/get/{id}")
    public CommonResult<Payment> getPayment(@PathVariable("id") Long id){
        return restTemplate.getForObject(PAYMENT_URL+"/payment/get/"+id,CommonResult.class);
    
}

4.actuator微服务信息完善

4.1 服务名称修改

复制代码
eureka:
  instance:
    instance-id: payment${server.port}

4.2 访问有ip信息提示

复制代码
eureka:
  instance: 
    prefer-ip-address: true

5.关闭保护机制

5.1 Server端yml

复制代码
eureka: 
  server:
    enable-self-preservation: false
    eviction-interval-timer-in-ms: 2000

5.2 服务端

复制代码
eureka:
  instance: 
    lease-renewal-interval-in-seconds: 10
    lease-expiration-duration-in-seconds: 10

5.3 最后集群配置

复制代码
server:
  port: 7002
eureka:
  instance:
    hostname: eureka7002.com
    ip-address: 192.168.2.3 #强制指定IP地址,默认会获取本机的IP地址
    prefer-ip-address: true
    instance-id: ${eureka.instance.ip-address}:${server.port}
  client:
    fetch-registry: false       #表示是否从Eureka Server获取注册的服务信息
    register-with-eureka: false #falase表示不向注册中心注册自己
    service-url:
      defaultZone: http://192.168.2.17:7001/eureka/    #设置与eureka server交互的地址查询服务和注
  server:
    enable-self-preservation: false     #关闭自我保护机制
    eviction-interval-timer-in-ms: 2000 #移除失效服务时间

spring:
  config:
    location: classpath:/,file:./config/
  cloud:
    inetutils:
      # 忽略指定网卡,支持正则表达式(这里使用正则表达式忽略所有虚拟机网卡)
      ignored-interfaces: ['VMware.*']
      use-only-site-local-interfaces: true
相关推荐
Star(up up up)13 小时前
Redis Windows 安装教程:使用Windows 的 Redis 压缩包
redis·笔记·学习·程序人生·云原生·学习方法·改行学it
分布式存储与RustFS16 小时前
Terraform 状态文件老在本地丢、并发还撞锁:把 state 锁进 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
对象存储与RustFS17 小时前
Jenkins 的构建产物别堆在控制器磁盘:用 RustFS 当它的 S3 工件仓库
后端·docker·云原生
罗小爬EX1 天前
Helm 从概念到实战:以一个普通 Web 应用为例
云原生·helm
分布式存储与RustFS2 天前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
分布式存储与RustFS2 天前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Eyfcom2 天前
〖物流云原生实战 01〗K8s Operator 在物流定时任务中的实践:从“裸 CronJob”到“声明式任务编排”
云原生·物流管理系统·物流云原生实战
阿里云云原生2 天前
阿里云智能体白皮书开源进展
云原生
阿里云云原生2 天前
万联智策基于 AgentCore 构建数字员工团队,800+智能体规模化落地
云原生
分布式存储与RustFS3 天前
群晖 NAS 被 C3RB3R 锁了:本地备份一起被加密,RustFS 对象锁为什么删不掉
运维·云原生·开源·对象存储·分布式存储·s3·性能基准