dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

结合本公司的开发也是用的dubbo这款优秀的框架,加上 最近工作重心的。所以对于dubbo的学习已经是迫在眉睫了。

在中秋假期,抽空实战了一把基于spring boot +dubbo+zookeeper 。其中也遇到了 很多的坑。

在这里记录一下。

我们看下dubbo的官网。http://dubbo.apache.org/en-us/ 。这里不在做赘述。

我们开始上手去实战一个初步的demo。用实战的角度去学习他。

在官网上也给我们了例子。

我们按照官网去实现它

首先 我们去搭建zookeeper。之所以选择zookeeper 我感觉还是资料多吧。

我们去下载zookeeper 然后启动就可以。

我这里用的是服务模式启动的。所以我在项目中用的 是3000的端口

我们去常见一个通用的api

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication
public class DemoApplication { public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
} }

  配置文件

spring:
application:
name: interface

  我们去创建provider

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.8.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.studay.leizi</groupId>
<artifactId>leiziuser-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>leiziuser-server</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies> <!-- Spring Boot dependencies -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency> <dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency> <!-- Zookeeper dependencies -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.4</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.1.0.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

  实现方法

package com.studay.leizi.leiziuserserver.imp;

import com.alibaba.dubbo.config.annotation.Service;
import com.example.demo.service.DemoService;
import org.springframework.beans.factory.annotation.Value; @Service
public class DefaultDemoService implements DemoService { @Value("dubbo-auto-configuration-provider-demo")
private String serviceName; public String sayHello(String name) {
return String.format("Hello, %s", name);
}
}

  application.yml配置

spring:
application:
name: dubbo-registry-zookeeper-consumer-sample
dubbo:
registry:
address: zookeeper://127.0.0.1:3000
protocol: zookeeper
id: my-registry
protocol:
name: dubbo
port: 12345
id: dubbo
status: server
application:
id: cusss
name: cusss
scan:
basePackages: com.studay.leizi.leiziuserserver
server:
port: 8081

  这个时候我们去启动。

启动成功,我们去创建服务消费方

package com.styday.leiziapi.connec;

import com.alibaba.dubbo.config.annotation.Reference;
import com.alibaba.dubbo.config.annotation.Service;
import com.example.demo.service.DemoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; @Service
@Component
public class Demoe implements DemoService {
@Reference
DemoService demoService; @Override
public String sayHello(String name) {
return demoService.sayHello(name);
}
}

  

为了方便我们查看调用是否成功,我们编写controller

package com.styday.leiziapi.connter;

import com.styday.leiziapi.connec.Demoe;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; @RestController("/home")
public class Consned {
@Autowired
Demoe demoe; @GetMapping("/getPayInfo")
public String say(@RequestParam("name") String name) {
return demoe.sayHello(name);
}
}
application.yml配置
spring:
application:
name: consumer
dubbo:
registry:
address: zookeeper://127.0.0.1:3000
protocol:
name: dubbo
port: 2081
id: dubbo
application:
id: cusss
name: cusss
scan:
basePackages: com.styday.leiziapi.connec.Demoe
server:
port: 9999

  启动完毕后, 启动。

我们可以用dubbo管理后台,去看服务的注册。下载地址 https://github.com/apache/dubbo/tree/2.5.x、

mvn clean package -Dmaven.test.skip=true

然后 放在Tomcat启动。

配置下

webapps\dubbo-admin-2.6.0\WEB-INF\dubbo.properties

然后启动后登陆就可以

这样就可以在管理后台查看我们的服务了。

