为什么要学习微服务框架

 
 
 
认识微服务
服务架构演变
单体架构

分布式架构

 
 
 
微服务结构

 
 
SrpingCloud
SpringCloud是目前国内使用最广泛的微服务框架。官网地址:https://spring.io/projects/spring-cloud。
 
 
服务拆分及远程调用
服务拆分注意事项

 
 
 
 我们查询的时候需要到另一个数据库查询username,我们只能通过向另一个服务发送请求的方式,来获得对应的响应
 
提供者与消费者
服务提供者:一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)
服务消费者:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口)
一个服务可以同时是服务提供者和服务消费者
Eureka注册中心
服务调用出现的问题

 
 
 
 
 
搭建EurekaServer
1.创建项目,引入spring-cloud-starter-netflix-eureka-server的依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency> 
2.编写启动类,添加@EnableEurekaServer注解
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}
 
3.添加application.yml文件,编写下面的配置:
server:
  port: 10086 #服务端口
spring:
  application:
    name: eurekaserver
eureka:
  client:
    service-url:  #eureka地址信息
      defaultZone: http://127.0.0.1:10086/eureka
 
 
编译器记得改成8版本的,1.8不支持!
运行后,直接点击端口就能打开

注册Eureka 服务
将user-service服务注册到EurekaServer步骤如下:
1.在user-service项目引入spring-cloud-starter-netflix-eureka-client的依赖
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency> 
2.在application.yml文件,编写下面的配置:
spring:
  application:
    name: userservice
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:10086/eureka/ 

 再启动后,实例就有两个了:
在order-service完成服务拉取
 
Ribbon 负载均衡
负载均衡原理

 
 

修改负载均衡规则

饥饿加载

 
Nacos注册中心

默认是8848端口
我们下载好nacos 在nacos的bin目录打开终端
输入startup.cmd -m standalone
浏览器打开:
http://192.168.219.1:8848/nacos/index.html#/login
默认账号密码都是nacos,直接登陆就可以了
服务注册到Nacos
1.在cloud-demo父工程中添加spring-cloud-alilbaba的管理依赖:
<dependency>   
    <groupId>com.alibaba.cloud</groupId>    
    <artifactId>spring-cloud-alibaba-dependencies</artifactId>
    <version>2.2.6.RELEASE</version>
    <type>pom</type>
    <scope>import</scope>
</dependency> 
2.注释掉order-service和user-service中原有的eureka依赖。
3.添加nacos的客户端依赖:
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency> 
 
然后启动服务就可以了
Nacos服务分级存储模型

服务跨集群调用问题
 
服务集群属性

直接配置集群名称了,运行另一个实例的时候修改集群,这样两个实例的集群都不一样
根据集群负载均衡

NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
优先选择本地集群,在本地集群的多个服务中,随机进行选择

根据权重负载均衡
实际部署中会出现这样的场景: 服务器设备性能有差异,部分实例所在机器性能较好,另一些较差,我们希望性能好的机器承担更多的用户请求 Nacos提供了权重配置来控制访问频率,权重越大则访问频率越高

 
可通过权重设置,进行无感知升级
环境隔离 - namespace
Nacos中服务存储和数据存储的最外层都是一个名为namespace的东西,用来做最外层隔离

 
 
 
 
Nacos注册中心原理

临时实例和非临时实例 
 
主动检测对服务器压力比较大,建议临时实例




![[飞腾]Trace32使用概述](https://img-blog.csdnimg.cn/img_convert/794d3d1c25f4b76e070a1e3cd201b0c5.png)














