Alibaba Sentinela

Sentinela Visão geral:

  Com a estabilidade entre os populares micro-Serviços, Serviços, e serviços está se tornando cada vez mais importante. Sentinela caudal como um ponto de partida, o controlo da taxa de fluxo, rebaixamento fusível, de uma pluralidade de serviços de protecção estabilidade da dimensão dos sistemas de protecção de carga.

  Sentinela tem as seguintes características:
    uma rica cenários de aplicação: Sentinela realizar um cenário núcleo Alibaba bis XI promover o fluxo últimos 10 anos, como o pico (ou seja, sistema de controle de tráfego em rajadas podem suportar faixa de capacidade), notícias recorte de preenchimento vale de controlo de tráfego de cluster, em tempo real, tais como aplicações indisponíveis jusante soprado.
    monitoramento completo em tempo real: Sentinela, proporcionando o monitoramento em tempo real. Você pode ver um único aplicações de acesso a dados do segundo nível da máquina no console, ou mesmo um resumo da operação do tamanho do cluster de 500 ou menos.
    Broad OSS Eco: Sentinela fornecidos com módulo de integração de outro framework open source / biblioteca fora da caixa, por exemplo, integração e SpringCloud, Dubbo, gRPC de. Você só precisa introduzir depende da configuração simples e apropriada pode acessar rapidamente Sentinel.
    SPI ponto de extensão perfeito: Sentinela fornece fácil de usar, interface de expansão bem-SPI. Você pode rapidamente implementar lógica personalizada através da interface de expansão. Tais como gerenciamento de regras personalizadas, adaptação de fontes de dados dinâmicos.

  Sentinela é principais características:

    

  Sentinela sentinela pode ser simplesmente dividido em biblioteca central e Dashboard. A biblioteca central não depende Painel, mas a combinação de painel pode obter os melhores resultados.

  Use Sentinel para proteção do fusível, é dividido em várias etapas:

    1. Definir o recurso
    2. Definir regras
    3. Verifique se a regra está em vigor

    Recursos: Você pode ser qualquer coisa, de um serviço, o serviço no caminho, ou mesmo um pedaço de código.
    Regras: O Sentinel suporta as seguintes regras: as regras de controle de tráfego, regras fusível de downgrade, regras de proteção do sistema, regras de parâmetros da regra de controle de origem e de acesso hotspot.
         Sentinela são todas as regras podem ser dinamicamente consulta e modificar estados de memória, com efeito imediato depois de modificar a
    definição de recursos podem ser necessários para proteger o bom primeiro, seguido pela regra rearranjo. Ele também pode ser entendido que com os recursos, temos a flexibilidade para definir as várias regras de controle de fluxo a qualquer momento. No tempo de codificação, só nós precisa considerar se o código está a precisar de protecção, se a necessidade de proteger, vai defini-lo como um recurso.

componentes do Sentinel:

  Consola de Gestão:
    obter Sentinela consola  https://github.com/alibaba/Sentinel

    No diretório do pacote jar de armazenamento, use o seguinte comando para iniciar o console:

      java -Dserver.port = 8080 = -Dcsp.sentinel.dashboard.server localhost: 8080 -Dproject.name = sentinela-painel -jar sentinela-painel-xxxjar
      em que - Dserver.port = 8080 é utilizado para especificar a porta consola sentinela 8080 .

      Acesso no browser  http: // localhost: 8080 /  digite a senha da conta para o login

      De Sentinel 1.6.0 em diante, o Sentinel consola introduzido função básica de login, o nome de usuário ea senha padrão são sentinela

      Iniciar Sentinela consola requer JDK 1.8 e acima.

  Todos os serviços para o console de gerenciamento:

    Client Access Console:

      O cliente (necessidade de gerir os micro-serviços) introduziu coordenadas

        módulo de transporte incorporadas as necessidades do cliente para se comunicar com o console Sentinel. pacote JAR podem ser introduzidas por pom.xml:

< Dependência > 
    < groupId > com.alibaba.csp </ groupId > 
    < artifactId > sentinela-transport-simple-http </ artifactId > 
</ dependência >

      Configurando os parâmetros de arranque no cliente

Primavera: 
  a configuração # consola pedido caminho. 
  Cloud: 
    Sentinela: 
      Transporte: 
        Dashboard: localhost: 8080

    Veja uma lista de máquinas e saúde: Visita  http: // localhost: 8080 /  pode ver cliente de acesso apenas

      

      Sentinela é inicializado quando a primeira chamada para o cliente por padrão, começa a enviar um pacote de pulsação para o console. Você também pode sentinel.eager configure = true, cancelou consola Sentinela carregamento lento.

proteção serviço baseado-Sentinel:

  Proteção de Recursos Universal:

    1. introdução dependência

      Note-se que a versão relação SpringCloud-Alibaba com o SpringCloud

      

       Pai introduziu a implementação do projeto alibaba SpringCloud

< Dependência > 
    < groupId > com.alibaba.cloud </ groupId > 
    < artifactId > primavera-nuvem-alibaba-dependências </ artifactId > 
    < versão > 2.1.0.RELEASE </ versão > 
    < Tipo > pom </ digite > 
    < escopo > import </ âmbito > 
