1.什么是服务治理
服务治理是微服务框架中最核心最基本的模块,用于实现各个微服务之间的自动注册和发现
自动注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息 ,并在注册中心形成一张注册清单,服务注册中心需要以心跳的方式去检测清单中的服务是否可用,如果不可用,需要在清单中剔除。
**服务发现:**服务调用方向注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实例的访问。
2.常见的注册中心
2.1 Erueka
2.2 Zookeeoer
2.3 Consul
2.4 Nacos

Nacos

nacos概述:nacos致力于帮助你发现,配置和管理微服务,nacos提供了一组简单易用的特性集,帮助你快速实现动态服务发现,服务配置,服务元数据及流量管理。由此可以看出nacos的作用就是一个注册中心,用来管理注册上来的各个微服务。

使用nacos

1.安装nacos服务器。

微服务架构服务治理组件 微服务治理框架_微服务


2.解压

微服务架构服务治理组件 微服务治理框架_微服务架构服务治理组件_02


3.启动

微服务架构服务治理组件 微服务治理框架_微服务架构服务治理组件_03


4.访问nacos服务器

微服务架构服务治理组件 微服务治理框架_微服务架构服务治理组件_04


用户名和密码都是nacos。

把微服务注册到注册中心
1.引入相关的jar文件,放到微服务的pom.xml

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

2.再配置文件中配置nacos服务器的地址

spring:
cloud:
  nacos:
    discovery:
      server-addr: localhost:8848

3.在主启动类上添加nacos的开启注解

微服务架构服务治理组件 微服务治理框架_服务调用_05


4.重新启动该微服务

5.查看nacos服务器是否存在该服

微服务架构服务治理组件 微服务治理框架_服务调用_06


6.修改shop-Order的控制层代码

微服务架构服务治理组件 微服务治理框架_微服务_07

实现服务调用的负载均衡

什么是负载均衡

通俗的讲,负载均衡就是将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上进行执行。

根据负载均衡发生位置的不同,一般分为服务端的负载均衡和客户端的负载均衡。

服务端负载均衡指的是发生在服务提供者一方,比如常见的nginx负载均衡 ,而客户端的负载均衡指的是发生在服务请求的一方也就是发送请求之前已经选好了有哪个实例处理请求

微服务架构服务治理组件 微服务治理框架_java_08


自定义负载均衡—>随机的:

微服务架构服务治理组件 微服务治理框架_微服务架构服务治理组件_09


为了有集群的效果我们需要启动两台shop-product微服务

微服务架构服务治理组件 微服务治理框架_java_10


微服务架构服务治理组件 微服务治理框架_服务调用_11


基于Ribbon实现负载均衡

1.什么是ribbon:

是 Netflix 发布的一个负载均衡器,有助于控制 HTTP 和 TCP客户端行为。在 SpringCloud 中, nacos一般配合Ribbon进行使用,Ribbon提供了客户端负载均衡的功能,Ribbon利用从nacos中读 取到的服务信息,在调用服务节点提供的服务时,会合理的进行负载。 在SpringCloud中可以将注册中心和Ribbon配合使用,Ribbon自动的从注册中心中获取服务提供者的 列表信息,并基于内置的负载均衡算法,请求服务。

2.Ribbon的主要作用

(1)服务调用

基于ribbon 实现服务调用,是通过拉取所有的服务列表组成(服务名-请求路径的)映射关系,借助restTemplate最终进行调用

(2)负载均衡

当有多个服务调用者时,ribbon可以根据负载均衡的算法自动选择需要调用的服务地址,ribbon是soringclound的一个组件它可以让我们使用一个注解就能轻松搞定负载均衡

3.ribbon实现负载均衡的步骤

3.1 再得到restTemplate上加一个注解@LoadBalanced

微服务架构服务治理组件 微服务治理框架_java_12


2.修改OrderController代码

微服务架构服务治理组件 微服务治理框架_java_13


3.修改负载均衡的策略。

shop-product:  # 这里使用服务的名称
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #使用的的负载均衡策略

缺点:
1.代码可读性较差
2.编码风格不一样

基于OpenFeign实现服务调用
1.什么是Feign
Feign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。
Nacos很好的兼容了Feign, Feign默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负载均衡的效果。

2.如何使用feign
2.1.Order引入相关的jar文件

<!--feign的jar文件 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

2.2.再主启动类上加入一个注解 开启feign

微服务架构服务治理组件 微服务治理框架_微服务架构服务治理组件_14


2.3.创建一个接口并加入feign的注解

微服务架构服务治理组件 微服务治理框架_java_15


2.4.修改OrderController代码

微服务架构服务治理组件 微服务治理框架_java_16