分布式架构:Dubbo

(1)理论基础

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。

Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

Provider(生产者): 暴露服务的服务提供方。

Consumer(消费者): 调用远程服务的服务消费方。

Registry(注册中心): 服务注册与发现的注册中心。dubbo推荐的是zookeeper。

1. 【解压】

dubbo-admin-develop.zip

2. 【后台配置dubbo-admin-server】

application.properties

注册中心

配置中心

元数据中心

admin.registry.address=zookeeper://127.0.0.1:2181

admin.config-center=zookeeper://127.0.0.1:2181

admin.metadata-report.address=zookeeper://127.0.0.1:2181

4. 【后台运行】

注意:Zookeeper是启动状态

实际项目中部署:Linux系统、Maven把springboot打jar包、java -jar 项目jar包。

6. 【前台dubbo-admin-ui】运行

注意:需要安装好node环境。

npm install

npm run dev

7. 【前台dubbo-admin-ui】访问

http://localhost:38082/

root/root

(2)项目应用

Zookeeper + Dubbo 案例

1.【新建2个springboot项目,对应生产者和消费者、分别为dubbo1和dubbo2】

2.【dubbo1生产者:卖票的服务】

2.1【pom.xml】

<!--        dubbo-->

        <dependency>

            <groupId>org.apache.dubbo</groupId>

            <artifactId>dubbo-spring-boot-starter</artifactId>

            <version>2.7.3</version>

        </dependency>

<!--        zkclient zookeeper客户端-->

        <dependency>

            <groupId>com.github.sgroschupf</groupId>

            <artifactId>zkclient</artifactId>

            <version>0.1</version>

        </dependency>

<!--        导入zookeeper需要的包和插件-->

        <dependency>

            <groupId>org.apache.curator</groupId>

            <artifactId>curator-client</artifactId>

            <version>2.12.0</version>

        </dependency>

        <dependency>

            <groupId>org.apache.curator</groupId>

            <artifactId>curator-recipes</artifactId>

            <version>2.12.0</version>

        </dependency>

        <dependency>

            <groupId>org.apache.zookeeper</groupId>

            <artifactId>zookeeper</artifactId>

            <version>3.5.9</version>

            <exclusions>

                <exclusion>

                    <groupId>org.slf4j</groupId>

                    <artifactId>slf4j-log4j12</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

2.2【application.properties】

# 应用名称

spring.application.name=provider-service

# 应用服务 WEB 访问端口

server.port=8081

#服务应用名称

dubbo.application.name=provider-service

#注册中心地址

dubbo.registry.address=zookeeper://127.0.0.1:2181

#哪些服务要被注册  会扫描这个包下的服务

dubbo.scan.base-packages=com.zhaoyang.service

2.3【接口和实现】

public interface TicketService {

    public String getTicket();

}

import org.apache.dubbo.config.annotation.Service;

import org.springframework.stereotype.Component;

@Component

@Service(version = "1.0.0",timeout = 10000,interfaceClass = TicketService.class)

public class TicketServicelmpl implements TicketService {

    @Override

    public String getTicket() {

        return "大连-->>北京 一等座";

    }

}

3.【dubbo2消费者:卖票的服务】

3.1【application.properties】

# 应用名称

spring.application.name=consumer-service

# 应用服务 WEB 访问端口

server.port=8082

dubbo.application.name=consumer-service

dubbo.registry.address=zookeeper://127.0.0.1:2181

dubbo.protocol.port=20880

3.2【接口和实现】

public interface TicketService {

    public String getTicket();

}

import org.apache.dubbo.config.annotation.Reference;

import org.springframework.stereotype.Service;

@Service

public class UserService {

    //去注册中心拿服务

    @Reference(version = "1.0.0",check = true)

    TicketService tickerService;

    public String buyTicker(){

        String ticket = tickerService.getTicket();

        return "在注册中心拿到:"+ticket;

    }

}

4.【测试】

【开启Zookeeper,开启Dubbo-admin,消费者调用生产者】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容