spring cloud alibaba学习(一)–Dubbo

spring cloud alibaba学习(一)–Dubbo

Dubbo spring cloud 是基于 阿里开源的 dubbo 技术栈,按照spring cloud 规范实现的一套微服务治理技术框架,和 spring cloud (基于 netfix 开源的一些技术栈)类似

功能spring cloudspring cloud alibaba
分布式配置(Distributed configuration)Git、Zookeeper、Consul、JDBCSpring Cloud 分布式配置 + Dubbo 配置中心
服务注册与发现(Service registration and discovery)Eureka、Zookeeper、ConsulSpring Cloud 原生注册中心 + Dubbo 原生注册中心(Nocas,zookeeper…)
负载均衡(Load balancing)Ribbon(随机、轮询等算法)Dubbo 内建实现(随机、轮询等算法 + 权重等特性)
服务熔断(Circuit Breakers)Spring Cloud HystrixSpring Cloud Hystrix + Alibaba Sentinel 等
服务调用(Service-to-service calls)Open Feign、RestTemplateSpring Cloud 服务调用 + Dubbo @Reference
链路跟踪(Tracing)Spring Cloud Sleuth + ZipkinZipkin、opentracing 等

dubbo 初探

为什么要用dubbo

  • 服务治理框架
  • 服务的监控
  • 服务的注册发现
  • 服务的通信
  • 服务的容错
  • 服务的负载均衡

本章节先来简单学习下dubbo的使用,

https://dubbo.apache.org/ 参考官网

服务提供者

  • 引入dubbo pom依赖

     <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.7.8</version>
            </dependency>
    
  • application.xml 配置暴露服务

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
        <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="dubbo-server"  />
    
        <!-- 使用multicast广播注册中心暴露服务地址 -->
        <dubbo:registry address="N/A" />
    
        <!-- 用dubbo协议在20880端口暴露服务 -->
        <dubbo:protocol name="dubbo" port="20880" />
    
        <!-- 声明需要暴露的服务接口 -->
        <dubbo:service interface="com.lujia.lesson.dubbo.ILoginService" ref="loginService" />
    
        <!-- 和本地bean一样实现服务 -->
        <bean id="loginService" class="com.lujia.lesson.dubbo.LoginServiceImpl" />
    </beans>
    
  • 启动

    public class App 
    {
        public static void main( String[] args ) {
    
            Main.main(args);
    
        }
    }
    

在这里插入图片描述

服务消费者

  • application.xml配置

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
           xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd        http://dubbo.apache.org/schema/dubbo        http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
    
        <!-- 提供方应用信息,用于计算依赖关系 -->
        <dubbo:application name="dubbo-client"  />
    
        <!-- 使用multicast广播注册中心暴露服务地址 -->
        <dubbo:registry address="N/A" />
    
    
        <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
        <dubbo:reference id="loginService" interface="com.lujia.lesson.dubbo.ILoginService" url="dubbo://192.168.56.1:20880/com.lujia.lesson.dubbo.ILoginService" />
    </beans>
    
  • 启动

    public class App 
    {
        public static void main( String[] args ) {
    
    
            ApplicationContext
                     applicationContext=new ClassPathXmlApplicationContext("classpath:/META-INF/spring/application.xml");
            ILoginService loginService=(ILoginService)applicationContext.getBean("loginService");
    
            System.out.println( loginService.login("admin","123456") );
        }
    }
    //控制台打印 : success
    

以上是一个简单的dubbo服务Rpc调用的列子,其中并未使用注册中心,手动配置服务地址的方式,如果暴露很多个服务的情况下,这样配置非常麻烦,所以有了注册中心,所有服务的地址都从注册中心拉取

加入注册中心

  • 这里使用zookeeper,下载一个zookeeper 的docker images 运行

    docker pull zookeeper
    docker run -e "ZOO_INIT_LIMIT=10" -p2181:2181  --name some-zookeeper --restart always -d zookeeper
    
  • 修改 注册中心地址

    <dubbo:registry address="zookeeper://172.16.1.212:2181" timeout="10000"/>
    

使用nacos 注册中心

  • 下载nacos docker images

    docker pull nacos/nacos-server
    git clone --depth 1 https://github.com/nacos-group/nacos-docker.git
    cd nacos-docker
    // 用mysql 版本的启动
    docker-compose -f example/standalone-mysql-5.7.yaml up
    
  • 访问 8848 端口即可

  • 添加pom依赖

            <!-- Keep latest Nacos client version -->
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>1.2.1</version>
            </dependency>
    
  • 修改配置中心地址

    <!-- 使用multicast广播注册中心暴露服务地址 -->
        <dubbo:registry address="nacos://172.16.1.212:8848" timeout="10000"/>
    

spring boot 整合dubbo

服务提供者
  • 配置文件

    spring.application.name=dubbo-spring-boot-provider
    dubbo.protocol.name=dubbo
    dubbo.protocol.port=20880
    dubbo.registry.address=nacos://172.16.1.212:8848
    
  • pom依赖

        <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
            <!-- Dubbo Spring Boot Starter -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo-spring-boot-starter</artifactId>
                <version>2.7.8</version>
            </dependency>
    
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>2.7.8</version>
            </dependency>
             <!-- Dubbo Registry Nacos -->
            <dependency>
                <groupId>com.alibaba.nacos</groupId>
                <artifactId>nacos-client</artifactId>
                <version>1.2.1</version>
            </dependency>
    
    
  • serivce 使用@DubboService 注解标记即可

    @DubboService
    public class LoginServiceImpl implements ILoginService {
        @Override
        public String login(String userName, String password) {
            return "success";
        }
    }
    
    
服务消费者
  • 配置文件

    server.port=8080
    spring.application.name=dubbo-spring-boot-consumer
    dubbo.registry.address=nacos://172.16.1.212:8848
    
    
  • pom 依赖 同上

  • 使用 @DubboReference 注解即可

     @DubboReference()
        private ILoginService loginService;
    

demo 代码地址 : https://github.com/Rfruelu/dubbo-spring-cloud-demo.git

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值