超级马里奥兄弟,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
增加启用服务发现注解。
@EnableDiscoveryClientpublic class Application {
4. EchoController.java
假装提供一个分布式服务,即一个 Get 的请求链接。
@RestControllerpublic 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
增加启用服务发现注解。
@EnableDiscoveryClientpublic class Application { @LoadBalanced @Bean public RestTemplate restTemplate() { return new RestTemplate(); }
4.HomeController.java
假装提供一个分布式服务,即一个 Get 的请求链接。
@Controllerprivate 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 基本的核心功能都已经完备,也有成功的生产案例。
让我们下周再见。?
这个周末,又一次成功“强迫”自己学习。
感谢各位小伙伴的阅读,这里是一个技术人的学习与分享。