Recentemente, fui exposto a microsserviços e tenho algum entendimento desse aspecto. Vou compartilhar com você.
O Spring Cloud é um conjunto completo de estruturas para a implementação de microsserviços com base na inicialização da mola. Pode -se dizer que a inicialização da primavera como estrutura e nuvem de primavera, pois os microsserviços juntos formam um novo sistema de estrutura que não pode ser ignorado. Ele fornece os componentes necessários para o desenvolvimento de microsserviços, como gerenciamento de configurações, descoberta de serviços, disjuntores, roteamento inteligente, micro-agentes, barramento de controle, bloqueios globais, campanhas de tomada de decisão, sessões distribuídas e gerenciamento de estados de cluster, que são convenientes e fáceis de usar. A Spring Cloud inclui muitos sub -quadros, entre os quais a Spring Cloud Netflix é uma das estruturas, que fornece principalmente módulos: descoberta de serviços, disjuntores e monitoramento, roteamento inteligente, balanceamento de carga do cliente, etc.
característica
(1) Eureka, registro e descoberta de serviços, fornece um centro de registro de serviço, cliente de descoberta de serviços e uma interface conveniente para visualizar todos os serviços registrados. Todos os serviços usam o cliente de descoberta de serviço da Eureka para se registrar no servidor de Eureka.
(2) Zuul, Gateway, todos os clientes solicitam acessar os serviços de back -end através deste gateway. Ele pode usar certas configurações de roteamento para determinar qual serviço lida com um determinado URL. E obtenha o serviço registrado da Eureka para encaminhar a solicitação.
(3) Fita, isto é, balanceamento de carga. Quando o Zuul Gateway envia uma solicitação para uma aplicação de um determinado serviço, se um serviço iniciar várias instâncias, ele o enviará para uma determinada instância de serviço através da fita através de uma determinada política de balanceamento de carga.
(4) Fingir, Service Client, se os serviços precisarem acessar, você pode usar o RestTemplate ou Feign Client para acessar. Ele usa fita por padrão para obter o balanceamento de carga.
(5) Hystrix, monitoramento e disjuntor. Precisamos adicionar apenas uma tag Hystrix à interface de serviço para realizar as funções de monitoramento e disjuntor dessa interface.
(6) O Hystrix Painel, Painel de Monitoramento, fornece uma interface que pode monitorar o tempo consumido pelas chamadas de serviço em cada serviço.
(7) Turbina, monitorando a agregação, usando o monitoramento Hystrix, precisamos abrir as informações de monitoramento de cada instância de serviço para visualizar. A turbina pode nos ajudar a agregar as informações de monitoramento de todas as instâncias de serviço em um local para visualização unificada.
Você pode consultar o documento: https://springcloud.cc/spring-cloud-netflix.html
(1) Centro de Registro e Monitoramento de Serviços:
@SpringbooTApplication@enableeurekaserver@EnableHyStrixDashboardPublic Classe ApplicationRegistry {public static void main (String [] args) {new SpringApplicationBuilder (Application.class) .Web (true) .run (args); }}Aqui, @springbootapplication usando a tag de mola mostra que o aplicativo atual é um aplicativo de inicialização de mola. Dessa forma, posso usar diretamente a função principal para iniciar o aplicativo no IDE, ou posso iniciá -lo com a linha de comando após a embalagem. Obviamente, você também pode iniciar o pacote de guerra embalado com um servidor como o TomCat. Use a tag @enableeurekaserver para iniciar os componentes do Registro de Serviços Eureka durante a inicialização. Ele ouvirá uma porta, que é 8761 por padrão, para receber o registro de serviço. E forneça uma página da web. Depois de abri -lo, você pode ver o serviço registrado. A adição de @enablehystrixdashboard fornecerá uma página de monitoramento. Podemos inserir o endereço do serviço a ser monitorado para visualizar o status da chamada da interface com o monitoramento Hystrix ativado. Obviamente, para usar os componentes acima, precisamos adicionar dependências correspondentes no arquivo MAVEN POM, como o uso do parente de estrela de primavera, confiando no Spring-Cloud-Starter-eureka-server e no spring-starter-hystrix-dashboard.
(2) Chamada entre serviços:
Existem duas maneiras de fazer chamadas de serviço, Resttemplate e FeignClient. Não importa qual seja o método, ele chama a interface HTTP do Serviço através da interface restante, e os parâmetros e resultados são serializados e desserializados por padrão através de Jackson. Como a interface definida pelo RestController do Spring MVC, os dados retornados são serializados nos dados JSON através de Jackson.
O primeiro tipo: Resttemplate, você só precisa definir um feijão Resttemplate e configurá -lo como Cartera -Balanced:
@ConfigurationPublic Classe SomecloudConfiguration {@loadBalanced @Bean Resttemplate RestTemplate () {return new Resttemplate (); }}Dessa forma, podemos injetar este feijão onde precisamos:
classe pública SomEServiceclass {@AUTOWIRed Private Resttemplate Resttemplate; public String getUserById (Long UserID) {UserDTO Results = RestTemplate.getForObject ("http: // users/getUserDetail/" + userID, userdto.class); RETORNO DE RECURSOS; }}Onde os usuários são o ID do serviço, a faixa de opções obterá uma instância desse serviço na lista de instâncias de serviço, enviará uma solicitação e obterá o resultado. O UserDTO do Objeto requer um número de série e seu número anti-série será concluído automaticamente.
O segundo tipo: FeignClient
@FeignClient (Value = "Usuários", Path = "/Usuários") Public Interface UserComPoSiteService {@RequestMapping (Value = "/getUserDetail/{id}", Method = requestMethod.get, produz = MediaType.Application_Json_Value) UserDTO getUSerById (@PathVARIDIDADEPrecisamos definir apenas uma desculpa usando @FeignClient. O Spring Cloud Feign nos ajudará a gerar uma implementação e obter dados do serviço de usuários correspondentes. Entre eles, o valor em @feignClient (value = "usuários", path = "/users/getUserDetail") é o ID de serviço, e o caminho é o prefixo do caminho desse grupo de interfaces. Na definição do método a seguir, assim como a configuração da interface MVC da primavera, para este método, seu URL correspondente é/usuários/getUserDetail/{id}. Então, ao usá -lo, como injetar um serviço geral e depois usá -lo:
Classe pública SometherServiceclass {@AUTOWIRED PRIVADO UserComPositeService UserService; public void Dosomething () {// ...... UserDTO Resultados = Userservice.getUserById (UserID); // Outra operação ...}}(3) disjuntor:
// disjuntor: para resolver o problema que chama o método de fallback para substituir o método com falha quando uma chamada de método falha, a função da tolerância a falhas/erros de cascata de falha foi alcançada. // FallbackMethod Especifica o método de Fallback @hystrixCommand (FallbackMethod = "DostudentFallback") @requestmapping (value = "Dostudent", Method = requestMethod.get) public string Dostudent () {Return: seu nome: sua idade: segredo!Entre eles, use @enablecircuitbreaker para ativar o suporte ao disjuntor. O Spring Cloud fornece um console para monitorar a operação do disjuntor, que é ativado pela anotação @enablehystrixDashboard.
O acima é uma breve introdução aos componentes da Spring Cloud Netflix. Espero que seja útil para o aprendizado de todos, e espero que todos apoiem mais o wulin.com.