spring-boot整合Dubbo分布式架构案例

简介: 1.运行环境开发工具:intellij ideaJDK版本:1.8项目管理工具:Maven 3.2.52.项目文件目录3.Maven Plugin管理总项目 pom.xml配置代码: 1 2 5 4.

1.运行环境

开发工具:intellij idea

JDK版本:1.8

项目管理工具:Maven 3.2.5

2.项目文件目录

3.Maven Plugin管理

总项目 pom.xml配置代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6 
 7     <groupId>spring-boot-dubbo</groupId>
 8     <artifactId>spring-boot-dubbo</artifactId>
 9     <packaging>pom</packaging>
10     <version>1.0-SNAPSHOT</version>
11     <modules>
12         <module>spring-boot-dubbo-api</module>
13         <module>spring-boot-dubbo-provider</module>
14         <module>spring-boot-dubbo-consumer</module>
15     </modules>
16 
17     <parent>
18         <groupId>org.springframework.boot</groupId>
19         <artifactId>spring-boot-starter-parent</artifactId>
20         <version>1.5.6.RELEASE</version>
21     </parent>
22 
23     <properties>
24         <java.version>1.7</java.version>
25         <springboot.version>1.5.6.RELEASE</springboot.version>
26     </properties>
27 
28     <dependencies>
29         <!-- Spring Boot web依赖 -->
30         <dependency>
31             <groupId>org.springframework.boot</groupId>
32             <artifactId>spring-boot-starter-web</artifactId>
33         </dependency>
34         <!-- Spring Boot test依赖 -->
35         <dependency>
36             <groupId>org.springframework.boot</groupId>
37             <artifactId>spring-boot-starter-test</artifactId>
38             <scope>test</scope>
39         </dependency>
40         <!-- Spring Boot dubbo依赖 -->
41         <dependency>
42             <groupId>io.dubbo.springboot</groupId>
43             <artifactId>spring-boot-starter-dubbo</artifactId>
44             <version>1.0.0</version>
45         </dependency>
46     </dependencies>
47 
48 </project>
View Code

provider pom.xml配置代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>spring-boot-dubbo</artifactId>
 7         <groupId>spring-boot-dubbo</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9         <relativePath>../pom.xml</relativePath>
10     </parent>
11     <modelVersion>4.0.0</modelVersion>
12 
13     <artifactId>spring-boot-dubbo-provider</artifactId>
14 
15     <dependencies>
16         <dependency>
17             <groupId>spring-boot-dubbo</groupId>
18             <artifactId>spring-boot-dubbo-api</artifactId>
19             <version>1.0-SNAPSHOT</version>
20         </dependency>
21     </dependencies>
22     <build>
23         <plugins>
24             <plugin>
25                 <groupId>org.springframework.boot</groupId>
26                 <artifactId>spring-boot-maven-plugin</artifactId>
27                 <version>${springboot.version}</version>
28             </plugin>
29         </plugins>
30     </build>
31 
32 </project>
View Code

consumer pom.xml配置代码:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <parent>
 6         <artifactId>spring-boot-dubbo</artifactId>
 7         <groupId>spring-boot-dubbo</groupId>
 8         <version>1.0-SNAPSHOT</version>
 9         <relativePath>../pom.xml</relativePath>
10     </parent>
11     <modelVersion>4.0.0</modelVersion>
12 
13     <artifactId>spring-boot-dubbo-consumer</artifactId>
14 
15     <dependencies>
16         <dependency>
17             <groupId>spring-boot-dubbo</groupId>
18             <artifactId>spring-boot-dubbo-api</artifactId>
19             <version>1.0-SNAPSHOT</version>
20         </dependency>
21     </dependencies>
22     <build>
23         <plugins>
24             <plugin>
25                 <groupId>org.springframework.boot</groupId>
26                 <artifactId>spring-boot-maven-plugin</artifactId>
27                 <version>${springboot.version}</version>
28             </plugin>
29         </plugins>
30     </build>
31 
32 </project>
View Code

4.api相关配置编写

ExampleService接口类编写

1 package com.goku.demo.api.service;
2 
3 /**
4  * Created by nbfujx on 2017-11-23.
5  */
6 public interface ExampleService {
7     String echo(String str);
8 }
View Code

5.provider相关配置编写

application.properties编写

## 避免和 consumer 工程端口冲突
server.port=8081

spring.dubbo.application.name=provider
spring.dubbo.registry.address=zookeeper://localhost:2181
spring.dubbo.protocol.name=dubbo
spring.dubbo.protocol.port=20880
## 本机的IP地址
spring.dubbo.protocol.host=127.0.0.1
spring.dubbo.scan=com.goku.demo
## 设置Module
spring.dubbo.module.default=false
View Code

ExampleServiceImpl接口实现类编写

package com.goku.demo.service.impl;

import com.goku.demo.api.service.ExampleService;
import com.alibaba.dubbo.config.annotation.Service;

/**
 * Created by nbfujx on 2017-11-23.
 */
@Service(version = "1.0.0")
public class ExampleServiceImpl implements ExampleService {

    @Override
    public String echo(String str) {
        return "hello"+ str;
    }
}
View Code

6.consumer相关配置编写

application.properties编写

spring.dubbo.application.name=consumer
spring.dubbo.registry.address=zookeeper://localhost:2181
spring.dubbo.scan=com.goku.demo
spring.dubbo.module.default=false
View Code

