共计 2490 个字符,预计需要花费 7 分钟才能阅读完成。
本文介绍如何基于盘古开发框架开发一个微服务利用。文中所述仅为搭建一
个微服务利用的根本框架(服务注册 & 服务发现),如要减少配置核心、网关代理、数据长久化、缓存等能力请参考使用指南的相干章节。
服务提供者
装置相干盘古模块
<!-- 盘古 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 服务接口包。当然,对于网关而言,应用的是泛化调用,也就是说当网关模块作为微服务消费者的时候是不须要依赖服务提供者的接口包的。
本地配置
为便于了解,本文基于本地配置的形式编写。若改为规范的 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 控制台即可在【服务治理 -> 服务列表】页查看成果。如下图所示。
服务消费者
上述服务注册到 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);
}
}
本文相干范例源码
- pangu-examples-dubbo-api:服务接口包
- pangu-examples-dubbo-service:服务提供者
-
pangu-examples-dubbo-consumer:服务消费者
下一步
持续浏览其它章节获取你想要的答案或通过咱们的 开发者社区 寻求更多帮忙。
参考文献
- 如何开发微服务
- 如何公布微服务 (API 网关)