当前位置: 首页 > wzjs >正文

外贸建站行业好做吗百度一下百度主页官网

外贸建站行业好做吗,百度一下百度主页官网,wordpress5.0不能发布文章,网站怎么做缓存快速入手:基于SpringBoot的Dubbo应用融合Nacos成为注册中心 前言创建应用添加配置提供服务接口启动类添加注解服务调用Dubbo 调用 Spring CloudSpring Cloud 调用 DubboDubbo 与 Spring Cloud 的关系 前言 Dubbo 是阿里巴巴开源的一个高性能、轻量级的分布式服务框…

快速入手:基于SpringBoot的Dubbo应用融合Nacos成为注册中心

  • 前言
    • 创建应用
    • 添加配置
    • 提供服务接口
    • 启动类添加注解
    • 服务调用
    • Dubbo 调用 Spring Cloud
    • Spring Cloud 调用 Dubbo
    • Dubbo 与 Spring Cloud 的关系

前言

Dubbo 是阿里巴巴开源的一个高性能、轻量级的分布式服务框架,在分布式系统开发领域应用广泛。它提供了远程调用、服务注册与发现、负载均衡、集群容错等一系列核心功能,适用于各种大型分布式系统和微服务架构。

创建应用

参考官网的版本说明,如图所示:

在这里插入图片描述

我们使用当前Dubbo最新的版本,依赖文件如下:

Spring Boot VersionDubboNacos Version
3.3.93.3.02.5.1
<?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>3.3.9</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.dubbo.nacos.product</groupId><artifactId>dubbo-nacos-product</artifactId><version>0.0.1-SNAPSHOT</version><name>dubbo-nacos-product</name><description>dubbo-nacos-product</description><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- dubbo依赖 --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.3.0</version></dependency><!-- Nacos注册中心 --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-nacos-spring-boot-starter</artifactId><version>3.3.0</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

另一种更灵活的方式是使用官方项目脚手架工具 - start.dubbo.apache.org 在线服务。它可以帮助开发者创建 Spring Boot 结构应用,根据用户的选择自动管理 dubbo-spring-boot-starter 等依赖和必要配置。

请确保后台已经启动 Nacos 服务,在Nacos融合SpringCloud成为注册配置中心文章中有讲解Nacos的安装或参考 Nacos 快速入门。

添加配置

Dubbo Spring 外部化配置是由 Dubbo 2.5.8 引入的新特性,可通过 Spring Environment 属性自动地生成并绑定 Dubbo 配置 Bean,实现配置简化,并且降低微服务开发门槛。

Dubbo 相关配置信息都存放在 application.yml 配置文件中,示例代码如下:

dubbo:application:name: dubbo-nacos-productregistry:address: nacos://127.0.0.1:8848# 新用户请设置此值,表示启用应用级服务发现,可选值 interface(接口)、instance(服务实例)、all(所有),默认值为 all,未来版本将切换默认值为 instanceregister-mode: all

基于以下配置,Dubbo 进程将在 50051 端口监听 triple 协议请求,同时,实例的 ip:port 信息将会被注册到 Nacos server

dubbo:application:name: dubbo-nacos-productregistry:address: nacos://127.0.0.1:8848protocol:name: triport: 50051

提供服务接口

和以往SpringCloud项目不同,需要提供服务后才可注册,以下是基于 Java Interface 的标准 Dubbo 服务定义。

public interface DemoService {String sayHi(String str);
}
@DubboService
//@DubboService(registry="nacos-registry")
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHi(String str) {return "hello "+ str;}
}

如果要设置服务参数,@DubboService 也提供了常用参数的设置方式。

@DubboService(version = "1.0.0", group = "dev", timeout = 5000)
public class DemoServiceImpl implements DemoService {}

@Service 注解从 3.0 版本开始就已经废弃,改用 @DubboService,以区别于 Spring@Service 注解

DemoServiceImpl 类中添加了 @DubboService 注解,通过这个配置可以基于 Spring Boot 去发布 Dubbo 服务,后续服务端发布的服务,消费端订阅的服务都是围绕着 DemoService 接口展开的。

