余姚网站建设62752762,wordpress feedsky,如何建立公司网站模块,科技教育司1 服务治理介绍 先来思考一个问题 通过上一章的操作#xff0c;我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 #xff08;ip#xff0c;端口#xff09;等硬编码到了代码中#xff0c;这种做法存在许多问题#xff1a;
一旦服务提供者地址变化我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 ip端口等硬编码到了代码中这种做法存在许多问题
一旦服务提供者地址变化就需要手工修改代码一旦是多个服务提供者无法实现负载均衡功能一旦服务变得越来越多人工维护调用关系困难
那么应该怎么解决呢 这时候就需要通过注册中心动态的实现服务治理。 什么是服务治理 服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。 服务注册在服务治理框架中都会构建一个注册中心每个服务单元向注册中心登记自己提供服 务的详细信息。并在注册中心形成一张服务的清单服务注册中心需要以心跳的方式去监测清单中 的服务是否可用如果不可用需要在服务清单中剔除不可用的服务。 log.info(商品信息,查询结果: JSON.toJSONString(product)); Order order new Order(); order.setUid(1); order.setUsername(测试用户); order.setPid(product.getPid()); order.setPname(product.getPname()); order.setPprice(product.getPprice()); order.setNumber(1); orderService.save(order); return order; } } 服务发现服务调用方向服务注册中心咨询服务并获取所有服务的实例清单实现对具体服务实 例的访问。 通过上面的调用图会发现除了微服务还有一个组件是服务注册中心它是微服务架构非常重要的一个组件在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能1. 服务发现 服务注册保存服务提供者和服务调用者的信息 服务订阅服务调用者订阅服务提供者的信息注册中心向订阅者推送提供者的信息2. 服务配置 配置订阅服务提供者和服务调用者订阅微服务相关的配置 配置下发主动将配置推送给服务提供者和服务调用者3. 服务健康检测 检测服务提供者的健康情况如果发现异常执行服务剔除 常见的注册中心
Zookeeper
zookeeper是一个分布式服务框架是Apache Hadoop 的一个子项目它主要是用来解决分布式 应用中经常遇到的一些数据管理问题如统一命名服务、状态同步服务、集群管理、分布式应用 配置项的管理等。
Eureka
Eureka是Springcloud Netflix中的重要组件主要作用就是做服务注册和发现。但是现在已经闭 源
Consul
Consul是基于GO语言开发的开源工具主要面向分布式服务化的系统提供服务注册、服务发现 和配置管理的功能。Consul的功能都很实用其中包括服务注册/发现、健康检查、Key/Value 存储、多数据中心和分布式一致性保证等特性。Consul本身只是一个二进制的可执行文件所以 安装和部署都非常简单只需要从官网下载后在执行对应的启动脚本即可。
Nacos
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它是 Spring Cloud Alibaba 组件之一负责服务注册发现和服务配置可以这样认为nacoseurekaconfig。
2 nacos简介
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 从上面的介绍就可以看出nacos的作用就是一个注册中心用来管理注册上来的各个微服务。
3 nacos实战入门 接下来我们就在现有的环境中加入nacos并将我们的两个微服务注册上去。
3.1 搭建nacos环境
第1步: 安装nacos
下载地址: https://github.com/alibaba/nacos/releases
下载zip格式的安装包然后进行解压缩操作
第2步: 启动nacos
#切换目录
cd nacos/bin
#命令启动
startup.cmd -m standalone
第3步: 访问nacos
打开浏览器输入http://localhost:8848/nacos即可访问服务 默认密码是nacos/nacos 3.2 将商品微服务注册到nacos
接下来开始修改 shop-product 模块的代码 将其注册到nacos服务上 1 在pom.xml中添加nacos的依赖
!--nacos客户端--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency
2 在主类上添加EnableDiscoveryClient注解
SpringBootApplication
EnableDiscoveryClient
public class ProductApplication
3 在application.yml中添加nacos服务的地址
spring:
cloud:nacos:discovery:server-addr: 127.0.0.1:8848
4 启动服务 观察nacos的控制面板中是否有注册上来的商品微服务 3.3 将订单微服务注册到nacos
接下来开始修改 shop_order 模块的代码 将其注册到nacos服务上 1 在pom.xml中添加nacos的依赖
!--nacos客户端--
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency
2 在主类上添加EnableDiscoveryClient注解
SpringBootApplication
EnableDiscoveryClient
public class OrderApplication
3 在application.yml中添加nacos服务的地址
spring:
cloud:nacos:discovery:server-addr: 127.0.0.1:8848
4 修改OrderController 实现微服务调用
RestController
Slf4j
public class OrderController {Autowiredprivate RestTemplate restTemplate;Autowiredprivate OrderService orderService;Autowiredprivate DiscoveryClient discoveryClient;//准备买1件商品GetMapping(/order/prod/{pid})public Order order(PathVariable(pid) Integer pid) {log.info(客户下单这时候要调用商品微服务查询商品信息);//从nacos中获取服务地址ServiceInstance serviceInstance discoveryClient.getInstances(service-product).get(0);String url serviceInstance.getHost() :
serviceInstance.getPort();log.info(从nacos中获取到的微服务地址为: url);//通过restTemplate调用商品微服务Product product restTemplate.getForObject(http:// url /product/ pid, Product.class);log.info(商品信息,查询结果: JSON.toJSONString(product));Order order new Order();order.setUid(1);order.setUsername(测试用户);order.setPid(product.getPid());order.setPname(product.getPname());order.setPprice(product.getPprice());order.setNumber(1);orderService.save(order);return order;}
}
5 启动服务 观察nacos的控制面板中是否有注册上来的订单微服务然后通过访问消费者服务验证调用是否成功