Prefácio
Com o desenvolvimento da Internet, a escala dos aplicativos de sites foi continuamente expandida e as arquiteturas de aplicativos verticais convencionais não podem mais lidar com ele. A arquitetura de serviços distribuídos e a arquitetura de computação móvel são imperativos. Dubbo é uma estrutura de serviço distribuída, que nasceu neste caso. Agora, o negócio principal é extraído como um serviço independente, para que os aplicativos front-end possam responder com mais rapidez e estágio.
O que é Dubbo
Dubbo é a estrutura de serviço distribuída de código aberto do Alibaba. Sua maior característica é que é estruturada de maneira em camadas. Este método pode dissociar (ou maximizar o acoplamento solto) entre as camadas. Do ponto de vista do modelo de serviço, Dubbo adota um modelo muito simples, ou o provedor fornece serviços ou o consumidor consome serviços. Portanto, com base nesse ponto, podemos abstrair os dois papéis do provedor de serviços e do consumidor de serviços. Sobre o Centro de Registro, Suporte ao Contrato, Monitoramento de Serviços e outros conteúdos
O que Dubbo pode fazer
Quando o site se tornar maior, é inevitável que o aplicativo seja dividido e com manutenção (microsserviços) para melhorar a eficiência do desenvolvimento, otimizar o desempenho, salvar os principais recursos competitivos etc.
À medida que mais e mais serviços, as informações de endereço da URL do serviço explodirão, o gerenciamento da configuração se torna muito difícil e a pressão de ponto único do balanceador de carga de hardware F5 está ficando cada vez maior.
Ao desenvolvimento adicional, as dependências entre serviços se tornam complicadas e até não sabem dizer qual aplicativo é iniciado antes de qual aplicação, os arquitetos não podem descrever completamente o relacionamento arquitetônico do aplicativo.
Em seguida, o número de chamadas de serviços se torna cada vez maior e o problema da capacidade de serviço é exposto. Quanto suporte para a máquina esse serviço exige? Quando devo adicionar a máquina? etc ……
Ao encontrar esses problemas, você pode usar o Dubbo para resolvê -los.
O que eu compartilho com você desta vez é a configuração inicial do aplicativo Dubbo Framework e o uso do Centro de Registro Zookeeper; Quando se trata do centro de registro, existem apenas dois tipos de coisas que usei: Zookeeper e Eureka. Eu uso ZK com Dubbo e Eureka com SpringCloud. Portanto, compartilharei com você alguns capítulos sobre microsserviços mais tarde, esperando que seja útil para você.
Instale o Zookeeper do Centro de Registro
Provedor -quadro e consumidor da Dubbo
implantação de dubbo-admin
Instale o Zookeeper do Centro de Registro
Primeiro de tudo, precisamos pesquisar o endereço de download do Zookeeper online. Estou no sistema Linux, por isso baixamos o pacote Zookeeper-3.3.6.tar.gz e descompacteá-lo através do Tar -zxvf Zookeeper -3.3.6.tar.gz. Deve -se notar que os arquivos de configuração no pacote geral são a versão de amostra padrão e o nome do arquivo de configuração padrão do Zookeeper é apenas zoo.cfg. Para não especificar o nome do arquivo sempre, precisamos criar um arquivo de configuração chamado zoo.cfg no diretório conf. O conteúdo do arquivo pode ser copiado de zoo_sample.cfg ou renomear o arquivo. O conteúdo é o seguinte vim zoo.cfg:
# O número de milhões de segundos de cada tickTickTime = 2000 #HeartBeat Frequency # o número de carrapatos que a fase inicial de sincronização # pode levar o TakinitlImit = 10 #Restrt Connection # o número de ticks que pode passar entre o # Stormored e obtendo um reconhecimento de AgradecmentsynCliMit = 5 # o diretório/smakess Stormed.datir.datir o storagedArtInDerMentScliMit = 5 # o diretório/smakes é o storage. que os clientes vão connectClientport = 2081 #zookeeper port externa
Não vou modificar as informações do parâmetro aqui e usar o padrão; Apresente brevemente vários comandos comumente usados sobre como editar o conteúdo do arquivo no Linux:
vim zoo.cfg: visualize o conteúdo do arquivo
Inserir: execute o comando de inserção
ESC: Cancele o comando e pressione: Q: Saia ,: wq: salvar e sair
Quando temos zoo.cfg, precisamos inserir seu diretório de bin para encontrar o arquivo zkSserver.sh e iniciar o Centro de Registro Zookeeper executando o comando ./zkserver.sh start. O prompt de inicialização normal é o seguinte:
Geralmente, o Zookeeper está em um servidor separado como um centro de registro, e o programa (aqui se refere ao meu local) precisa ligar para outro centro de registro. Além disso, o Centro de Registro precisa verificar se a porta aberta do Zookeeper pode ser conectada. Meu local é o Windows 10, então você não precisa verificar a porta através do cliente Zookeeper. Você só precisa usar o Telnet IP 2081 para detectar se a porta está aberta;
Provedor -quadro e consumidor da Dubbo
Antes de tudo, por conveniência, precisamos definir uma interface unificada, que é a interface pública extraída pelo negócio. Nós empacotamos essa interface separadamente em um módulo. Aqui está dubbo_api. Definimos a seguinte interface neste módulo:
interface pública UserService {List <Mouser> getUsers (); }Em seguida, crie um módulo de provedor, que depende do módulo Dubbo_API e implementa a interface UserService, o código é o seguinte:
public class UserServiceImpl implementa UserService {@value ("$ {server.port}") private int porta; / ** * @return */ @Override Public List <Mouser> getUsers () {list <Mouser> List = new ArrayList <> (); for (int i = 0; i <5; i ++) {user user = new Mouser (); user.setUserName ("shenniu" + i); user.setUserpwd ("porta:" + porta); list.add (usuário); } Lista de retorno; }}Como provedor de serviços, para usar a estrutura do Dubbo, você precisa primeiro apresentar o Dubbo e depois fazer alguma configuração. Primeiro, precisamos introduzir dependências do Dubbo através do Maven no módulo Dubbo_provider. O Zookeeper é usado no Centro de Registro, por isso também precisamos introduzir dependências correspondentes através do MAVEN:
<Depencency> <PuerpId> org.apache.zookeeper </proupId> <ArtifactId> Zookeeper </ArtifactId> <Versão> 3.4.8 </siers> </dependency> <pendency> <puidid> com.101tec </groupId> <stifactId> zkclient </purfactid> <versão 0.301tec </groupId> <tifactId> zkclient </artefactid> <PuerpId> com.alibaba </frugiD> <ArtifactId> dubbo </artifactId> <versão> 2.5.3 </version> <clusions> <cclusion> <purbrouid> org.springframework </puss> <TarfactId> dubbo_api </artifactId> <versão> 0.0.1-snapshot </versão> </dependency>
Após concluir a dependência, o restante é configurar o provedor de Dubbo, criar o arquivo de configuração de recursos/dubbo-conf/server.xml e o conteúdo do arquivo:
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-Nome do provedor-> <Dubbo: Nome do aplicativo =" Demo-Provider "/> <! protocolo = "Zookeeper" endereço = "192.168.168.168:2081" /> <!-Use o protocolo Dubbo para expor o serviço na porta 20880, porta de comunicação do protocolo-> <! REF = "UserService"/> <!-Implementação da interface de serviço do usuário-> <bean id = "userService"/> </beans>
Adicione a importação de recursos @IMPORTRESOURCE ("ClassPath: Dubbo-Conf/*. XML") no portal do DubboProviderApplication, e nosso provedor de serviços está concluído aqui. Verifique o log de inicialização:
Não há exceção quando o provedor de serviços inicia. Vejamos o chamador para criar um módulo de dubbo_consumer e também apresentar as dependências do módulo da interface pública dubbo_api, depois criar um userController e expor uma interface de usuário:
@RestControllerPublic Classe UserController {@AUTOWIRED PRIVADO UserService UserService; @GetMapping ("/Usuários") Lista pública <Mouser> getUsers () {return userservice.getUsers (); }}O serviço de usuários aqui é a injeção da interface pública; Após a conclusão da codificação, o lado do consumidor apresenta dependências de Dubbo e Zookeeper:
<Depencency> <PuerpId> org.apache.zookeeper </proupId> <ArtifactId> Zookeeper </ArtifactId> <Versão> 3.4.8 </siers> </dependency> <pendency> <puidid> com.101tec </groupId> <stifactId> zkclient </purfactid> <versão 0.301tec </groupId> <tifactId> zkclient </artefactid> <GrupId> com.alibaba </frugiD> <ArtifactId> dubbo </artifactId> <versão> 2.5.3 </version> <clusions> <cclusion> <voundId> org.springframework </puss> <stifactId> spring </artifactId> </exclusão> </exclusões>
Também criamos um arquivo de configuração com o nome Recursos/Dubbo-conf/client.xml e apresentamos esse recurso na entrada do aplicativo:
@IMPORTRESOURCE ("ClassPath: Dubbo-Conf/*. Xml")@SpringBootApplicationPublic Classe dubboconsumerApplication {public static void main (string [] args) {springappplication.run (dubboconsumerApplication.class, args); }}O conteúdo de configuração do client.xml é o seguinte:
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd "> <!-Nome do serviço-> <dubbo: nome do aplicativo =" Demo-consumer "/> <! protocolo = "Zookeeper" endereço = "192.168.168.168:2081" /> <!-Interface de serviço do usuário-> <dubbo: referência id = "ususerVice" interface = "Service.userService" /> </ Beans>
No momento, um provedor de serviços simples, a configuração e a codificação de chamadores de serviço são concluídas e os 3 módulos são os seguintes:
Em seguida, inicie o provedor e o consumidor, respectivamente; Em seguida, solicite a interface através da interface do controlador exposta pelo consumidor. Meu endereço aqui é http: // localhost: 8082/usuários:
O efeito é que o consumidor recebe o resultado devolvido pelo provedor através da interface do Usuários Service Injected GetUsers (), o que também significa que o uso simples da estrutura do Dubbo foi considerado bem -sucedido.
implantação de dubbo-admin
Como uma estrutura RPC popular, o Dubbo possui essa ferramenta de monitoramento de código aberto dubbo-admin. Devo dizer que o pacote Dubbo-Admin.war que está pronto na Internet não pode ser usado agora ou precisa de pontos CSSDN para download. Existem muitas versões e é um pouco complicado. Vá decisivamente para o Git para puxar o código -fonte e empacotá -lo sozinho. O endereço GIT é: https://github.com/apache/incubator-dubbo-ops. Depois de puxá-lo para baixo, precisamos apenas prestar atenção ao projeto Dubbo-Admin, e outras coisas podem ser ignoradas por enquanto; Depois de abrir o projeto, precisamos apenas modificar a seguinte configuração de captura de tela (você também pode modificar o arquivo de configuração embalado):
#zookeeper Endereço de configuração e port dubbo.registry.address = zookeeper: //127.0.0.1: 2081#Login de back -end Dubbo.admin.root.password = rootdubbo.admin.guest.password = convidado
Depois de executar o pacote, você pode obter o nome: pacote dubbo-admin-2.0.0.war, depois colocá-lo no tomcat e navegar pelo navegador. A conta e a senha são ambas root; Depois de fazer login, você pode ver o provedor e o consumidor que começamos antes. Esta é a interface do Serviço de Centro de Registro de Monitoramento de Dubbo-Admin. Você pode clicar diretamente nesses serviços. Se você não disser muito, tente você mesmo.
Endereço Git: https://github.com/shenniuboxing3 pacote de publicação NUGET: https://www.nuget.org/profiles/shenniuboxing3
Resumir
O acima é o conteúdo inteiro deste artigo. Espero que o conteúdo deste artigo tenha certo valor de referência para o estudo ou trabalho de todos. Se você tiver alguma dúvida, pode deixar uma mensagem para se comunicar. Obrigado pelo seu apoio ao wulin.com.