前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「拥抱开源」Nacos 实战篇

「拥抱开源」Nacos 实战篇

作者头像
FoamValue
发布2020-09-07 17:22:32
9030
发布2020-09-07 17:22:32
举报
文章被收录于专栏:FoamValueFoamValue

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

又是一年金九银十。

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

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

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


01 Nacos 准备

首先启动 Nacos Derby。

代码语言:javascript
复制
$ 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

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

代码语言:javascript
复制
spring:
  application:
    name: oPos-center

2. application-dev.yml

配置 Nacos 服务的地址。

代码语言:javascript
复制
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3. Application.java

增加启用服务发现注解。

代码语言:javascript
复制
@EnableDiscoveryClient
public class Application {

4. EchoController.java

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

代码语言:javascript
复制
@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

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

代码语言:javascript
复制
spring:
  application:
    name: oPos-client

2. application-dev.yml

配置 Nacos 服务的地址。

代码语言:javascript
复制
spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

3. Application.java

增加启用服务发现注解。

代码语言:javascript
复制
@EnableDiscoveryClient
public class Application {

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

4.HomeController.java

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

代码语言:javascript
复制
@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 基本的核心功能都已经完备,也有成功的生产案例。

让我们下周再见。?

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-09-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FoamValue 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档