Springcloud-Alibaba 〖四〗
PS: github仓库仓库地址项目都放到里面了
一. actuator微服务信息完善
1.1 在8001与8002项目中分别添加
instance:
    instance-id: payment8001

改完后我们的自定义服务名称就暴露出来了
 
1.2 点开payment8001找到 /health 路径
安全检查正常
 
1.3 配置访问路径可以访问IP

 当鼠标放到刚配置的主机名上时,左下角就会显示主机的IP
 
二. 添加 DiscoveryClient 发现微服务
2.1 修改8001项目controller层
package com.atguigu.springcloud.controller;
import com.atguigu.springcloud.entities.CommonResult;
import com.atguigu.springcloud.entities.Payment;
import com.atguigu.springcloud.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@Slf4j
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;
    @Resource
    private DiscoveryClient discoveryClient;
    @Resource
    private PaymentService paymentService;
    @PostMapping(value = "/payment/create")
    public CommonResult create(@RequestBody Payment payment){
        int result = paymentService.create(payment);
        log.info("*******插入结果为: "+result);
        if(result>0){
            return new CommonResult(200,"插入数据库成功"+"机器端口号为:"+serverPort,result);
        }else{
            return new CommonResult(444,"插入数据库失败"+"机器端口号为:"+serverPort,null);
        }
    }
    @GetMapping(value = "/payment/get/{id}")
    public CommonResult getPaymentById(@PathVariable("id") Long id){
        Payment paymentById = paymentService.getPaymentById(id);
        log.info("*********查找结果为: "+paymentById);
        if(paymentById!=null){
            return new CommonResult(200,"查找成功: "+"机器端口号为:"+serverPort,paymentById);
        }else{
            return new CommonResult(444,"查找为空,查找ID为: "+id+"机器端口号为:"+serverPort,null);
        }
    }
    @GetMapping(value = "/payment/discovery")
    public Object discovery(){
        List<String> services = discoveryClient.getServices();
        for (String service : services) {
           log.info("********服务名称*****"+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;
    }
}
2.2 调用该服务

 控制台打印出了相关信息
 
三. Eureka自我保护理论知识
概述: 保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护,一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。
 一句话: 某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该微服务的信息进行保存。
 
如果在Eureka Server的首页看到以上这段提示,则说明Eureka进入了保护模式。属于CAP里面的AP分支。

3.1 关闭Eureka自我保护机制
这里开启暴力剔除模式
 
 
 
                   
                   
                   
                   
                             本文详细介绍SpringCloud Alibaba微服务框架的实践应用,包括actuator微服务信息完善、使用DiscoveryClient发现微服务以及Eureka自我保护机制的理论与关闭方法。通过具体步骤演示如何在项目中实现这些功能。
本文详细介绍SpringCloud Alibaba微服务框架的实践应用,包括actuator微服务信息完善、使用DiscoveryClient发现微服务以及Eureka自我保护机制的理论与关闭方法。通过具体步骤演示如何在项目中实现这些功能。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   322
					322
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            