spring boot +dubbo+zookeeper的更多相关文章

  1. Spring boot dubbo+zookeeper 搭建------基于gradle项目的消费端与服务端分离实战

    1. Dubbo简介 Dubbo是Alibaba开源的分布式框架,是RPC模式的一种成熟的框架,优点是可以与Spring无缝集成,应用到我们的后台程序中.具体介绍可以查看Dubbo官网. 2. Why ...

  2. Spring Boot Dubbo applications.properties 配置清单

    摘要: 原创出处 www.bysocket.com 「泥瓦匠BYSocket 」欢迎转载,保留摘要,谢谢! 『 与其纠结,不如行动学习.Innovate ,And out execute ! 』 本文 ...

  3. spring boot 集成 zookeeper 搭建微服务架构

    PRC原理 RPC 远程过程调用(Remote Procedure Call) 一般用来实现部署在不同机器上的系统之间的方法调用,使得程序能够像访问本地系统资源一样,通过网络传输去访问远程系统资源,R ...

  4. spring boot +dubbo 踩坑记录

    今天初次搭建spring boot +duboo的demo.记录一下踩坑记录. 首先搭建3个小demo,一个maven项目,两个spring boot (服务提供者和服务消费者)项目. 两 sprin ...

  5. Spring Boot + Dubbo 可运行的例子源码-实现服务注册和远程调用

    最近公司的一个分布式系统想要尝试迁移到Dubbo,项目本身是Spring Boot的,经过一些努力,最终也算是搭建起一个基础的框架了,放到这里记录一下.需要依赖一个外部的zookeeper. 源码地址 ...

  6. spring boot + dubbo 服务部署实例

    项目github:https://github.com/nalidou/spring-dubbo 1. 公共组件:dubbo-component 提供了接口定义.实体类等,其他项目可以直接导入jar包 ...

  7. Spring Boot Dubbo 构建分布式服务

    概述: 节点角色说明 节点 角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数 ...

  8. Spring Boot Dubbo Dubbok spring cloud

    比较spring cloud和dubbo,各自的优缺点是什么 - 趁年轻再疯狂一次吧 - CSDN博客 https://blog.csdn.net/u010664947/article/details ...

  9. java/spring boot/dubbo/spring cloud/微服务/SOA/分布式经典电子书籍pdf下载

    微服务系列 官方文档是最好的资料了. spring cloud官方文档:https://cloud.spring.io/spring-cloud-static/Greenwich.RELEASE/si ...

随机推荐

  1. Matlab迭代器模式

    迭代器(Iterator)模式,又叫做游标(Cursor)模式.提供一种方法访问一个容器(container)或者聚集(Aggregator)对象中各个元素,而又不需暴露该对象的内部细节.在采用不同的 ...

  2. JavaScript实现网页回到顶部效果

    在浏览网页时,当我们浏览到网页底部,想要立刻回到网页顶部时,这时候一般网页会提供一个回到顶部的按钮来提升用户体验,以下代码实现了该功能 HTML代码: <p id="back-top& ...

  3. springcloud中gateway的实际应用

    之前我一直用的是Zuul网关,用过gateway以后感觉比Zuul功能还是强大很多. Spring Cloud Gateway是基于Spring5.0,Spring Boot2.0和Project R ...

  4. 关于服务器程序运行中收到SIGPIPE(转)

    (此文为原文删减版,原文地址:http://blog.sina.com.cn/s/blog_502d765f0100kopn.html) 我写了一个服务器程序,在Linux下测试,然后用C++写了客户 ...

  5. CNN原理

    卷积神经网络(Convolutional Neural Network)的结构类似于神经网络,可以看做是对其的改进.它利用局部连接.权值共享.多核卷积.池化四个手段大大降低了参数的数目,使得网络的层数 ...

  6. scrapy随机切换user-agent

    使用github的 scrapy-fake-useragent 不用自己改源码继承自带的userAgent中间件  只需要安装后增加配置即可 https://github.com/alecxe/scr ...

  7. xml和json的判断格式是否相等

    手动撸了个 xml 和 json 格式匹配的代码. /** * 判断数据的结构.遍历节点然后去对应的json那边查找是否存在这样的节点 * * @param root 配置的xml所对应的对Eleme ...

  8. CentOS7安装VNC

    #安装 yum -y install tigervnc-server 将配置表复制到etc .service 修改配置文件 vim /etc/systemd/system/vncserver@\:.s ...

  9. php操作mysql,1分钟内插入百万数据

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_33862644/article/d ...

  10. 如何查看自己steam库里游戏是哪个区的

    1 开启Steam开发者模式,切换到控制台,以便调出游戏区域数据 1.1 首先找到Steam的快捷方式,在目标一行中最后输入 -dev (前面带空格),然后重新运行. 1.2 如下图上方标签切换到控制 ...