跳到主要内容

如何开发微服务应用

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

服务提供者

安装相关盘古模块

<dependency>
<groupId>com.gitee.pulanos.pangu</groupId>
<artifactId>pangu-dependencies</artifactId>
<version>latest.version.xxx</version>
<type>pom</type>
<scope>import</scope>
</dependency>

本地配置

为便于理解,本文基于本地配置的方式编写。若改为标准的 Nacos 配置中心模式,请参阅:配置中心 章节。

spring.profiles.active=${spring.active:dev}

实现服务接口

声明接口 UserService.java
UserEntity findUserEntity(Long id);
实现接口 UserServiceImpl.java
@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);
}
}
// 启动参数设置(如下示例)
// -Dnacos.server-addr=127.0.0.1:8848 -Dnacos.namespace=pangu-dev
提示

通过 @EnableDubbo 注解开启 Dubbo 支持。由于 Dubbo 的使用 netty 作为底层网络通信,所以缺省情况下微服务启动成功后观察控制台可知并没有 Tomcat 一类 Servlet 容器随之启动。

服务注册

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

盘古开发Dubbo服务

服务消费者

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

服务消费端,调用远程服务代码 UserAdminManager.java
@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);
}
}

本文相关范例源码

下一步

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