超级马里奥兄弟,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 基本的核心功能都已经完备,也有成功的生产案例。
让我们下周再见。?
这个周末,又一次成功“强迫”自己学习。
感谢各位小伙伴的阅读,这里是一个技术人的学习与分享。