启动类添加注解

启动类增加@EnableDubbo注解用来加载和启动 Dubbo 相关组件,将所有标注 @DubboService 的服务接口实现类暴露为 Spring Bean,随即被导出 Dubbo 服务。示例代码如下:

@SpringBootApplication
@EnableDubbo
public class DubboNacosProductApplication {public static void main(String[] args) {SpringApplication.run(DubboNacosProductApplication.class, args);}
}

Spring Boot 注解默认只会扫描 main 类所在的 package,如果服务定义在其它 package 中,需要增加配置 @EnableDubbo(scanBasePackages = {"org.apache.dubbo.springboot.demo.provider"})

启动成功后,如图所示:

在这里插入图片描述
再检查服务在Nacos上是否注册成功,如图所示:

在这里插入图片描述
在这里插入图片描述
我们会发现创建了两个服务实例和配置文件。这是因为Dubbo3 默认采用 “应用级服务发现 + 接口级服务发现” 的双注册模式,详细可以参考官网介绍,应用级服务发现的 “服务名” 为应用名。

Dubbo3 默认采用 “应用级服务发现 + 接口级服务发现” 的双注册模式,因此会发现应用级服务(应用名)和接口级服务(接口名)同时出现在 Nacos 控制台,可以通过配置 dubbo.registry.register-mode=instance/interface/all 来改变注册行为。

服务调用

创建consumer 包,用于模拟发起对dubbo-nacos-product服务的远程调用。示例代码如下:

@Component
public class Consumer implements CommandLineRunner {@DubboReferenceprivate DemoService demoService;@Overridepublic void run(String... args) throws Exception {String result = demoService.sayHi("world");System.out.println("Receive result ======> " + result);}
}

@DubboReference 注解将自动注入为 Dubbo 服务代理实例,使用 demoService 即可发起远程服务调用执行结果如图所示:

在这里插入图片描述

@Reference 注解从 3.0 版本开始就已经废弃,改用 @DubboReference,以区别于 Spring@Reference 注解

通常远程调用是跨进程的,所以创建一个独立的 Consumer(客户端),以便发起对 Dubbo 服务的远程调用。

参考前面的示例创建一个消费方项目,比如:dubbo-nacos-consumer

因为没有提供服务接口,所以消费者不会再Nacos上注册。官方描述如下:

Dubbo 3.0.0 版本以后,增加了是否注册消费者的参数,如果需要将消费者注册到 nacos 注册中心上,需要将参数(register-consumer-url)设置为true,默认是false

配置文件中示例如下:

dubbo:application:name: dubbo-nacos-consumerregistry:address: nacos://127.0.0.1:8848parameters:register-consumer-url: true # 是否注册消费者

另外还有个重要的@DubboReference注解,注入Dubbo 服务代理实例,根据官网解释如下:

@DubboService@DubboReference 用于标记 Dubbo 服务,@EnableDubbo 启动 Dubbo 相关配置并指定 Spring Boot 扫描包路径。

将之前的Consumer代码挪到消费者代码中,然后启动项目,执行结果如图:

在这里插入图片描述
如图所示,服务名前缀为 providers: 的信息为服务提供者的元信息,consumers: 则代表服务消费者的元信息。

  • 扩展注解配置

虽然可以通过 @DubboService@DubboReference 调整配置参数(如下代码片段所示),但总体来说注解是为易用性设计的,其提供的仅仅是 80% 场景下常用的配置项。在这种情况下,如果有更复杂的参数设置需求,可以使用 Java Configdubbo.properties 两种方式。

@DubboService(version = "1.0.0", group = "dev", timeout = 5000)
@DubboReference(version = "1.0.0", group = "dev", timeout = 5000)

注意,Java Config@DubboService@DubboReference 的替代方式,对于有复杂配置需求的服务建议使用这种方式。

