基于dubbo和zookeeper的微服务实现案例

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: 一、注册中心-zookeeper1.zookeeper         zookeeper可以在分布式项目中承担以下几个功能:                   1)注册中心                   2)存储数据: 分布式锁                   3)观察者模式:做到多个分布式服务器之间的数据同步2.如何搭建zookeeper         要么使用docker搭建,要么使用原生的方式搭建。

一、注册中心-zookeeper
1.zookeeper
         zookeeper可以在分布式项目中承担以下几个功能:

                   1)注册中心

                   2)存储数据: 分布式锁

                   3)观察者模式:做到多个分布式服务器之间的数据同步

2.如何搭建zookeeper
         要么使用docker搭建,要么使用原生的方式搭建。

1)在虚拟机上安装jdk
上传jdk的压缩包到虚拟机的 /usr/local/java文件夹内
解压缩
         tar -zxvf jdk.....tar.gz

配置环境变量
         vim /etc/profile

         复制以下内容到该文件的末尾

        

export JAVA_HOME=/usr/local/java/jdk1.8.0_191

export JRE_HOME=/usr/local/java/jdk1.8.0_191/jre

export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

保存并退出
                   :wq

让配置生效
                   source /etc/profile

        

2)安装Zookeeper
上传压缩包到linux
解压缩

3)获得zoo.cfg配置文件
         在zookeeper/conf文件夹内,修改zoo_sample.cfg中的内容后并重命名成zoo.cfg

4)如何使用zookeeper(做注册中心)
         注意: 要使用linux中的命令,必须两种方式: 要么./zkServer.sh  要么是完整路径:

/usr/local/zookeeper/zookeeper-3.4.14/bin/zkServer.sh

        

如何启动zk
         ./zkServer.sh start

如何查看zk状态
         ./zkServer.sh status

如何关闭zk
         ./zkServer.sh stop

二、使用Dubbo来实现服务间的调用

         相关概念:

                   1) 工程:  包含多个项目的一个统称

      1.创建父工程
      2.在父工程中创建一个接口项目

接口项目取消父依赖

在项目中创建具体的接口

3.在父工程中创建服务的提供者

编写实现类,实现接口,并重写方法,注意要把api的项目依赖进来。

4.在服务提供者项目中使用dubbo

1)创建xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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">

   
   

   
   

   
   

   
   

   
   

2)编写单元测试,引入配置文件,并启动dubbo
注意:前提是要启动zk注册中心

public class TestServiceProvider {

    @Test

    public void testService() throws IOException {

       

        ClassPathXmlApplicationContext context  =

                new ClassPathXmlApplicationContext(new String[]{"classpath:provider.xml"});

        //将服务提交给dubbo的container,然后注册到注册中心上

        context.start();

        System.out.println("商品服务开始提供服务");

        System.out.println("按任意键停止");

        //让服务在收到任意输入内容之前不会结束

        System.in.read();

    }

}

当看到这个结果,就表示服务发布成功

5.创建服务消费者项目
1)引入依赖


  com.alibaba
  dubbo
  2.5.8



  com.github.sgroschupf
  zkclient
  0.1


  com.qf
  my-dubbo-product-api
  1.0.0-SNAPSHOT

2)编写配置文件
<?xml version="1.0" encoding="UTF-8"?>
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       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">

   
   

   
   

   
   

3)在单元测试中去调用service
@Test
public void testInvoke(){

    ClassPathXmlApplicationContext context =
            new ClassPathXmlApplicationContext(new String[]{"classpath:consumer.xml"});

    IProductService productService = (IProductService) context.getBean("productService");

    String s = productService.showProd();
    System.out.println(s);

}

小结:

三、在Springboot项目中使用dubbo
1.方式一: 基于XML的整合方式
1)创建springboot的服务提供者项目
(1)引入依赖


    com.alibaba.boot
    dubbo-spring-boot-starter
    0.2.0

(2)将xml配置文件放进resources中

(3)在springboot的入口类上打上注解:@ImportResource("classpath:provider.xml")

2)创建springboot的服务消费者项目
(1)引入依赖


    com.alibaba.boot
    dubbo-spring-boot-starter
    0.2.0

(2)将xml配置文件放进resources中

(3)在springboot的入口类上打上注解:@ImportResource("classpath:consumer.xml")

(4)使用autowired将接口的实现类的对象自动注入进来,相当于是通过dubbo(zk)来提供服务的提供者的类。

@SpringBootTest
class MySpringBootProductConsumerApplicationTests {

    @Autowired
    private IProductService productService;

    @Test
    void contextLoads() {

        System.out.println(productService.showProduct());

    }

}

2.方式二:基于注解的整合方式

1)创建服务提供者项目
(1)引入依赖

(2)编写application.yml文件,加入以下配置(本来在xml中的配置将写在yml中)

server:
  port: 8081
dubbo:
  application:
    name: product-service-provider
  registry:
    address: zookeeper://10.31.163.100:2181
  protocol:
    port: 20884

(3)编写服务提供者类并实现接口,并在接口上打上注解:

         @Component

         @Service <==import com.alibaba.dubbo.config.annotation.Service;

(4)在入口类上打上注解

         @EnableDubbo

2)创建服务消费者项目
(1)引入依赖

(2)编写application.yml文件,加入以下配置(本来在xml中的配置将写在yml中)

server:
  port: 8082
dubbo:
  application:
    name: product-consumer
  registry:
    address: zookeeper://10.31.163.100:2181

(3)在需要用到服务提供者类的时候,使用@Reference注解

来自于com.alibaba.dubbo.config.annotation.Reference;
@SpringBootTest
class MySpringBootAnnotationProductConsumerApplicationTests {

    @Reference
    private IProductService productService;

    @Test
    void contextLoads() {

        System.out.println(productService.showProduct());

    }

}

(4)在入口类上打上注解

         @EnableDubbo

相关文章
|
3月前
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
|
11月前
|
Dubbo Java 应用服务中间件
Spring Cloud Dubbo:微服务通信的高效解决方案
【10月更文挑战第15天】随着信息技术的发展,微服务架构成为企业应用开发的主流。Spring Cloud Dubbo结合了Dubbo的高性能RPC和Spring Cloud的生态系统,提供高效、稳定的微服务通信解决方案。它支持多种通信协议,具备服务注册与发现、负载均衡及容错机制,简化了服务调用的复杂性,使开发者能更专注于业务逻辑的实现。
201 2
|
12月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2
|
6月前
|
Dubbo 应用服务中间件 Apache
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
Star 4w+,Apache Dubbo 3.3 全新发布,Triple X 领衔,开启微服务通信新时代
|
10月前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
287 2
|
11月前
|
存储 负载均衡 监控
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
这篇文章是关于Apache Dubbo框架与Zookeeper的关系,以及如何下载、安装和启动Zookeeper的教程,包括解决启动过程中可能遇到的报错问题。
378 3
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
|
10月前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
334 4
|
11月前
|
Dubbo 应用服务中间件 Apache
Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
如果 Dubbo 应用使用 ZooKeeper 作为注册中心,现在需要切换到新的 ZooKeeper 实例,如何做到流量无损?
123 4
|
11月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
11月前
|
监控 Dubbo Java
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。
这篇文章详细介绍了如何将Spring Boot与Dubbo和Zookeeper整合,并通过Dubbo管理界面监控服务注册情况。
731 0
dubbo学习三:springboot整合dubbo+zookeeper,并使用dubbo管理界面监控服务是否注册到zookeeper上。

相关产品

  • 微服务引擎