iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Springboot如何整合Dubbo/ZooKeeper实现SOA案例
  • 337
分享到

Springboot如何整合Dubbo/ZooKeeper实现SOA案例

springbootdubbosoa 2023-05-30 21:05:50 337人浏览 独家记忆
摘要

这篇文章给大家分享的是有关SpringBoot如何整合dubbo/ZooKeeper实现SOA案例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、为啥整合 Dubbo 实现 SOADubbo 不单单只是高性能的

这篇文章给大家分享的是有关SpringBoot如何整合dubbo/ZooKeeper实现SOA案例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

一、为啥整合 Dubbo 实现 SOA

Dubbo 不单单只是高性能的 rpc 调用框架,更是 SOA 服务治理的一种方案。

核心:

远程通信,向本地调用一样调用远程方法。

集群容错

服务自动发现和注册,可平滑添加或者删除服务提供者。

我们常常使用 springboot 暴露 Http 服务,并走 JSON 模式。但慢慢量大了,一种 SOA 的治理方案。这样可以暴露出 Dubbo 服务接口,提供给 Dubbo 消费者进行 RPC 调用。下面我们详解下如何集成 Dubbo。

二、运行 springboot-dubbo-server 和 springboot-dubbo-client 工程

运行环境:jdk 7 或 8,Maven 3.0+

技术栈:SpringBoot 1.5+、Dubbo 2.5+、ZooKeeper 3.3+

1.ZooKeeper 服务注册中心

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

下载 ZooKeeper ,地址 http://www.apache.org/dyn/closer.cgi/zookeeper

解压 ZooKeeper

tar zxvf zookeeper-3.4.8.tar.gz

在 conf 目录新建 zoo.cfg ,照着该目录的 zoo_sample.cfg 配置如下。

cd zookeeper-3.3.6/confvim zoo.cfg

zoo.cfg 代码如下(自己指定 log 文件目录):

tickTime=2000dataDir=/javaee/zookeeper/data dataLogDir=/javaee/zookeeper/loGClientPort=2181

在 bin 目录下,启动 ZooKeeper:

cd zookeeper-3.3.6/bin./zkServer.sh start

2. git clone 下载工程 springboot-learning-example

项目地址见 GitHub - https://github.com/JeffLi1993/springboot-learning-example:

git clone git@github.com:JeffLi1993/springboot-learning-example.git

然后,Maven 编译安装这个工程:

cd springboot-learning-examplemvn clean install

3.运行 springboot-dubbo-server Dubbo 服务提供者工程

右键运行 springboot-dubbo-server 工程 ServerApplication 应用启动类的 main 函数。Console 中出现如下表示项目启动成功。这里表示 Dubbo 服务已经启动成功,并注册到 ZK (ZooKeeper)中。

4.运行 springboot-dubbo-client Dubbo 服务消费者工程

右键运行 springboot-dubbo-client 工程 ClientApplication 应用启动类的 main 函数。Console 中出现如下:

