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

-
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:
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

Producer-Bereitstellung mit mehreren Knoten

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.class, args);
}
}
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.class, args);
}
@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);
}