@Configuration
public class ProviderConfiguration {@Beanpublic ServiceBean demoService() {ServiceBean service = new ServiceBean();service.setInterface(DemoService.class);service.setRef(new DemoServiceImpl());service.setGroup("dev");service.setVersion("1.0.0");Map<String, String> parameters = new HashMap<>();service.setParameters(parameters);return service;}
}

另一种,可以通过在项目 resources 目录下增加 dubbo.properties 文件作为配置补充

dubbo.service.org.apache.dubbo.springboot.demo.DemoService.timeout=5000
dubbo.service.org.apache.dubbo.springboot.demo.DemoService.parameters=[{myKey:myValue},{anotherKey:anotherValue}]
dubbo.reference.org.apache.dubbo.springboot.demo.DemoService.timeout=6000

properties 格式配置目前结构性不太强,比如体现在 key 字段冗余较多,后续会考虑提供对于 yaml 格式的支持。

Dubbo 调用 Spring Cloud

Dubbo 应用作为消费方要调用到 Spring Cloud 发布的 HTTP 接口。可以借助 Dubbo3 内置的 REST 编程范式支持实现,假设你已有一套Spring Cloud 微服务体系(可以参考《Nacos融合SpringCloud成为注册配置中心》文章或者官方《Nacos 快速入门》文章)。

SpringCloud中发布一个Http接口,示例代码如下:

@RestController
public class AppController {@GetMapping("/echo/{str}")public String rest(@PathVariable(value = "str") String str){return "hello "+ str;}
}

我们启动SpringCloud项目后调用该接口,确保接口能正常请求。

然后再Dubbo项目中引入OpenFeign的依赖(我们需要将Dubbo3.3.x改为Dubbo3.2.x,经过测试发现最新版不支持OpenFeign调用,希望官方尽快修改该问题把),依赖文件如下:

		<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.2.17</version></dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifactId>okhttp</artifactId><version>4.11.0</version></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>4.1.3</version></dependency>

对应配置文件如下:

dubbo:application:name: dubbo-nacos-consumerregistry:address: nacos://127.0.0.1:8848parameters:register-consumer-url: true # 是否注册消费者

我们需要定义一个与SpringCloud一样的OpenFeign接口,示例代码如下:

@FeignClient(name = "sc-nacos-product")
public interface EchoService {@GetMapping(value = "/echo/{str}")String echo(@PathVariable(value = "str") String str);
}

通过 @DubboReference 注解将 EchoService 接口注册为 Dubbo 服务,示例代码如下:

@Component
public class Consumer implements CommandLineRunner {@DubboReference(providedBy = "sc-nacos-product",check = false)private EchoService echoService;@Overridepublic void run(String... args) throws Exception {String result = echoService.echo("world");System.out.println("Receive result ======> " + result);}
}

启动Dubbo应用后,会自动调用 Spring Cloud 服务,执行结果如图:

在这里插入图片描述

Spring Cloud 调用 Dubbo

接下来将展示如何将 Dubbo server 发布的服务开放给 Spring Cloud client 调用。

Dubbo 3.3 版本开始,Triple 协议重用已有的 HTTP 协议栈,实现了全面的 REST 风格服务导出能力。无需使用泛化或网关层协议转换,无需配置,用户即可通过 HTTP 协议去中心化直接访问后端的 Triple 协议服务。

相比于普通的 Dubbo 服务定义,我们要先引入SpringWeb相关依赖(Dubbo依赖使用最新版本即可),依赖文件如下:

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.3.9</version></dependency>

然后在接口上添加标准Spring MVC注解,使用 @DubboService 注解发布服务即可示例代码如下:

@RestController
@RequestMapping
public interface DemoService {@GetMapping(value = "/sayHi")String sayHi(String name);
}
@DubboService
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHi(String name) {return "hello " + name;}
}

在服务配置上,特别注意我们需要将服务的协议进行配置如果版本是3.3.x就要设置protocol: tri3.2.x版本设置protocol: rest,前面说过Dubbo 3.3 已经去掉了 Rest 协议,配置信息如下:

