SpringCloudAlibaba:3.1dubbo

devtools/2024/9/22 18:42:12/

dubbo

概述

简介

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题 官方提供了 Java、Golang、Rust 等多语言 SDK 实现

Dubbo的开源故事

最早在2008年,阿里巴巴就将Dubbo捐献到开源社区,它很快成为了国内开源服务框架选型的事实标准框架,得到了业界更广泛的应用 在2017年,Dubbo被正式捐献Apache软件基金会并成为Apache顶级项目,开始了一段新的征程

优势

活跃的社区

Dubbo 项目托管在 Apache 社区,有来自国际、国内的活跃贡献者维护着超 10 个生态项目, 贡献者包括来自海外、阿里巴巴、工商银行、携程、蚂蚁、腾讯等知名企业技术专家, 确保 Dubbo 及时解决项目缺陷、需求及安全漏洞,跟进业界最新技术发展趋势。

庞大的用户群体

Dubbo3 已在阿里巴巴成功取代 HSF 框架实现全面落地,成为阿里集团面向云原生时代的统一服务框架, 庞大的用户群体是 Dubbo 保持稳定性、需求来源、先进性的基础。

任意通信协议

Dubbo 微服务间远程通信实现细节,支持 HTTP、HTTP/2、gRPC、TCP 等所有主流通信协议。 与普通 RPC 框架不同,Dubbo 不是某个单一 RPC 协议的实现, 它通过上层的 RPC 抽象可以将任意 RPC 协议接入 Dubbo 的开发、治理体系。

多语言 SDK

Dubbo 提供几乎所有主流语言的 SDK 实现,定义了一套统一的微服务开发范式。 Dubbo 与每种语言体系的主流应用开发框架做了适配,总体编程方式、配置符合大多数开发者已有编程习惯

功能

微服务编程范式和工具

Dubbo 支持基于 IDL 或语言特定方式的服务定义,提供多种形式的服务调用形式(如同步、异步、流式等)

高性能的 RPC 通信

Dubbo 帮助解决微服务组件之间的通信问题,提供了基于 HTTP、HTTP/2、TCP 等的多种高性能通信协议实现, 并支持序列化协议扩展,在实现上解决网络连接管理、数据传输等基础问题。

微服务监控与治理

Dubbo 官方提供的服务发现、动态配置、负载均衡、流量路由等基础组件可以很好的帮助解决微服务基础实践的问题。 除此之外,您还可以用 Admin 控制台监控微服务状态,通过周边生态完成限流降级、数据一致性、链路追踪等能力。

部署在多种环境

Dubbo 服务可以直接部署在容器、Kubernetes、Service Mesh等多种架构下

搭建

公共接口模块

支付接口

package jkw.service;/*** 支付接口*/
public interface PaymentService {/*** 根据订单id支付【模拟】* @param id* @return*/String payment(Integer id);
}

服务提供者

依赖

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>java_sc_alibaba</artifactId><groupId>jkw.life</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>test-dubbo-provider8004</artifactId><dependencies><!-- dubbo的注册中心nacos--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency><!-- dubbo和springboot整合依赖包--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><!-- SpringMVC--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 公共接口模块--><dependency><artifactId>test-com-interface</artifactId><groupId>jkw.life</groupId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>

application.yml

server:port: 8004
dubbo:application:name: test-dubbo-provider8004protocol:# 通讯协议name: dubbo# 端口号 设置端口为 -1 表示 dubbo 自动扫描并使用可用端口(从20880开始递增),避免了端口冲突的问题。port: -1registry:# 注册地址address: nacos://192.168.66.103:8848

启动类

package jkw;import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@Slf4j
@EnableDubbo
@SpringBootApplication
public class Main8004 {public static void main(String[] args) {SpringApplication.run(Main8004.class, args);log.info("**************dubbo 服务提供者 8004 启动成功 ************");}
}

支付接口实现类

package jkw.service;import org.apache.dubbo.config.annotation.DubboService;/*** 支付接口实现类*/
@DubboService
public class PaymentServiceImpl implements PaymentService {@Overridepublic String payment(Integer id) {return " payment success ";}
}

服务消费者

