我是靠谱客的博主 贪玩大炮,最近开发中收集的这篇文章主要介绍springCloud Alibaba教程-将nacos作为注册中心引入到微服务体系中来1 nacos安装启动2. 搭建两个微服务项目cloud-product和cloud-order项目,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1 nacos安装启动

下载地址:https://github.com/alibaba/nacos/releases, 这里选择的是2.0.4版本。下载以后解压。进入bin目录,启动命令:

cd bin
# 单机模式启动
./startup.sh -m standalone &

nacos启动以后默认访问地址为:ip:port/nacos, 初始登录账号和密码都是nacos

2. 搭建两个微服务项目cloud-product和cloud-order项目

基于上一篇文章搭建cloud-product和cloud-order两个服务。复制两个cloud-user工程修改必要的配置数据使其成为新的微服务cloud-product和cloud-order,并编写一个模拟生成订单的接口。
要引入nacos,需要在新建的cloud-product和cloud-order的pom文件中引入相关依赖:

<!--
nacos discovery
-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

在naocs依赖的新版本里去掉了ribbon,所以想要使用负载均衡策略进行接口访问的话需要引入loadbalancer依赖:

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>

在application.yml文件中增加nacos注册中心的配置:

spring:
cloud:
nacos:
discovery:
enabled: true
server-addr: 127.0.0.1:8848
namespace: dev

2.1 cloud-product服务编写一个查询产品的接口

@RestController
@RequestMapping("/product")
public class ProductController {
@Autowired
private ProductService productService;
@GetMapping("/{pid}")
public ProductDTO product(@PathVariable("pid") Long pid) {
log.info("product pid:{}", pid);
ProductDTO productDTO = new ProductDTO();
productDTO.setId(pid);
productDTO.setPprice(BigDecimal.valueOf(100));
productDTO.setPname("热销产品-tes");
return productDTO;
}
}

启动两个cloud-product服务实例,idea要启动两个cloud-product实例需要改端口:
在这里插入图片描述
启动以后登录nacos后台http://localhost:8848/nacos, 登陆naocs后台就能看到cloud-product注册了两个实例:在这里插入图片描述

2.2 cloud-order接口编写

RestTemplate bean初始化:

@Configuration
public class RestTemplateConfig {
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
}

订单下单接口被调用的时候要通过rpc调用cloud-product服务查询产品的接口,代码如下:

@Slf4j
@RestController
@RequestMapping("/order")
public class OrderController {
@Autowired
private RestTemplate restTemplate;
/**
* 购买一件商品: 引入注册中心; 使用ribbon
* @param pid
* @return
*/
@GetMapping("/prod-v3/{pid}")
public OrderDTO orderV3(@PathVariable("pid") Long pid) {
log.info(">>客户下单,这时候要调用商品微服务查询商品信息");
// 从nacos中获取实例地址
String url = "cloud-product-service";
String realUrl = "http://" + url + "/cloud-product-service/product/";
//通过restTemplate调用商品微服务
ProductVO product = restTemplate.getForObject(realUrl + pid, ProductVO.class);
log.info(">>从nacos中获取到的微服务地址为:" + url);
log.info(">>商品信息,查询结果:" + product);
OrderDTO order = new OrderDTO();
order.setId(IdWorker.getId());
order.setUid(1L);
order.setUsername("测试用户");
order.setPid(product.getId());
order.setPname(product.getPname());
order.setPprice(product.getPprice());
order.setQuantity(1);
// orderService.save(order);
log.info("下单成功:{}", order);
return order;
}
}

启动cloud-order服务,postman接口调用:
在这里插入图片描述
然后看cloud-product服务打印的日志,发现请求被均衡分摊了。
在这里插入图片描述
在这里插入图片描述

最后

以上就是贪玩大炮为你收集整理的springCloud Alibaba教程-将nacos作为注册中心引入到微服务体系中来1 nacos安装启动2. 搭建两个微服务项目cloud-product和cloud-order项目的全部内容,希望文章能够帮你解决springCloud Alibaba教程-将nacos作为注册中心引入到微服务体系中来1 nacos安装启动2. 搭建两个微服务项目cloud-product和cloud-order项目所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部