首页 > 其他分享 >springcloud-alibaba dubbo/feign 20220905

springcloud-alibaba dubbo/feign 20220905

时间:2022-12-12 12:35:34浏览次数:42  
标签:dubbo feign spring boot springcloud org import com cloud

Feign组件为内部服务通信(声明式HTTP客户端) 简洁、方便、优雅

微服务之间的通信 REST API

HTTP并不会开启KeepAlive功能,当前连接为短连接,每次请求都需TCP连接,效率低下

 

外部服务REST API/内部调用Feign组件(声明式HTTP调用)                  

外使用REST API/内服务使用RPC===>Dubbo Spring Cloud

 

                外/内服务

性能对比   RESTAPI/Dubbo RPC>RESTAPI/Feign

 

 

 

 

 

 

一、dubboapi接口层

1、pom.xml

<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>
<groupId>com.sc</groupId>
<artifactId>dubboapi</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dubboapi</name>
<description>Demo project for Spring Boot</description>

2、dubboapi

package com.sc.dubboapi.dubboapi;
public interface IHelloService {
String sayHello(String name);
}

 

 

 

二、providerdubbo2031生产者

引用dubboapi 0.0.1-SNAPSHOT接口包

1、pom.xml

 

<modelVersion>4.0.0</modelVersion>
<groupId>com.sc</groupId>
<artifactId>provider-dubbo2031</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>provider-dubbo2031</name>
<description>Demo project for Spring Boot</description> <properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</spring-boot.version>
<spring-cloud-alibaba.version>2.2.2.RELEASE</spring-cloud-alibaba.version>
</properties>
<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-dubbo</artifactId>
  </dependency>
  <dependency>
    <groupId>com.sc</groupId>
    <artifactId>dubboapi</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </dependency>
</dependencies> <dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>${spring-boot.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-alibaba-dependencies</artifactId>
      <version>${spring-cloud-alibaba.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

 

2、application.properties

# 应用名称
spring.application.name=providerdubbo2031
server.port=2031
##dubbo
dubbo.scan.base-packages=com.sc.providerdubbo2031.service
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
dubbo.registry.address=spring-cloud://localhost
##nacos
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=localhost:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=public

 

3、HelloServiceImpl

package com.sc.providerdubbo2031.service;
import com.sc.dubboapi.dubboapi.IHelloService;
import org.apache.dubbo.config.annotation.DubboService; @DubboService
public class HelloServiceImpl implements IHelloService {
public String sayHello(String name) {
return "Hello World"+name;
}
}

 

4、ProviderDubbo2031Application

package com.sc.providerdubbo2031;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @EnableDiscoveryClient
@EnableAutoConfiguration
@SpringBootApplication
public class ProviderDubbo2031Application { public static void main(String[] args) {
SpringApplication.run(ProviderDubbo2031Application.class, args);
} }

\

springcloud-alibaba  dubbo/feign 20220905_ide

 

 

 

 

 

三、customerdubbo2032消费者

引用dubboapi 0.0.1-SNAPSHOT接口包
1、pom.xml

<dependencies>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
  </dependency>
  <dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-dubbo</artifactId>
  </dependency>
  <dependency>
    <groupId>com.sc</groupId>
    <artifactId>dubboapi</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </dependency>
</dependencies> <dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-dependencies</artifactId>
      <version>${spring-boot.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-alibaba-dependencies</artifactId>
      <version>${spring-cloud-alibaba.version}</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
   </dependencies>
</dependencyManagement>

2、application.properties

# 应用名称
spring.application.name=customerdubbo2032
server.port=2032
##dubbo####与nacos的提供者服务一致providerdubbo2031
dubbo.cloud.subscribed-services=providerdubbo2031
dubbo.protocol.port=20881
##nacos
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口
spring.cloud.nacos.discovery.server-addr=localhost:8848
# 禁此注册到 nacos
spring.cloud.nacos.discovery.register-enabled=false

 

springcloud-alibaba  dubbo/feign 20220905_spring_02

 

 

3、HelloController

package com.sc.customerdubbo2032.control;
import com.sc.dubboapi.dubboapi.IHelloService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController; @RestController
public class HelloController { @DubboReference(check = false)
private IHelloService helloService; @GetMapping("/say")
public String sayHello(){
return helloService.sayHello("Lily2022");
}
}
4、Customerdubbo2032Application
package com.sc.customerdubbo2032; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @EnableDiscoveryClient
@EnableAutoConfiguration
@SpringBootApplication
public class Customerdubbo2032Application { public static void main(String[] args) {
SpringApplication.run(Customerdubbo2032Application.class, args);
} }

 

springcloud-alibaba  dubbo/feign 20220905_spring_03

 

 

 

 

标签:dubbo,feign,spring,boot,springcloud,org,import,com,cloud
From: https://blog.51cto.com/smallfa/5929377

相关文章

  • springcloud-config
    SpringCloudConfig分布式配置Dalston.RELEASESpringCloudConfig为分布式系统中的外部配置提供服务器和客户端支持。使用ConfigServer,您可以在所有环境中管理应用程......
  • Feign
    Feign声明式的http客户端,协助完成http请求的发送导入Maven依赖<!--feign客户端依赖--><dependency><groupId>org.springframework.clo......
  • 解决SpringCloudConfig中文乱码问题
    问题来自于配置服务端使用的编码格式为ISO-8859-1导致  这里处理后的结果添加两个类CustomizedOriginTrackedPropertiesLoader和CustomizedPropertiesPropertySource......
  • 一文了解 Dubbo 的代码架构
    整体设计图例说明:图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。图中从下至上分为十层,各层均......
  • Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系?
    简单介绍Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。Spring使你能够编写更干净、更可管理、并且更易于测试的代码。SpringMVC是Spring的一个模块,一......
  • springcloud Config 分布式配置中心
     Server端:提供配置⽂件的存储、以接⼝的形式将配置⽂件的内容提供出去,通过使⽤@EnableConfigServer注解在Springboot应⽤中⾮常简单的嵌⼊Client端:通过接⼝获取配置数据......
  • springcloud Stream消息驱动
    SpringCloudStream是⼀个构建消息驱动微服务的框架。应⽤程序通过inputs(相当于消息消费者consumer)或者outputs(相当于消息⽣产者producer)来与SpringCloudStream中的bind......
  • springcloud Sleuth 链路追踪
    1.分布式链路追踪技术核⼼思想下图描述了⼀个常⻅的调⽤场景,⼀个请求通过⽹关服务路由到下游的微服务-1,然后微服务-1调⽤微服务-2,拿到结果后再调⽤微服务-3,最后组合微服务-......
  • springcloud GateWay网关
    GateWay如何工作客户端向SpringCloudGateWay发出请求,然后在GateWayHandlerMapping中找到与请求相匹配的路由,将其发送到GateWayWebHandler;Handler再通过指定的过滤器链......
  • SpringCloud学习 系列七、EurekaServer集群创建
    系列导航SpringCloud学习系列一、前言-为什么要学习微服务SpringCloud学习系列二、简介SpringCloud学习系列三、创建一个没有使用springCloud的服务提供者和消费......