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

然后启动后登陆就可以

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

最新文章

  1. PowerDesigner 将CDM、PDM导出为图片
  2. [转] c#中 多线程访问winform控件
  3. Text Kit入门
  4. Google Map API 学习四
  5. discuz 7.2 faq.php sql注入了一些研究
  6. Excel教程(9) - 信息函数
  7. Xamarin.Android 绑定友盟社会化分享组件
  8. 第六节 etc/passwd 、etc/shadow 、 useradd 、 groupadd
  9. Visual Studio 2017 Key 激活码
  10. com.android.jack.CommandLine: Internal compiler error
  11. 读《javascript语法精粹》知识点总结
  12. python自动化运维os语法
  13. [UE4]场景截图
  14. 系列:这一件月薪30K+的事,我们一起来撮合一下 3
  15. vue入门:axios的应用及拦截封装
  16. iframe-metamask
  17. 严版数据结构题集2.13 &amp; 2.14
  18. 常用C库函数功能及用法
  19. spring考试
  20. JDA 8.0.0.0小版本升级

热门文章

  1. Laravel 5.5 发布,ThinkSNS+ 升级及状况分享
  2. 对于flex布局的使用心得
  3. Java 之 Response 发送验证码案例
  4. Python 多线程爬取站酷(zcool.com.cn)图片
  5. Python入门篇-数据结构树(tree)篇
  6. jupyter notebook中导入其他ipynb文件中的代码
  7. 两个好的k8s周边项目,mark
  8. 大数据JavaWeb之java基础巩固----Junit&amp;反射&amp;注解
  9. hive 初始化数据库报错
  10. wordpress调用缩略图/特色图url