导言
微服务架构中,服务治理是至关重要的,它通过服务注册与发现机制,使得微服务可以自动注册和发现其他服务,从而简化了服务间的调用与管理。本文将详细介绍服务治理的核心概念及其在 Nacos 平台中的实现。
1. 服务治理概述
服务治理 是微服务架构的核心,用于管理服务的注册与发现。其主要功能包括:
- 服务注册:微服务向注册中心登记其信息,注册中心保存所有服务的详细信息并定期检测服务的可用性。
- 服务发现:服务消费者从注册中心获取服务实例清单,从而实现对具体服务的访问。
在微服务架构中,服务注册中心作为一个协调者,起着关键作用,帮助管理服务的健康状态和可用性。
2. 常见的服务注册中心
目前市场上常见的服务注册中心有以下几种:
Zookeeper:主要用于分布式应用的数据管理,如集群管理和统一命名服务等。
Eureka:Spring Cloud Netflix 组件之一,专注于服务注册与发现(已闭源)。
Consul:基于 GO 语言开发,提供服务注册、服务发现、健康检查等功能。
Nacos:Spring Cloud Alibaba 组件之一,集服务发现、配置管理、服务元数据等功能于一体。
3. Nacos 简介与核心功能
Nacos 是一个动态服务发现、配置管理和服务管理平台,提供了丰富的功能集来支持微服务架构的构建。其核心功能包括:
服务注册:通过 REST 请求将服务信息注册到 Nacos Server。
服务心跳:定期向 Nacos Server 发送心跳,确保服务处于可用状态。
服务同步:Nacos Server 集群间相互同步服务实例,确保一致性。
服务发现:服务消费者通过 REST 请求获取注册服务清单。
服务健康检查:定期检查服务实例的健康状态,并根据心跳情况调整服务清单。
4. Nacos 实战入门
4.1 环境搭建
安装 Nacos 下载地址: Nacos Releases 解压后进入 nacos/bin
目录,执行命令 startup.cmd -m standalone
启动 Nacos。
访问 Nacos 浏览器访问 http://localhost:8848/nacos
,默认登录账户为 nacos/nacos
。
4.2 服务注册到 Nacos
4.2.1 商品服务注册
在 shop-product-server
模块的 pom.xml
中添加 Nacos 依赖:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
在 application.yml
中配置 Nacos 服务器地址:
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
启动服务,检查 Nacos 控制台是否显示注册的商品服务。
4.2.2 订单服务注册
在 shop-order-server
模块的 pom.xml
中添加 Nacos 依赖,配置类似于商品服务。
修改 OrderServiceImpl
,实现服务调用:
@Service
@Slf4j
public class OrderServiceImpl implements OrderService {
@Autowired
private OrderDao orderDao;
@Autowired
private DiscoveryClient discoveryClient;
@Autowired
private RestTemplate restTemplate;
@Override
public Order createOrder(Long productId, Long userId) {
log.info("接收到{}号商品的下单请求, 接下来调用商品微服务查询此商品信息", productId);
ServiceInstance instance = discoveryClient.getInstances("product-service").get(0);
String url = instance.getHost() + ":" + instance.getPort();
Product product = restTemplate.getForObject("http://" + url + "/product/get?pid=" + productId, Product.class);
log.info("查询到{}号商品的信息, 内容是: {}", productId, JSON.toJSONString(product));
Order order = new Order();
order.setUid(userId);
order.setUsername("用户");
order.setPid(productId);
order.setPname(product.getPname());
order.setPprice(product.getPprice());
order.setNumber(1);
orderDao.save(order);
log.info("创建订单成功, 订单信息为{}", JSON.toJSONString(order));
return order;
}
}
启动订单服务,检查 Nacos 控制台是否显示注册的订单服务。
总结
本文介绍了服务治理的基本概念及其在 Nacos 中的实现,通过详细的步骤指导,帮助读者快速入门 Nacos 服务注册与发现。希望这些内容能为微服务架构的实践提供实用的参考。
推荐阅读:
标签:product,服务,入门,Nacos,nacos,注册,order,Discovery From: https://blog.csdn.net/m0_62993574/article/details/141228342