前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何基于盘古框架开发Dubbo微服务应用

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

原创
作者头像
码农大熊
修改2022-05-07 11:40:29
4922
修改2022-05-07 11:40:29
举报
文章被收录于专栏:盘古开发框架盘古开发框架

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

服务提供者

安装相关盘古模块

代码语言:txt
复制
<!-- 盘古 Parent -->
<parent>
	<groupId>com.gitee.pulanos.pangu</groupId>
	<artifactId>pangu-parent</artifactId>
	<version>latest.version.xxx</version>
	<relativePath/>
</parent>
<!-- 基础模块 -->
<dependency>
	<groupId>com.gitee.pulanos.pangu</groupId>
	<artifactId>pangu-spring-boot-starter</artifactId>
</dependency>
<!-- Dubbo模块 -->
<dependency>
	<groupId>com.gitee.pulanos.pangu</groupId>
	<artifactId>pangu-dubbo-spring-boot-starter</artifactId>
</dependency>
<!-- 服务接口包 -->
<dependency>
	<groupId>com.gitee.pulanos.pangu</groupId>
	<artifactId>pangu-examples-dubbo-api</artifactId>
    <version>1.0.0</version>
</dependency>

盘古框架微服务交互基于 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实现服务接口

代码语言:jsx
复制
UserEntity findUserEntity(Long id);
代码语言:jsx
复制
@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;
	}
}

启动入口

代码语言:jsx {1,5}
复制
@EnableDubbo
@SpringBootApplication
public class DubboProviderApplication {
	public static void main(String[] args) {
		PanGuApplicationBuilder.init(DubboProviderApplication.class).run(args);
	}
}

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

代码语言:jsx
复制
-Dnacos.server-addr=127.0.0.1:8848 -Dnacos.namespace=pangu-dev

服务注册

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

1-pangu-framework-nacos-service-regist.png
1-pangu-framework-nacos-service-regist.png

服务消费者

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

代码语言:jsx
复制
@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);
	}
}

本文相关范例源码

下一步

继续阅读其它章节获取你想要的答案或通过我们的 开发者社区 寻求更多帮助。

参考文献

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 服务提供者
    • 安装相关盘古模块
      • 本地配置
        • 启动入口
          • 服务注册
          • 服务消费者
          • 本文相关范例源码
          • 下一步
          • 参考文献
          相关产品与服务
          微服务引擎 TSE
          微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档