Clusterpunkt-Link

"Cluster-Punkt-Link" zeigt die gerade aufgerufene Ressource an (eigenständige Echtzeit), und die Seite "Cluster-Punkt-Link" (eigenständiger Anruf-Link) ruft den Betriebsstatus der angegebenen Client-Ressource in Echtzeit ab.

Es bietet insgesamt zwei Anzeigemodi: Einer verwendet eine Baumstruktur, um die Anrufverbindung der Ressource anzuzeigen, und der andere zeigt den Betrieb der Ressource, ohne die Anrufverbindung zu unterscheiden.

Hinweis: Die Clusterüberwachung ist eine In-Memory-Information, sie zeigt nur die Ressourcen an, die nach dem Start aufgerufen wurden.

Wird standardmäßig in der Baumansicht angezeigt

Bild
  • Die Liste zeigt alle Schnittstellen unter dem Dienst, einschließlich Pass QPS, Reject QPS, Anzahl der Threads, durchschnittliche RT, Pass in Minuten, Reject in Minuten.
  • 172.20.10.3:8721 ist die aktuelle Dienst-IP-Adresse, und der Port ist der Port, der der Interaktion der Sentinel-Konsole dient. Der Dienst wird einen HttpServer starten, der von diesem Port lokal belegt ist, und der Server wird mit der Sentinel-Konsole interagieren Beispielsweise fügt die Sentinel-Konsole hinzu. Wenn eine Strombegrenzungsregel festgelegt ist, werden die Regeldaten zum Empfangen an den HttpServer gepusht, und der HttpServer registriert dann die Regel in Sentinel.
  • Sie können Vorgänge wie Flusskontrolle, Downgrade, Hotspot und Autorisierung zur aktuellen Ressource hinzufügen.

Listenansicht:Bild

Wir können sehen, dass es unter der Betriebsliste Optionen wie Flusskontrolle, Downgrade, Hotspot, Autorisierung usw. gibt.

Als nächstes werden wir die oben genannten Funktionen im Detail vorstellen.

Testumgebung (Microservice-Cluster)

übergeordnete pom-Datei

        <spring-cloud.version>Hoxton.SR9</spring-cloud.version>
        <spring-boot.version>2.3.2.RELEASE</spring-boot.version>
        <spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>

Codestruktur auf einen Blick

Bild

Producer-Bereitstellung mit mehreren Knoten

Bild

Hersteller

/**
 * 生产者controller
 *
 * @author issa
 **/

@RefreshScope
@RequestMapping(value = "/producer")
@RestController
public class ProducerController {

    @GetMapping("/{id}")
    @SentinelResource("test")
    public String producerById(@PathVariable(value = "id") String id) {

        ProducerVO producerVO = new ProducerVO();
        producerVO.setId(id);
        producerVO.setPort(UUID.randomUUID().toString());

        return producerVO.toString();
    }
}

Producer-Startup-Klasse

/**
 * 生产者
 *
 * @author issa
 **/

@EnableDiscoveryClient
@SpringBootApplication
public class ProducerApplication {

    public static void main(String[] args) {
        SpringApplication.run(ProducerApplication.classargs);
    }

}

Verbraucher

/**
 * 消费者controller
 *
 * @author issavior
 **/

@RequestMapping(value = "/consumer")
@RestController
@RefreshScope
public class ConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    @Autowired
    private ProducerFeign producerFeign;

    @GetMapping("/rest/{id}")
    @SentinelResource("rest")
    public String restConsumerById(@PathVariable(value = "id") String id) {

        return restTemplate.getForObject("http://ossa-service-producer/producer/" + id, String.class);
    }

    @GetMapping("/feign/{id}")
    @SentinelResource("feign")
    public String feignConsumerById(@PathVariable(value = "id") String id) {

        return producerFeign.producerById(id);
    }
}

Consumer-Startup-Klasse

/**
 * 消费者
 *
 * @author issavior
 */

@EnableFeignClients("com.ossa.common.feignapi")
@EnableDiscoveryClient
@SpringBootApplication
public class ConsumerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.classargs);
    }

    @LoadBalanced
    @Bean
    public RestTemplate restTemplate() {

        return new RestTemplate();
    }
}

Scheinapi

/**
 * @author issavior
 */

@FeignClient(value = "ossa-service-producer")
@RequestMapping(value = "/producer")
public interface ProducerFeign {

    /**
     * 根据ID查询商品
     *
     * @param id 商品的主键ID
     * @return 相关商品的信息
     */

    @GetMapping("/{id}")
    String producerById(@PathVariable(value = "id") String id);
}