DUBBO+Zookeeper

前提:
Zookeeper服务都已开启
可以同时开启Dubbo-admin

提供者提供服务:

  • 1、导入依赖
  • 2、 配置注册中心的地址,以及服务发现名,和要扫描的包
  • 3、在想要被注册的服务上面,增加一个注解@Service(Dubbo包下)

消费者进行消费:

  • 1、导入依赖
  • 2、配置注册中心的地址,以及服务器发现名
  • 3、从远程注入服务 使用@Reference 而不是 @Autowired
  • Tips:这里@Reference注入和注入Service思路一样,但是要注意的是本地一定要创建和提供端同样的接口名,
  • 例如:提供的叫TestService,消费的就要@Reference TestService 变量名;

DEMO

消费端、提供端依赖

  <dependency>
            <groupId>org.apache.dubbo</groupId>
            <artifactId>dubbo-spring-boot-starter</artifactId>
            <version>2.7.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.10</version>
        </dependency>
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.5</version>
        </dependency>
        <dependency>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
            <version>4.1.32.Final</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>2.8.0</version>
        </dependency>

提供端配置

# 服务应用名字
dubbo:
  application:
    name: provider.server
  # 注册中心地址
  registry:
    address: zookeeper://127.0.0.1:2181
  # 扫描哪些服务需要被注册
  scan:
    base-packages: com.bw.demo.service

提供端接口

//Zookeeper服务注册与发现
//这里为了区别@Service尽量使用@Component
//如果非要用@Service,请看清,使用Dubbo的@Servcice
@Component
public class TestService {

    public String getTicket(){
        return "returnSomething";
    }
}

消费端配置

#消费者去哪里拿服务,需要暴露自己的名字
dubbo.application.name=consumer-server
#注册中心(拿取位置)的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181

消费端调用

@Service //消费者要在Service中选用Spring的@Service
public class Ticketconsumer {
    //想拿到票
    @Reference//使用Dubbo的引用,pom坐标,可以自定义路径相同的接口名(跟生产者)
    TicketService ticketService;

    public void buyTickect(){
        String ticket = ticketService.getTicket();
        System.out.println("获得票据:"+ticket);
    }
}

迈向分布式

总结一下需要解决的四个核心分布式问题:

1、API网关 =》 服务路由
2、HTTP、RPC框架 =》 异步调用
3、服务注册与发现 =》 高可用
4、熔断机制 =》 服务降级

原因:

网络是不可靠的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值