1. Gere o andaime do projeto por meio de templates
O Dubbo Initializer pode ser usado para gerar rapidamente andaimes de projetos Java para ajudar a simplificar a construção de projetos de microsserviços, configuração básica, gerenciamento de dependências de componentes, etc.
O inicializador ainda está sendo atualizado e mais suporte ao recurso Dubbo será lançado um após o outro.
Selecione a versão Dubbo
O inicializador será usado para dubbo-spring-boot-starter
criar um projeto Spring Boot, então primeiro precisamos escolher a versão do Dubbo e do Spring Boot.
Insira as informações básicas do projeto
A seguir, preencha as informações básicas do projeto, incluindo coordenadas do projeto, nome do projeto, nome do pacote, versão do JDK, etc.
Escolha a estrutura do projeto
Existem duas estruturas de projeto para escolher, a saber, 单模块
e 多模块
, neste exemplo escolhemos 单模块
.
- Módulo único, todos os códigos dos componentes são armazenados em um módulo, caracterizado por uma estrutura simples.
- Multimódulo, o projeto gerado possui
API
doisService
módulos, queAPI
são usados para armazenar a definição do serviço Dubbo eService
para armazenar a implementação do serviço ou lógica de chamada. Normalmente, o multimódulo é mais propício para separar o gerenciamento e a liberação da definição de serviço.
Selecione componentes dependentes
Selecionamos os seguintes componentes dependentes para o modelo por padrão:
- Componentes Dubbo
- Interface Java
- registro, tratador de zoológico
- ProtocoloTCP
- Componentes comuns de microsserviços
- Rede
- Meu sapato
- mecanismo de modelo
Com base nas opções acima, o projeto gerado usará o Zookeeper como centro de registro, usará o protocolo Dubbo2 TCP de alto desempenho como protocolo de comunicação RPC e adicionará dependências e exemplos para componentes como Web e Mybatis.
Nota: Os componentes Dubbo selecionados acima também são opções padrão, ou seja, sem adicionar manualmente nenhuma dependência, clique em Geração de Código logo após abrir a página, e o código gerado conterá os componentes Dubbo acima.
Se você adicionar componentes dependentes manualmente, preste atenção às restrições implícitas de relacionamento de combinação entre os componentes dependentes do Dubbo, como
- Se [API de serviço Dubbo]-[IDL] for selecionado, atualmente apenas o protocolo [HTTP/2] ou [gRPC] em [Protocolo Dubbo] será suportado.
- No mesmo grupo de dependências, apenas um do mesmo tipo de dependências pode ser selecionado. Por exemplo, no grupo [Dubbo Registry&Config&Metadata], apenas um de [Zookeeper] e [Nacos] pode ser selecionado da perspectiva do centro de registro. Modifique a configuração manualmente no código. Mas o centro de registro e o centro de configuração podem ser selecionados separadamente, por exemplo, Zookeeper e Apollo podem ser selecionados ao mesmo tempo.
Gerar modelo de projeto
- Clique em "Procurar código" para navegar pela estrutura e código do projeto on-line
- Clique em "Obter código" para gerar o URL de download do projeto
Depois que o projeto for baixado para o local, após descompactar e importar para o IDE, você poderá desenvolver aplicativos Dubbo personalizados conforme necessário.
2. Serviços de Desenvolvimento
publicar e ligar
Através de um código de exemplo simples do Springboot, ele mostra o lançamento e a invocação do serviço Dubbo
Este artigo demonstrará como construir e implantar rapidamente um aplicativo de microsserviço baseado em amostras Dubbo. Endereço do código: dubbo-samples-develop O código é dividido em três módulos
- API
- provedor de desenvolvimento
- desenvolver-consumidor
Preparar
Este código de exemplo é baseado no Springboot 3.0
1. Primeiro, um centro de registro disponível Zookeeper, Nacos e Redis estão disponíveis.
2. Crie um novo projeto maven e adicione as seguintes dependências
<!-- registry dependency -->
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>${nacos.version}</version>
</dependency>
<!-- dubbo dependency-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
O centro de registro usado neste exemplo é o Nacos. Para usar o ZK, substitua o pacote nacos-client pela versão correspondente do pacote do cliente zk.
publicar serviço
1. Defina a interface de serviço
public interface DevelopService {
String invoke(String param);
}
2. Implementação de interface de serviço
@DubboService(group = "group1",version = "1.0")
public class DevelopProviderServiceV1 implements DevelopService{
@Override
public String invoke(String param) {
StringBuilder s = new StringBuilder();
s.append("ServiceV1 param:").append(param);
return s.toString();
}
}
Usando a anotação @DubboService, Dubbo registrará o serviço correspondente no Spring, chamará o método de exportação de serviço correspondente após o início do Spring e registrará o serviço no centro de registro, para que o consumidor possa descobrir o serviço que publicamos e chamá-lo
3. Adicionar configuração Dubbo
Adicione a configuração relacionada a application.properties ou crie um novo dubbo.properties para salvar a configuração relacionada ao dubbo, o conteúdo é o seguinte:
dubbo.application.name=provider
# Enable token verification for each invocation
dubbo.provider.token=false
# Specify the registry address
# dubbo.registry.address=nacos://localhost:8848?username=nacos&password=nacos
dubbo.registry.address=nacos://${nacos.address:localhost}:8848?username=nacos&password=nacos
dubbo.protocol.name=dubbo
dubbo.protocol.port=20881
4. Inicie o serviço
Para criar uma classe de inicialização Springboot, você precisa adicionar a anotação @EnableDubbo para habilitar a função de configuração automática do Dubbo
@EnableDubbo
@SpringBootApplication
public class DevelopApplication {
public static void main(String[] args) {
SpringApplication.run(DevelopApplication.class, args);
}
}
Após a inicialização bem-sucedida, você poderá ver a lista de serviços correspondente na central de registro, conforme mostrado na figura: ![serviceList](/imgs/v3/develop/develop-service-list.png)
Serviço de chamada
Crie a classe DemoTask e apresente os serviços que precisam ser chamados por meio da anotação @DubboReference. O serviço remoto pode ser chamado como um método local.
//实现CommandLineRunner 让Springboot启动后调用run方法
@Component
public class DemoTask implements CommandLineRunner {
@DubboReference(group = "group1",version = "1.0")
private DevelopService developService;
@Override
public void run(String... args) throws Exception {
//调用DevelopService的group1分组实现
System.out.println("Dubbo Remote Return ======> " + developService.invoke("1"));
}
}
iniciar impressão de serviço
Dubbo Remote Return ======> ServiceV1 param:1
Indica que a chamada de serviço foi bem-sucedida