dubbo:application:name: dubbo-nacos-productqos-enable: falseregistry:address: nacos://127.0.0.1:8848# 新用户请设置此值,表示启用应用级服务发现,可选值 interface、instance、all,默认值为 all,未来版本将切换默认值为 instanceregister-mode: instanceprotocol:port: 8090# 3.3.x设置为 tri,3.2.x设置为 restname: tri

启动Dubbo应用,确认接口访问成功。

然后再SpringCloud的消费方项目中定义一个OpenFeign接口,用于调用上面发布的 Dubbo rest 服务。示例代码如下:

@FeignClient(name = "dubbo-nacos-product")
public interface DemoService {@GetMapping(value = "/sayHi/{name}")String sayHi(@PathVariable String name);
}

再创建一个Controller进行调用测试OpenFeign接口,示例代码如下:

@RestController
@RequestMapping(value = "/demo")
public class DemoController {@Autowiredprivate DemoService demoService;@RequestMapping(value = "/sayHi/{name}", method = RequestMethod.GET)public String sayHi(@PathVariable String name) {return "hello "+ name;}
}

然后检查下Nacos服务是否都注册成功,如图所示:

在这里插入图片描述
测试接口是否请求成功,如图所示:

在这里插入图片描述

另外,我们可以利用 Dubbo 的多协议发布机制,为一些服务配置多协议发布。

dubbo:protocols:- id: triname: triport: 8090- id: dubboname: dubboport: 20880

同时,服务注解中也配置为多协议发布(也可以分别配置),示例代码如下:

@DubboService(protocol="tri,dubbo")
public class UserServiceImpl implements UserService {}

对于消费端而言,直接在声明引用的时候指定要调用的协议关键字就可以了,示例代码如下:

@DubboReference(protocol="dubbo")
private DemoService demoService;
@DubboReference(protocol="tri")
private GreetingService greetingService;

或者在 application.yml 配置文件中指定全局默认值:

dubbo:consumer:protocol: tri

Dubbo 与 Spring Cloud 的关系

DubboSpring Cloud 是两套平行的微服务开发与解决方案,两者都提供了微服务定义、发布、治理的相关能力,对于微服务开发者来说,我们建议在开发之初就确定好 Apache DubboSpring Cloud 之间的选型,尽量避免两个不同体系在同一集群中出现,以降低集群维护复杂度。

http://www.dtcms.com/wzjs/290572.html

相关文章:

  • vs做网站加背景江苏网站推广公司
  • 免费安全建网站免费站推广网站在线
  • 国外科技网站欣赏国际免费b站
  • 长春网站运做思路手机系统流畅神器
  • 自己制作wordpress plugin信息流优化师简历
  • 莞城做网站公司b站新人视频怎么推广
  • 如何用java做网站视频优化服务内容
  • 郸城县做网站青岛百度关键词优化
  • 网站蜘蛛来访记录磁力狗最佳搜索引擎
  • 高端企业网站公司阿里云建站费用
  • 佛山网站建设设计公司哪家好免费网站推广软件
  • 网站搭建素材广告多的网站
  • 深圳专业网站建百度浏览器主页网址
  • 成都建设项目环境影响登记网站网站目录结构
  • 青岛百度关键词优化广州:推动优化防控措施落
  • 水利部精神文明建设指导委员会网站百度链接提交
  • 买产品做企业网站还是博客今日大新闻
  • 网站做多大尺寸江苏搜索引擎优化公司
  • 做网站 用什么语言sem 优化软件
  • 网站独立空间是什么意思上海培训机构整顿
  • 定州网站建设域名查询ip网站
  • 大良建设网站郑州网络营销排名
  • 免费网站在线客服系统百度查重工具
  • 一整套vi设计野狼seo团队
  • 做cpa怎么建立自己网站云南网站推广公司
  • 大连项目备案网站网站权重怎么查
  • 株洲最新消息网站seo具体怎么做?
  • 洛阳自助建站免费做网站的平台
  • 企业申报网站厦门seo优化公司
  • 无锡网站seo报价群排名优化软件