专栏首页FoamValue「拥抱开源」Nacos 实战篇

「拥抱开源」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 基本的核心功能都已经完备,也有成功的生产案例。

让我们下周再见。?

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

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

本文分享自微信公众号 - FoamValue(gh_3c635269f459),作者:陈鑫杰

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-09-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 结构型构建模式

    适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,它们是关注类和对象的组合为目的的设计模式,它们也被称为结构型构建模式。

    FoamValue
  • 建造者模式 Builder Pattern

    Builder Pattern,是 Java 常用的设计模式之一。它提供了一种将多个简单对象一步步构建成一个复杂对象的能力。

    FoamValue
  • 「拥抱开源」从零开始 Docker、Mysql & JPA

    为了降低项目成本,我们有一套完整的 MySQL 开源社区版集群。希望能在低成本的基础上,带来期望的收益。

    FoamValue
  • JAVA学习绘图颜色及其笔画属性设置字体显示文字

    package com.graphics; import java.awt.*; import java.awt.geom.Rectangle2D; impo...

    别先生
  • 领域驱动系列五模型驱动设计的构造块

    为了保证软件实现的简洁性,并且与模型保持一致,不管实际情况有多复杂,必须使用建模和设计的最佳实践,即让通过我们的编程技术(设计模型、指责驱动、契约式设计)充分地...

    郑小超.
  • C#:DataTable映射成Model

    这是数据库开发中经常遇到的问题,当然,这可以用现成的ORM框架来解决,但有些时候,如果DataSet/DataTable是第三方接口返回的,ORM就不方便了,还...

    菩提树下的杨过
  • socket 通信 多线程调用窗体(委托)的几个知识点,记录在案,以备查阅

    1.socket 通信传输汉字的方法:Encoding.GetEncoding("GB2312").GetString(Receivebyte) 发送接收都这样...

    hbbliyong
  • android之stub使用介绍

    但是一个类从业务来说,可能只需要其中一两个方法。如果直接去实现这个接口,除了实现所需的方法,还要实现其他所有的无关方法。而如果通过继承存根类就实现接口,就免去了...

    李小白是一只喵
  • Shiro安全框架【快速入门】就这一篇!

    简而言之,Apache Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证、授权、加密和会话管理。

    我没有三颗心脏
  • Java单体应用 - 架构模式 - 03.设计模式-05.原型模式

    原文地址:http://www.work100.net/training/monolithic-architecture-design-patterns-pro...

    光束云

扫码关注云+社区

领取腾讯云代金券