开发者学堂课程【Spring Cloud Alibaba Nacos 详解(下):服务生产者】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/725/detail/12934
服务生产者
内容介绍:
一、搭建 Nacos 服务端
二、创建父工程
三、服务生产者
根据所说 Spring Cloud 服务协作流程图,首先需要搭建服务发现中心 Nacos Server,然后开发各个微服务,至少开发两个,一个是服务的生产方,一个是服务的消费方,最终完成服务 A 去调用服务 B。以上流程第一步为搭建 Nacos 的服务端。
一、搭建 Nacos 服务端
搭建 Nacos 的服务端具体的安装搭建过程在 Nacos 的配置管理部分已经讲过了,所以这里不再多说。
下面开始完成第二步,整个流程当中要把整个微服务创建起来,微服务有两个,一个是生产方,一个是消费方,生产方和消费方都是基于相同的依赖,为了管理依赖先建一个父工程。
二、创建父工程
为了规范依赖的版本,这里创建父工程,指定依赖的版本。首先,需要新建一个父工程。
这样就创建好了服务的工程,这个工程里需要加入一些依赖,依赖的一些版本的管理。
packaging>pom</packaging
把这几个依赖添进去之后刷新一下。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies<artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactid>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.1.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId></plugin>
</plugins>
</build>
这样父工程就创建好了,接下来做服务的生产者和消费者,这里先做服务的生产者。
三、服务生产者
以下步骤演示了如何将一个服务生产者注册到 Nacos。
1、pom.xml 的配置
包括 Spring Cloud Feign 组件、Spring Cloud Alibaba Nacos
Discovery 组件以及 Spring boot web 相关组件依赖。
创建工程 quickstart- provider。
在 Modules 中新建一个模块,选择 nacos-discovery。
然后往下继续
生产者的工程就完成了。
同理,可以创建消费者工程 quickstart-consumer。
这样就创建好了两个微服务工程。
生产者的 pom 文件需要引入一些依赖,就是生产者需要将自己注册到 nacos ,所以这里要引入
spring-cloud-starter-alibaba-nacos-discovery这个包,它的微
服务是基于 spring boot 开发,所以我们引入
spring-boot-starter-web 这个包,为什么是 web这个包呢?
因为现在所使用的、所开发的微服务是基于 spring cloud http 协议的微服务,所以我们采用 spring mvc 来暴露 http 服务。
刚才学习了 spring cloud 之间远程调用是通过 feign,所以这里要引入
spring-cloud-starter-openfeign 的包。
我们把依赖都加入到服务生产的工程中。
<dependency>
<groupId>com.alibaba.cloud</groupd>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactid>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactid></dependency>
</dependencies>
这样,生产者的依赖就加好了,加好之后创建它的配置文件。
2、application.yml 配置
一些关于 Nacos 基本的配置也必须在 application.yml (也可以是application.properties) 配置,如下所示:application.yml。
它的配置文件我们创建一个 application。
由于这里不需要用配置,我们先暂时不用 Nacos 的配置中心,所以这里不用在 boot strap 里来创建这些配置,在 application 里就可以了。
server:
port:56010 #启动端口
spring:
application:
name:quickstart-provider
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
logging:
level:
root:info
org.springframework:info
3、Provider (生产者)服务实现
@RestController
public class ProviderController{
private static final Logger LOG = LoggerFactory.getLogger
(ProviderController.class);
@GetMapping("/service")
public string service(){
LOG.info("provider invoke");
return "provider invoke";
}
}
为了让它生产服务,需要写一个 controller。
在 controller 的包下面可以编写 controller。我们可以写一个简单的,比如说暴露 http get 请求的/service 服务,就可以写一个方法。
@RestController
public class ProviderController{
@GetMapping("/service")
public String service(){
return "provider invoke":
}
}
写好之后,也是可以加一些日志的。
@RestController
public class ProviderController{
private static final Logger LOG = LoggerFactory.getLogger (ProviderController.class);
@GetMapping("/service")
public String service(){
LOG.info("provider invoke");
return "provider invoke";
}
}
4、启动 Provider (生产者)
要运行这个 spring boot 的程序我们需要创建 spring boot 的启动类,这个启动类的关键点在于注解。
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class NacosProviderApp {
public static void main(String[] args){
SpringApplication.run(NacosProviderApp.class,args);
}
}
启动类完成之后,配置这里指定了 Nacos 的地址127.0.0.1:8848,服务名是 quickstart- provider。
如果现在启动了,这个服务就启动起来了,并且它将自己注册到了 Nacos 的服务发现中心,打开 Nacos 服务列表,会发现有一个叫做quickstar-provider。
点开详情会发现它的端口就是56010
这就是生产者的微服务,剩下的消费者的微服务可以参考这个过程,整个 Spring Cloud 的服务协作过程中的生产者微服务就创建完成。