</ dependência >

      Sub-projectos (o consumidor de serviço) introduzidas no sentinel

< Dependência > 
    < groupId > com.alibaba.cloud </ groupId > 
    < artifactId > primavera-nuvem-starter-alibaba-sentinela </ artifactId > 
</ dependência >

    método de configuração de rebaixamento fusão

/ ** 
 * camada de Controlo Ordem 
 * / 
@RestController 
@ RequestMapping ( "/ a Ordem" )
 público  classe OrderController { 
    @Autowired 
    Privada RestTemplate RestTemplate; 

    / ** 
     * por sistema de pedidos, chama Mercadorias Serviços de informação produto com base no ID de consulta 
     * @ param id 
     * @return 
     * / 
    @GetMapping ( "/ Compra / {ID}" )
     @SentinelResource (valor = "Ordem", blockHandler = "orderBlockHandler", fallback = "orderFallback" )
     pública Produtos a findById (@PathVariable ( "ID" ) ID longo ) {
         returnrestTemplate.getForObject ( "HTTP: // Product-Service-/ produto /". + ID, produtos de classe ); 
    } 

    // método de fusão degradado 
    pública produtos orderBlockHandler (Long ID) { 
        Produto = new new Product (); 
        product.setId ( -2L ); 
        product.setProductName ( "soprado rebaixamento método ativando" );
         retorno de Produto; 
    } 
    // jogado downscaling métodos 
    públicos Produtos orderFallback (Long ID) { 
        de produtos Produto = new novo produto (); 
        product.setId ( -1L ) ;
        product.setProductName ("Exceção jogado método rebaixamento gatilho" );
         retorno de Produto; 
    } 
}

      Use @SentinelResource comentário sobre os métodos a serem protegidos fusível configuração. A diferença é que com Hystrix, sentinela para uma exceção é lançada e soprado rebaixado para fazer uma distinção mais detalhada, rebaixamento fusível pelo método especificado por retrogradação blockHandler método de reversão de execução especificado gatilho anormal.
      Para @SentinelResource outras configurações como se segue:

      

      Nota: antes da função fallback versão 1.6.0 apenas para o processamento de anormalidades de downgrade (DegradeException), não pode lidar com exceções para negócios

      Em particular, se blockHandler e recuo está configurado, foram limitando rebaixamento só entrará blockHandler lógica de processamento e atirado BlockException.
      Se você não configurar blockHandler, fallback e defaultFallback, vai BlockException foram diretamente lançada quando limitando rebaixamento.

  Finge a alcançar fusão:

    adaptação sentinela de componentes fingir. Se você quer usar, além da introdução de sentinela -Starter dependentes necessárias duas etapas:

      Perfil Abra sentinela apoio fingir de: feign.sentinel.enabled = true
      arranque openfeign adicionado depende da classe de configuração automatizada sentinela efeito arranque take

    1. introdução dependência

< Dependência > 
    < groupId > com.alibaba.cloud </ groupId > 
    < artifactId > primavera-nuvem-starter-alibaba-sentinela </ artifactId > 
</ dependência > 
< dependência > 
    < groupId > org.springframework.cloud </ groupId > 
    < artifactId > primavera-nuvem-starter-openfeign </ artifactId > 
</ dependência >

    2. Abra o suporte de sentinela

#配置fingir 
fingir: 
  sentinela: 
    habilitado: verdadeiro

    3. Configure FeignClient

      Escrever FeignClient classe implementação da interface

      Baseado finge a alcançar fusão necessidade ProductFeginClient degrade para implementar interface personalizada e classe de implementação exigem a digitalização para o navio (@Component), método de rebaixamento é o implementado de interface

@Component
 pública  classe ProductFeignClientImpl o implementos ProductFeignClient { 

    / ** 
     * fusão método de degradação 
     * @ param ID 
     * @return 
     * / 
    @Override 
    pública Produtos a findById (Long ID) { 
        Produto = new new Product (); 
        product.setId ( -1L ) ; 
        product.setProductName ( "método de gatilho soprado downgrade" );
         retorno de Produto; 
    } 
}

      Add hystrix soprado Modificar FeignClient

/ ** 
 * O nome da necessidade de serviço para chamar a declaração 
 * @FeignClient 
 * Nome: nome do serviço do provedor de serviços 
 * fallback: redução de escala métodos para configurar soprado classe de implementação aconteceu 
 * / 
@FeignClient (nome = "Product-Service", fallback = ProductFeignClientImpl. classe )
 pública  de interface ProductFeignClient { 

    / ** 
     * configuração requer a interface de serviço chamado micro- 
     * / 
    @GetMapping (valor = "/ produto / {ID}" )
     pública Produtos a findById (@PathVariable ( "ID" ) longa ID); 
}

    política Feign define o nome do recurso interface correspondente: HttpMethod: protocol: // requesturl. anotação @FeignClient de todas as propriedades, o Sentinel são feitas compatível.

      método de interface ProductFeginClient correspondente ao recurso nomeado findById o GET: http: // Product-Service-/ produto / {ID}
    4. Iniciar o teste .........

Acho que você gosta

Origin www.cnblogs.com/roadlandscape/p/12501576.html
Recomendado
Clasificación