搞微服务用阿里开源的 Nacos 真香啊! (2)

bootstrap.yml 配置

spring: application: name: nacos-config cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml prefix: nacos-config profiles: active: dev

Nacos 配置

Nacos 上创建配置文件名称格式:${prefix}-${spring.profile.active}.${file-extension},如上一步bootstrap.yml的配置可知,我要创建的配置名为:nacos-config-dev.yaml,内容如下:

搞微服务用阿里开源的 Nacos 真香啊!

创建 Controller

动态获取用户名称的功能为例:

创建一个对外接口 /username 代码如下:

@RestController @RefreshScope public class ConfigController { @Value("${username:wangzg}") private String username; @RequestMapping("/username") public String userNameInfo() { return username; } }

注意:Controller 上要添加 @RefreshScope注解 它实现了配置的热加载。

验证结果

本地运行项目,可以看到项目的启动时,端口已变为我们在 Nacos 上配置的端口8090。

搞微服务用阿里开源的 Nacos 真香啊!

在浏览器访问链接::8090/username,返回 testuser。修改 Nacos 上 username 的值,不需要重启微服务,重新请求链接 username 的值会动态变。可见 Nacos 作为配置中心实现了热加载功能。

2.3 注册中心

创建服务提供者

创建微服务可参上面配置中心的创建方式,创建对外接口 /sayHello 代码如下:

@RestController public class ProviderController { @GetMapping("/sayHello") public String sayHello(@RequestParam(value = "name",defaultValue = "helloWord")String sayHello){ return "tom say: " + sayHello; } }

启动服务,访问地址::8099/sayHello,可输出:
tom say: helloWord,表示微服务已创建成功。

创建服务消费者

这里采用 FeignClient 的方式实现跨服务间调用(有兴趣的同学也可以研究一下RestTemplate的方式)。

pom 文件

在 nacos-consumer 的 pom 文件要添加 Feigin-Client 的 maven 依赖。

<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>

添加注解

在微服务启动类 *Application.java 添加注解 @EnableFeignClients。

创建 FeignClient

@FeignClient("nacos-provider") public interface ProviderClient { @GetMapping("/sayHello") String sayHello(@RequestParam(value = "name", defaultValue = "wangzg", required = false) String name); }

说明:FeignClient 注解传入的 name,指定 FeignClient 的名称,如果项目使用了 Ribbon,name 属性会作为微服务的名称,用于服务发现。

创建 ConsumerController

@RestController public class ConsumerController { @Autowired ProviderClient providerClient; @GetMapping("/hi-feign") public String hiFeign(){ return providerClient.sayHello("feign"); } }

重启工程,在浏览器上访问:8090/hi-feign,可以在浏览器上展示正确的响应,这时 nacos-consumer 调用 nacos-provider 服务成功。

下面一张请求流转的时序图,这样理解清晰一些。

搞微服务用阿里开源的 Nacos 真香啊!

项目地址:https://github.com/hellowHuaairen/wangzgSpringBootTest

三、最后

微服务有四大特点:

小(微服务粒度小)

独(独立部署运行和扩展)

轻(系统简洁轻量化)

松(高内聚低耦合)

要完成一个复杂系统往往需要很多微服务单元,而衔接每个微服务,完成微服务的统一管理就非常有必要,所以集成服务管理中心和配置中心的产品就的就应运而生,而 Nacos 是其中的佼佼者!

教程至此,你应该也能对 Nacos 有一些了解!光看不练假把式,最快的学习方式莫过于模仿,再通过举一反三才能融会贯通。每一种新工具都是对老工具的革新,有兴趣的小伙伴可以参考我上面的案例,在实践中会发现更多乐趣!

四、参考资料

官方文档: https://nacos.io/zh-cn/docs/what-is-nacos.html

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpxdpj.html