依赖

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd"><parent><artifactId>java_sc_alibaba</artifactId><groupId>jkw.life</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>test-dubbo-customer8005</artifactId><dependencies><!-- dubbo的注册中心nacos--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-registry-nacos</artifactId></dependency><!-- dubbo和springboot整合依赖包--><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId></dependency><!-- SpringMVC--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 公共接口模块--><dependency><artifactId>test-com-interface</artifactId><groupId>jkw.life</groupId><version>1.0-SNAPSHOT</version></dependency></dependencies></project>

application.yml

server:port: 8005
dubbo:application:name: test-dubbo-customer8005protocol:# 通讯协议name: dubbo# 端口号 设置端口为 -1 表示 dubbo 自动扫描并使用可用端口(从20880开始递增),避免了端口冲突的问题。port: -1registry:# 注册地址address: nacos://192.168.66.103:8848

启动类

package jkw;import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@Slf4j
@EnableDubbo
@SpringBootApplication
public class Main8005 {public static void main(String[] args) {SpringApplication.run(Main8005.class, args);log.info("**************dubbo 服务提供者 8004 启动成功 ************");}
}

订单控制层

package jkw.controller;import jkw.service.PaymentService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;/*** 订单控制层*/
@RestController
public class OrderController {@DubboReferencePaymentService paymentService;@GetMapping("/payment")public String payment() {return paymentService.payment(1);}}

测试

测试:http://localhost:8005/payment


http://www.ppmy.cn/devtools/31455.html

相关文章

Docker搭建LNMP+Wordpress

目录 一.项目模拟 1.项目环境 2.服务器环境 3.任务需求 &#xff08;1&#xff09;使用 Docker 构建 LNMP 环境并运行 Wordpress 网站平台 &#xff08;2&#xff09;限制 Nginx 容器最多使用 500MB 的内存和 1G 的 Swap &#xff08;3&#xff09;限制 Mysql 容器写 /d…

利用pytorch两层线性网络对titanic数据集进行分类(kaggle)

利用pytorch两层线性网络对titanic数据集进行分类 最近在看pytorch的入门课程&#xff0c;做了一下在kaggle网站上的作业&#xff0c;用的是titanic数据集&#xff0c;因为想搭一下神经网络&#xff0c;所以数据加载部分简单的把训练集和测试集中有缺失值的列还有含有字符串的…

深度学习之基于Matlab卷积神经网络验证码识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着互联网的发展&#xff0c;验证码作为一种常用的安全验证手段&#xff0c;被广泛应用于各种网站和…

【华为 ICT HCIA eNSP 习题汇总】——题目集19

1、&#xff08;多选&#xff09;以下选项中&#xff0c;FTP 常用文件传输类型有&#xff08;&#xff09;。 A、ASCII 码类型 B、二进制类型 C、EBCDIC 类型 D、本地类型 考点&#xff1a;应用层 解析&#xff1a;&#xff08;AB&#xff09; 文件传输协议&#xff08;FTP&…

【QT】初始QT

目录 一.背景1.GUI开发的各种技术方案2.什么是框架3.QT支持的系统4.QT的版本5.QT的优点6.QT的应用常见 二.环境搭建1.认识QTSDK中的重要工具2.使用QT Creator创建项目3.项目解释(1)main.cpp(2)widget.h(3)widget.cpp(4)widget.ui(5)Empty.pro(6)临时文件 三.初始QT1.Hello Worl…

《青少年成长管理2024》090 “目标计划:制定目标”6_6

《青少年成长管理2024》090 “目标计划&#xff1a;制定目标”6_6 六、时间预算&#xff08;一&#xff09;期间时间计算&#xff08;二&#xff09;阶段时间计算&#xff08;三&#xff09;成长期总时间预算 七、总体原则&#xff08;一&#xff09;幸福生活&#xff0c;快乐成…

自然语言处理基础

文章目录 一、基础与应用简单介绍基本任务重要应用 二、词表示与语言模型词表示方案一&#xff1a;用一组的相关词来表示当前词方案二&#xff1a;one-hot representation&#xff0c;将每一个词表示成一个独立的符号方案三&#xff1a;上下文表示法&#xff08;contextual rep…

【开源物联网平台】window环境下搭建调试监控设备环境

&#x1f308; 个人主页&#xff1a;帐篷Li &#x1f525; 系列专栏&#xff1a;FastBee物联网开源项目 &#x1f4aa;&#x1f3fb; 专注于简单&#xff0c;易用&#xff0c;可拓展&#xff0c;低成本商业化的AIOT物联网解决方案 目录 一、使用docker脚本部署zlmediakit 1.1 …