SpringCloudAlibaba-服务治理Nacos
一:Nacos简介
Nacos致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
更多详情请移步官网(https://nacos.io/zh-cn/docs/quick-start.html)接下来我们就将上述环境中的product、order服务注册到nacos
二:Nacos环境搭建
2.1:安装nacos
下载地址: https://github.com/alibaba/nacos/releases 下载zip格式的安装包,然后进行解压缩操作
2.2:启动nacos
#切换目录 cd nacos/bin #命令启动 startup.cmd -m standalone
2.3:访问nacos
打开浏览器输入http://localhost:8848/nacos,即可访问服务, 默认密码是nacos/nacos如下图
三:将商品(shop-product)微服务注册到nacos
3.1:在pom.xml中添加nacos依赖
<!--nacos客户端--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
3.2:在启动类上添加@EnableDiscoveryClient注解
@SpringBootApplication @EnableDiscoveryClient //开启nacos注解 public class ProductApplication {·····}
3.3:在application.yml中添加nacos服务的地址
spring:
# 配置nacos信息
cloud:
nacos:
discovery:
server-addr: localhost:8848
3.4:启动商品服务查看nacos控制面板是否成功注册
四:注册shop-order微服务到nacos
和前面shop-product注册方法一致 故省略、成功后如下图
改造上篇博文中的下单过程(OrderController)
OrderController注入依赖
//专门负责服务注册和发现的,我们可以通过它获取到注册到注册中心的所有服务 @Autowired private DiscoveryClient discoveryClient;
调用示例(从nacos取商品服务信息)
@GetMapping("/prod/{pid}") public Order order2(@PathVariable("pid") Integer pid){ log.info(">>>客户下单,调用商品微服务查询商品信息<<<"); //从nacos中获取服务地址 获取的是个list集群信息 ServiceInstance instance = discoveryClient.getInstances("service-product").get(0); String url = instance.getHost() + ":" +instance.getPort(); log.info(">>从nacos中获取到的微服务地址为:" + url); Product product = restTemplate.getForObject("http://"+url+"/product/"+pid, Product.class); log.info(">>商品信息,查询结果:" + JSON.toJSONString(product)); Order order = new Order(); order.setUid(1); order.setUsername("测试用户1"); order.setPid(product.getPid()); order.setPname(product.getPname()); order.setPprice(product.getPprice()); order.setNumber(1); // orderService.save(order); return order; }
启动结果
作者:
不二尘
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。