Nacos Discovery–服务治理
服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。
服务注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服
务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中
的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。
使用Nacos (服务治理 配置中心)
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。它是 Spring
Cloud Alibaba 组件之一,负责服务注册发现和服务配置,可以这样认为nacos=eureka+config。
搭建nacos环境
启动自己的nacos
打开浏览器输入http://localhost:8848/nacos,即可访问服务, 默认密码是nacos/nacos
将微服务注册到nacos
将需要注册的微服务提供者注册到nacos上
1.这些提供者消费者都需要引入nacos依赖
<!--引入nacos服务注册中心依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.提供者消费者微服务配置文件application.yml
3.启动微服务
然后查看nacos服务注册中心
服务消费者调用服务提供者
将所有微服务都配置好后
通过调用DiscoveryClient 服务发现注册的getInstances方法
测试结果
负载均衡
负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上进行执行。
根据负载均衡发生位置的不同,一般分为 服务端负载均衡 和 客户端负载均衡 。
服务端负载均衡指的是发生在服务提供者一方,比如常见的nginx负载均衡
而客户端负载均衡指的是发生在服务请求的一方,也就是在发送请求之前已经选好了由哪个实例处理请求。
我们在微服务调用关系中一般会选择 客户端负载均衡 ,也就是在服务调用的一方来决定服务由哪个提供者执行。
实现客户端负载均衡
再启动一个 shop-product 微服务,设置其端口为8082
方法一 自定义随机策略
在调用其他微服务的地方修改源码
重启服务
浏览器测试观察控制台,发现会随机调用不同端口号的ProductApp服务
方法二 基于Ribbon实现负载均衡 —组件
在调用其他微服务的地方修改源码
可以在application.yml配置文件修改策略方式
shop-product: #服务名
ribbon:
NFloadBalancerRuleClassName: com.netfix.loadbalancer.RandomRule #使用随机负载均衡策略
重启服务即可
方法三 基于OpenFeign实现服务调用
消费者服务引入OpenFeign依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
创建一个Feign接口并加上@FeignClient注解
在主启动类上加入开启feign的注解
在调用其他微服务的地方修改源码
重启服务即可
使用eureka作为注册中心
Eureka是Netflix开发的服务发现框架
1.创建一个eureka服务端
引入eureka服务端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<!--引入web依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
书写application.yml配置文件
创建主启动类
启动服务
浏览器访问服务端
微服务注册eureka
引入eureka客户端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
修改application.yml配置文件
启动服务
然后去Eureka服务端查看是否注册成功