ExampleController控制器编写

 1 package com.goku.demo.controller;
 2 
 3 import com.alibaba.dubbo.config.annotation.Reference;
 4 import com.goku.demo.api.service.ExampleService;
 5 import org.springframework.web.bind.annotation.PathVariable;
 6 import org.springframework.web.bind.annotation.RequestMapping;
 7 import org.springframework.web.bind.annotation.RestController;
 8 
 9 /**
10  * Created by nbfujx on 2017-11-20.
11  */
12 @RestController
13 public class ExampleController {
14 
15     @Reference(version = "1.0.0")
16     public ExampleService exampleService;
17 
18     @RequestMapping("/")
19     public String helloWorld()
20     {
21         return "helloWorld";
22     }
23 
24     @RequestMapping("/{str}")
25     public String echo(@PathVariable  String str)
26     {
27         return exampleService.echo(str);
28     }
29 }
View Code

7.在页面上运行

http://localhost:8080/

http://localhost:8080/str

8.降级服务

mock的配置可以在出现非业务异常(比如超时,网络异常等)时执行。mock的配置支持两种,一种为boolean值,默认的为false。如果配置为true,则缺省使用mock类名,即类名+Mock后缀;另外一种则是配置"return null",可以很简单的忽略掉异常。

 ExampleServiceMock缺省类编写

 1 package com.goku.demo.api.service;
 2 
 3 import org.springframework.stereotype.Service;
 4 
 5 /**
 6  * Created by nbfujx on 2017-11-27.
 7  */
 8 @Service
 9 public class ExampleServiceMock  implements ExampleService {
10     @Override
11     public String echo(String str) {
12         return "hello"+ str+"this is error!";
13     }
14 }
View Code

ExampleController控制器修改

 1 package com.goku.demo.controller;
 2 
 3 import com.alibaba.dubbo.config.annotation.Reference;
 4 import com.goku.demo.api.service.ExampleService;
 5 import com.goku.demo.api.service.ExampleServiceMock;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.web.bind.annotation.PathVariable;
 8 import org.springframework.web.bind.annotation.RequestMapping;
 9 import org.springframework.web.bind.annotation.RestController;
10 
11 /**
12  * Created by nbfujx on 2017-11-20.
13  */
14 @RestController
15 public class ExampleController {
16 
17     @Reference(version = "1.0.0",check=false,mock="com.goku.demo.api.service.ExampleServiceMock")
18     @Autowired
19     public ExampleService exampleService;
20 
21     @RequestMapping("/")
22     public String helloWorld()
23     {
24         return "helloWorld";
25     }
26 
27     @RequestMapping("/{str}")
28     public String echo(@PathVariable  String str)
29     {
30         return exampleService.echo(str);
31     }
32 }
View Code

测试服务未启动返回值

http://localhost:8080/str

 

 

9.GITHUB地址

https://github.com/nbfujx/springBoot-learn-demo/tree/master/spring-boot-dubbo

待续

目录
相关文章
|
2月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
1664 57
|
3月前
|
存储 安全 Java
管理 Spring 微服务中的分布式会话
在微服务架构中,管理分布式会话是确保用户体验一致性和系统可扩展性的关键挑战。本文探讨了在 Spring 框架下实现分布式会话管理的多种方法,包括集中式会话存储和客户端会话存储(如 Cookie),并分析了它们的优缺点。同时,文章还涵盖了与分布式会话相关的安全考虑,如数据加密、令牌验证、安全 Cookie 政策以及服务间身份验证。此外,文中强调了分布式会话在提升系统可扩展性、增强可用性、实现数据一致性及优化资源利用方面的显著优势。通过合理选择会话管理策略,结合 Spring 提供的强大工具,开发人员可以在保证系统鲁棒性的同时,提供无缝的用户体验。
|
4月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
698 3
|
2月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
6月前
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
402 102
|
7月前
|
人工智能 负载均衡 Java
Spring AI Alibaba 发布企业级 MCP 分布式部署方案
本文介绍了Spring AI Alibaba MCP的开发与应用,旨在解决企业级AI Agent在分布式环境下的部署和动态更新问题。通过集成Nacos,Spring AI Alibaba实现了流量负载均衡及节点变更动态感知等功能。开发者可方便地将企业内部业务系统发布为MCP服务或开发自己的AI Agent。文章详细描述了如何通过代理应用接入存量业务系统,以及全新MCP服务的开发流程,并提供了完整的配置示例和源码链接。未来,Spring AI Alibaba计划结合Nacos3的mcp-registry与mcp-router能力,进一步优化Agent开发体验。
2469 14
深入实践springboot实战 蓄势待发 我不是雷锋 我是知识搬运工
springboot,说白了就是一个集合了功能的大类库,包括springMVC,spring,spring data,spring security等等,并且提供了很多和可以和其他常用框架,插件完美整合的接口(只能说是一些常用框架,基本在github上能排上名次的都有完美整合,但如果是自己写的一个框架就无法实现快速整合)。
|
Java 数据安全/隐私保护
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
Neo4j【付诸实践 01】SpringBoot集成报错org.neo4j.driver.exceptions.ClientException:服务器不支持此驱动程序支持的任何协议版本(解决+源代码)
780 1
|
缓存 Java Maven
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
Java本地高性能缓存实践问题之SpringBoot中引入Caffeine作为缓存库的问题如何解决
619 1
|
Java 应用服务中间件 开发者
深入探索并实践Spring Boot框架
深入探索并实践Spring Boot框架
227 2

热门文章

最新文章