「拥抱开源」Nacos 实战篇

时间:2022-07-24
本文章向大家介绍「拥抱开源」Nacos 实战篇,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

超级马里奥兄弟,35周年! 库巴,一如既往的迷恋碧奇公主?!

又是一年金九银十。

最近在梳理面试题,发现微服务、服务治理相关的内容还是非常多的。

于是,将国产开源产品 Nacos 研究了下,写了点内容分享给大家。

祝大家在芜湖起飞的时候,更有底气。


01 Nacos 准备

首先启动 Nacos Derby。

$ docker-compose -f example/standalone-derby.yaml up

docker 安装参考上周的「拥抱开源」注册中心 Nacos

启动之后,使用浏览器打开 http://localhost:8848/nacos。

使用默认的登录账号:nacos,密码:nacos


02 Nacos 界面

Nacos 管理界面是一个平平无奇的 HTML。

配置管理

可以将一些敏感的配置信息进行妥善管理,例如:生产数据库的地址账号密码。

服务列表

查看当前在线的微服务信息。

同时提供了服务编辑与上下线功能。

命名空间

提供了自定义命名空间的配置。

集群管控

生产环境可以选择使用3台或3台以上的服务器进行部署。


03 Spring Cloud Nacos

服务的提供者

1. application.yml

指定服务提供者应用的别名,用于服务调用使用。

spring:
  application:
    name: oPos-center

2. application-dev.yml

配置 Nacos 服务的地址。

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3. Application.java

增加启用服务发现注解。

@EnableDiscoveryClient
public class Application {

4. EchoController.java

假装提供一个分布式服务,即一个 Get 的请求链接。

@RestController
public class EchoController {

  @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
  public String echo(@PathVariable String str) {
    return "Hello Nacos Discovery " + str;
  }
}

服务的调用者

1. application.yml

指定服务提供者应用的别名,用于服务调用使用。

spring:
  application:
    name: oPos-client

2. application-dev.yml

配置 Nacos 服务的地址。

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3. Application.java

增加启用服务发现注解。

@EnableDiscoveryClient
public class Application {

  @LoadBalanced
  @Bean
  public RestTemplate restTemplate() {
    return new RestTemplate();
  }

4.HomeController.java

假装提供一个分布式服务,即一个 Get 的请求链接。

@Controller
private final RestTemplate restTemplate;

  @Autowired
  public HomeController(RestTemplate restTemplate) {
    this.restTemplate = restTemplate;
  }

  @ResponseBody
  @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
  public String echo(@PathVariable String str) {
    return restTemplate.getForObject("http://oPos-center/echo/" + str, String.class);
  }
}

最终效果:

通过访问服务调用者,返回服务提供者的消息。

一个简易的分布式服务调用就制作好了。

PS. 完整示例代码,见 https://github.com/FoamValue/oPos.git


04 小结

Nacos 自2018年8月5日开源以来,在社区两年的共同努力之下,获得了13400+ stars,发布了30个版本,吸引了 125 位优秀贡献者。

今天体验下来,发现 1.3.2 版本的 Nacos 基本的核心功能都已经完备,也有成功的生产案例。

让我们下周再见。?

这个周末,又一次成功“强迫”自己学习。

感谢各位小伙伴的阅读,这里是一个技术人的学习与分享。