如何基于盘古框架开发Dubbo微服务应用

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
云原生网关 MSE Higress,422元/月
简介: 本文介绍如何基于盘古开发框架开发一个微服务应用。文中所述仅为搭建一个微服务应用的基本框架(服务注册&服务发现),如要增加配置中心、网关代理、数据持久化、缓存等能力请参考使用指南的相关章节。

本文介绍如何基于盘古开发框架开发一个微服务应用。文中所述仅为搭建一个微服务应用的基本框架(服务注册&服务发现),如要增加配置中心、网关代理、数据持久化、缓存等能力请参考使用指南的相关章节。

服务提供者

安装相关盘古模块

- 盘古 Parent
pangu-parent
- 基础模块
pangu-spring-boot-starter
- Dubbo模块
pangu-dubbo-spring-boot-starter
- 服务接口包
pangu-examples-dubbo-api
盘古框架微服务交互基于 Dubbo 提供的面向接口代理的高性能 RPC 调用能力。对于内部服务模块之间的交互调用或者是传统方式的网关接口调用,都需要依赖 API 接口包。当然,对于ShenYu网关而言,使用的是泛化调用不需要依赖接口包,详见相关章节。

本地配置

为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅: 配置中心 章节。
spring.application.name=pangu-examples-dubbo-service
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880
dubbo.consumer.timeout=5000
#服务注册中心地址
dubbo.registry.address=nacos://${nacos.server-addr}?namespace=${nacos.namespace}
dubbo.consumer.check=false

实现服务接口

UserEntity findUserEntity(Long id);
@Service(version = "1.0.0", group = "pangu-showcases-dubbo-service")
public class UserServiceImpl implements UserService {
    @Override
    public UserEntity findUserEntity(Long id) {
        log.info("参数ID:{}", id);
        UserEntity userEntity = new UserEntity();
        userEntity.setId(id);
        userEntity.setName("云南码农大熊");
        return userEntity;
    }
}

启动入口

@EnableDubbo
@SpringBootApplication
public class DubboProviderApplication {
    public static void main(String[] args) {
        PanGuApplicationBuilder.init(DubboProviderApplication.class).run(args);
    }
}

通过 @EnableDubbo 注解开启 Dubbo 支持。由于 Dubbo 的使用 netty 作为底层网络通信,决定了盘古微服务应用启动和提供服务并不需要依赖 Servlet 容器。

-Dnacos.server-addr=127.0.0.1:8848 -Dnacos.namespace=pangu-dev

服务注册

成功启动应用会自动像 Nacos 服务注册中心注册服务。登录 Nacos 控制台即可在【服务管理->服务列表】页查看效果。如下图所示。
1-pangu-framework-nacos-service-regist.png

服务消费者

上述服务注册到 Nacos 服务中心以后就可以对外提供服务了。可以在任何一个 SpringBean 组件中(一般是 Service、Manager 等),引入服务接口后就像本地接口调用一样调用远程服务。Dubbo 将提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节。服务消费端所需要的依赖和提供端是一样的,这里不再赘述。仅给出消费相关代码。如下所示。

@Component
public class UserAdminManager {
    @Reference(version = "1.0.0", group = "pangu-examples-dubbo-service")
    private UserService userService;
    public void findUserEntityById(Long id){
        log.info("开始Dubbo远程调用...");
        UserEntity userEntity = userService.findUserEntity(id);
        log.info("[OK] 调用成功 {}", userEntity);
    }
}
相关文章
|
13天前
|
监控 JavaScript 数据可视化
建筑施工一体化信息管理平台源码,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
智慧工地云平台是专为建筑施工领域打造的一体化信息管理平台,利用大数据、云计算、物联网等技术,实现施工区域各系统数据汇总与可视化管理。平台涵盖人员、设备、物料、环境等关键因素的实时监控与数据分析,提供远程指挥、决策支持等功能,提升工作效率,促进产业信息化发展。系统由PC端、APP移动端及项目、监管、数据屏三大平台组成,支持微服务架构,采用Java、Spring Cloud、Vue等技术开发。
|
2月前
|
Cloud Native 安全 持续交付
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
94 32
|
2月前
|
存储 监控 API
深入解析微服务架构及其在现代应用中的实践
深入解析微服务架构及其在现代应用中的实践
86 12
|
1月前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
1月前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
50 1
|
1月前
|
消息中间件 运维 API
后端开发中的微服务架构实践####
本文深入探讨了微服务架构在后端开发中的应用,从其定义、优势到实际案例分析,全面解析了如何有效实施微服务以提升系统的可维护性、扩展性和灵活性。不同于传统摘要的概述性质,本摘要旨在激发读者对微服务架构深度探索的兴趣,通过提出问题而非直接给出答案的方式,引导读者深入
49 1
|
1月前
|
负载均衡 监控 API
后端开发中的微服务架构实践与挑战
本文深入探讨了微服务架构在后端开发中的应用,分析了其优势和面临的挑战,并通过案例分析提出了相应的解决策略。微服务架构以其高度的可扩展性和灵活性,成为现代软件开发的重要趋势。然而,它同时也带来了服务间通信、数据一致性等问题。通过实际案例的剖析,本文旨在为开发者提供有效的微服务实施指导,以优化系统性能和用户体验。
|
2月前
|
监控 持续交付 API
深入理解微服务架构及其在现代应用开发中的应用
深入理解微服务架构及其在现代应用开发中的应用
40 4
|
2月前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
79 1
|
2月前
|
消息中间件 运维 开发者
后端开发中的微服务架构实践与挑战####
本文深入探讨了微服务架构在后端开发中的应用,从其核心概念、设计原则到实际部署过程中面临的挑战进行了全面剖析。不同于传统的单体应用,微服务通过将复杂系统拆解为一系列小型、独立的服务,提高了系统的灵活性和可维护性。然而,这种架构的转变也伴随着服务间通信、数据一致性、部署复杂性等新问题。本文旨在为开发者提供一套应对这些挑战的策略,同时分享一些成功案例,以期促进微服务架构的有效实施。 ####