其他分享
首页 > 其他分享> > springCloud架构简述及Eureka、Nacos注册中心应用入门

springCloud架构简述及Eureka、Nacos注册中心应用入门

作者:互联网

一、微服务架构(持续集成)

 

二、微服务知识模块

三、微服务特征

1.单一职责:拆分粒度小,对应业务能力唯一,避免重复开发

2.面向服务:微服务对外暴露业务接口

3.自治:团队独立、技术独立、数据独立、部署独立

4.隔离性强:服务调用做好隔离、容错、降级,比卖你出现级联问题

缺点:架构复杂,运维监控,部署难度大

四、SpringCloud与SpringBoot的版本兼容关系

五、服务远程调用

1、向容器中注入RestTemplate对象

@Bean
public RestTemplate restTemplate(){
    return new RestTemplate();
}

2、调用 restTmplate的接口发送http请求

@Autowired
private RestTemplate restTemplate;
​
@GetMapping("{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
     // 根据id查询订单并返回
     Order order = orderService.queryOrderById(orderId);
    // 发送http请求,需要请求的准确路径和返回值的类型
     User user = restTemplate.getForObject( 、// 方法视实际情况而定
             "http://localhost:8081/user/" 
                     + order.getUserId(), User.class);
     order.setUser(user);
     return order;
}

3、服务提供者

被调用的微服务(提供接口)

4、服务消费者

调用其他微服务(调用接口)

5、消费与调用是相对的

六、eureka注册中心简介

微服务分类:

七、Eureka实现流程

1、搭建EurekaServer

<!--eureka服务端-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
server:
  port: 10086
spring:
  application:
    name: eureka-server
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka

2、服务注册

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
spring:
  application:
    name: userservice  #微服务名称
eureka:
  client:
    service-url: 
      defaultZone: http://127.0.0.1:10086/eureka/ # 远程调用地址

3、服务发现

@GetMapping("{orderId}")
public Order queryOrderByUserId(@PathVariable("orderId") Long orderId) {
    // 根据id查询订单并返回
    Order order = orderService.queryOrderById(orderId);
    User user = restTemplate.getForObject(
            "http://userserver/user/"
                    + order.getUserId(), User.class);
    order.setUser(user);
    return order;
}

七、负载均衡流程

 

 

八、负载均衡策略

1、继承关系

2、策略概览

内置负载均衡规则类规则描述
RoundRobinRule 简单轮询服务列表来选择服务器。
AvailabilityFilteringRule 对以下两种服务器进行忽略: (1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为“短路”状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。 (2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数的上限,可以由客户端的<clientName>.<clientConfigNameSpace>.ActiveConnectionsLimit属性进行配置。
WeightedResponseTimeRule 为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。
ZoneAvoidanceRule 以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。
BestAvailableRule 忽略那些短路的服务器,并选择并发数较低的服务器。
RandomRule 随机选择一个可用的服务器。
RetryRule 重试机制的选择逻辑

3、策略配置

@Bean
public IRule randomRule(){
    return new RandomRule(); // 可以返回任意IRule的实现类对象,来指定相应的均衡策略
}
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 负载均衡规则 

4、加载策略

ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients: userservice # 指定策略对userservice生效(多个服务以数组形式添加)

九、Nacos注册中心简介

Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。(默认端口:8848)

十、Nacos注册

<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>
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
spring:
  cloud:
    nacos:
      server-addr: localhost:8848
userservice: # 给某个微服务配置负载均衡规则,这里是userservice服务
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule 
    # 负载均衡规则,同集群优先

十一、Nacos集群配置

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ # 集群名称
        
# -Dserver.port=8083 -Dspring.cloud.nacos.discovery.cluster-name=SH 启动时指定集群

十二、Nacos权重负载均衡

访问概率与权重成正比,可以用作服务升级(权重为0,则不访问)

十三、nameSpace名称空间

spring:
  cloud:
    nacos:
      server-addr: localhost:8848
      discovery:
        cluster-name: HZ
        namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID

十四、Nacos注册中心原理

 

spring:
  cloud:
    nacos:
      discovery:
        ephemeral: false # 设置为非临时实例

标签:服务,springCloud,Nacos,Eureka,nacos,spring,服务器,cloud
来源: https://www.cnblogs.com/stare-of-the-dog/p/16629967.html