...2017-03-01 16:31:38.473 INFO 9896 --- [      main] o.s.j.e.a.AnnotationMBeanExporter    : ReGIStering beans for JMX exposure on startup2017-03-01 16:31:38.538 INFO 9896 --- [      main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8081 (http)2017-03-01 16:31:38.547 INFO 9896 --- [      main] org.spring.springboot.ClientApplication : Started ClientApplication in 6.055 seconds (JVM running for 7.026)City{id=1, provinceId=2, cityName='温岭', description='是我的故乡'}

最后打印的城市信息,就是通过 Dubbo 服务接口调用获取的。顺利运行成功,下面详解下各个代码及配置。

三、springboot-dubbo-server 和 springboot-dubbo-client 工程配置详解

代码都在 GitHub 上, https://github.com/JeffLi1993/springboot-learning-example。

1.详解 springboot-dubbo-server Dubbo 服务提供者工程

springboot-dubbo-server 工程目录结构

├── pom.xml└── src  └── main    ├── java    │  └── org    │    └── spring    │      └── springboot    │        ├── ServerApplication.java    │        ├── domain    │        │  └── City.java    │        └── dubbo    │          ├── CityDubboService.java    │          └── impl    │            └── CityDubboServiceImpl.java    └── resources      └── application.properties

a.pom.xml 配置

pom.xml 中依赖了 spring-boot-starter-dubbo 工程,该项目地址是 https://github.com/teaey/spring-boot-starter-dubbo。

pom.xml 配置如下

4.0.0  springboot  springboot-dubbo-server  0.0.1-SNAPSHOT  springboot-dubbo 服务端:: 整合 Dubbo/ZooKeeper 详解 SOA 案例        org.springframework.boot    spring-boot-starter-parent    1.5.1.RELEASE        1.0.0                  io.dubbo.springboot      spring-boot-starter-dubbo      ${dubbo-spring-boot}                  org.springframework.boot      spring-boot-starter-WEB                  org.springframework.boot      spring-boot-starter-test      test                  junit      junit      4.12

b.application.properties 配置

## Dubbo 服务提供者配置spring.dubbo.application.name=providerspring.dubbo.registry.address=zookeeper://127.0.0.1:2181spring.dubbo.protocol.name=dubbospring.dubbo.protocol.port=20880spring.dubbo.scan=org.spring.springboot.dubbo

这里 ZK 配置的地址和端口,就是上面本机搭建的 ZK 。如果有自己的 ZK 可以修改下面的配置。配置解释如下:

spring.dubbo.application.name 应用名称spring.dubbo.registry.address 注册中心地址spring.dubbo.protocol.name 协议名称spring.dubbo.protocol.port 协议端口spring.dubbo.scan dubbo 服务类包目录c.CityDubboServiceImpl.java 城市业务 Dubbo 服务层实现层类// 注册为 Dubbo 服务@Service(version = "1.0.0")public class CityDubboServiceImpl implements CityDubboService {  public City findCityByName(String cityName) {    return new City(1L,2L,"温岭","是我的故乡");  }}@Service 注解标识为 Dubbo 服务,并通过 version 指定了版本号。

d.City.java 城市实体类

实体类通过 Dubbo 服务之间 RPC 调用,则需要实现序列化接口。最好指定下 serialVersionUID 值。

2.详解 springboot-dubbo-client Dubbo 服务消费者工程

springboot-dubbo-client 工程目录结构├── pom.xml└── src  └── main    ├── java    │  └── org    │    └── spring    │      └── springboot    │        ├── ClientApplication.java    │        ├── domain    │        │  └── City.java    │        └── dubbo    │          ├── CityDubboConsumerService.java    │          └── CityDubboService.java    └── resources      └── application.properties

pom.xml 、 CityDubboService.java、City.java 没有改动。Dubbo 消费者通过引入接口实现 Dubbo 接口的调用。

a.application.properties 配置

## 避免和 server 工程端口冲突server.port=8081## Dubbo 服务消费者配置spring.dubbo.application.name=consumerspring.dubbo.registry.address=zookeeper://127.0.0.1:2181spring.dubbo.scan=org.spring.springboot.dubbo

因为 springboot-dubbo-server 工程启动占用了 8080 端口,所以这边设置端口为 8081。

b.CityDubboConsumerService.java 城市 Dubbo 服务消费者

@Componentpublic class CityDubboConsumerService {  @Reference(version = "1.0.0")  CityDubboService cityDubboService;  public void printCity() {    String cityName="温岭";    City city = cityDubboService.findCityByName(cityName);    System.out.println(city.toString());  }}

@Reference(version = “1.0.0”) 通过该注解,订阅该接口版本为 1.0.0 的 Dubbo 服务。

这里将 CityDubboConsumerService 注入 Spring 容器,是为了更方便的获取该 Bean,然后验证这个 Dubbo 调用是否成功。

c.ClientApplication.java 客户端启动类

@SpringBootApplicationpublic class ClientApplication {  public static void main(String[] args) {    // 程序启动入口    // 启动嵌入式的 Tomcat 并初始化 Spring 环境及其各 Spring 组件    ConfigurableApplicationContext run = SpringApplication.run(ClientApplication.class, args);    CityDubboConsumerService cityService = run.getBean(CityDubboConsumerService.class);    cityService.printCity();  }}

解释下这段逻辑,就是启动后从 Bean 容器中获取城市 Dubbo 服务消费者 Bean。然后调用该 Bean 方法去验证 Dubbo 调用是否成功。

springboot是什么

springboot一种全新的编程规范,其设计目的是用来简化新Spring应用的初始搭建以及开发过程,SpringBoot也是一个服务于框架的框架,服务范围是简化配置文件。

感谢各位的阅读!关于“Springboot如何整合Dubbo/ZooKeeper实现SOA案例”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: Springboot如何整合Dubbo/ZooKeeper实现SOA案例

本文链接: https://www.lsjlt.com/news/221433.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Springboot如何整合Dubbo/ZooKeeper实现SOA案例
    这篇文章给大家分享的是有关Springboot如何整合Dubbo/ZooKeeper实现SOA案例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、为啥整合 Dubbo 实现 SOADubbo 不单单只是高性能的...
    99+
    2023-05-30
    springboot dubbo soa
  • IDEA整合Dubbo+Zookeeper+SpringBoot实现
    目录1. 提出需求2. 环境准备3. 业务接口整合4. 服务提供者5. 服务消费者6. 测试7. 最后附上另外两种配置文件整合方式7.1 XML整合配置文件7.2 配置类整合本文主要...
    99+
    2024-04-02
  • SpringBoot中如何整合Dubbo zookeeper
    本篇内容介绍了“SpringBoot中如何整合Dubbo zookeeper”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!docker pu...
    99+
    2023-06-08
  • springboot 整合 dubbo 的实现组聚合详情
    目录消费者自定义聚合策略如何自定义 dubbo 聚合策略?提供者接口及其实现表结构及数据消费者 yml 文件配置: dubbo: application: name: d...
    99+
    2024-04-02
  • springBoot+dubbo+zookeeper如何实现分布式开发应用
    小编给大家分享一下springBoot+dubbo+zookeeper如何实现分布式开发应用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!环境搭建项目结构图:1.我们首先做好服务端pom.xml  &n...
    99+
    2023-06-29
  • Springboot整合zookeeper实现对节点的创建、监听与判断的案例详解
    目录Springboot整合zookeeper教程1.环境准备2.代码编写2.1.在pom.xml文件中增加zookeeper依赖(记得跟自己的zookeeper版本对应)2.2.A...
    99+
    2024-04-02
  • 使用spring-boot如何实现整合dubbo中的Spring-boot-dubbo-starter
    使用spring-boot如何实现整合dubbo中的Spring-boot-dubbo-starter?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在application.p...
    99+
    2023-05-31
    springboot art dubbo
  • springboot整合Dubbo与Feign的实现 (无注册中心)
    目录一,SpringBoot 整合 Dubbo1.1 服务提供者1.1.1 核心依赖1.1.2 核心配置1.1.3 服务提供者代码结构1.1.4 服务提供者暴露的API(DubboD...
    99+
    2024-04-02
  • Springboot整合FreeMarker的实现示例
    目录一、项目搭建1、新建模块2、导入依赖 :将不相关的依赖删掉3、新建软件包,放入student实体类4、新建StudentMapper接口5、Springboot04Applica...
    99+
    2024-04-02
  • SpringBoot整合Pulsar的实现示例
    目录一、添加pom.xml依赖二、Pulsar 参数类三、Pulsar 配置类四、不同消费数据类型的监听器五、Pulsar的核心服务类六、Pulsar整合Spring Cloud一、...
    99+
    2024-04-02
  • springboot 整合 clickhouse的实现示例
    目录前言前置准备使用jdbc方式操作clickhouse与springboot的整合代码完整整合步骤前言 了解了clickhouse的基础概念和相关的理论之后,本篇将通过实例代码演示...
    99+
    2024-04-02
  • SpringBoot整合Dubbo框架,实现RPC服务远程调用
    目录一、Dubbo框架简介  1、框架依赖 二、与SpringBoot2.0整合  1、核心依赖2、项目结构说明3、核心配置 三、演示案例  1、服务远...
    99+
    2024-04-02
  • SpringBoot整合JWT的实现示例
    目录一. JWT简介二. Java实现JWT(SpringBoot方式整合)JWT总结一. JWT简介 1. 什么是JWT? JWT(JSON Web Token)是为了在...
    99+
    2024-04-02
  • SpringBoot整合WebService的实现示例
    目录SpringBoot搭建WebService程序一、定义规范接口二、搭建WebService服务端三、搭建WebService客户端WebService是一种传统的SOA技术架构...
    99+
    2024-04-02
  • SpringBoot整合Redis的实现示例
    目录1.需求说明2.整合实现2.1.创建Springboot工程2.2.redis配置3.编写测试类4.注意事项和细节1.需求说明 在 springboot 中 , 整合 redis...
    99+
    2023-01-28
    SpringBoot整合Redis SpringBoot Redis整合
  • springboot 整合canal实现示例解析
    目录前言环境准备一、快速搭建canal服务搭建步骤1、服务器使用docker快速安装一个mysql并开启binlog日志2、上传canal安装包并解压3、进入到第二步解压后的文件目录...
    99+
    2024-04-02
  • springboot整合websocket如何实现群聊
    这篇文章将为大家详细讲解有关springboot整合websocket如何实现群聊,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现思路发送者向服务器发送大家早上好。其它客户端可以收到对应消息。项目展示通...
    99+
    2023-06-15
  • springboot整合spring-retry的实现示例
    目录1、背景2、解决方案2.1 pom文件2.2 applicat启动类2.3 controller类2.4 service测试类(重点)2.5 项目启动2.6 使用swagger进...
    99+
    2024-04-02
  • SpringBoot整合Security实现权限控制框架(案例详解)
    目录一、前言二、环境准备2.1、数据库表2.2、导入依赖2.3、配置文件2.4、WebSecurityConfig Security的主要配置类:2.5、Security身份验证2....
    99+
    2024-04-02
  • SpringBoot整合mysql、postgres、sqlserver实现多数据源配置案例
            分享一下近期处理的一个小demo,关于配置多数据源实现不同服务之间的数据推送和数据治理。第一次接触到pg库和sqlserver一头雾水,选择了JDBC+mybatis-plus的方式去链接。 首先要引入以下依赖 org.sp...
    99+
    2023-10-07
    java mybatis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作