SpringCloud微服务实践1|Eureka实践,nacos实践,Ribbon实践

一:服务远程调用

1.任务:

在order里远程调用user.(order对user发起请求)

2.实现步骤:

step1:在order的启动类OrderApplication里注册RestTemplate

创建RestTemplate并注入Spring容器

step2:修改查询方法,使用RestTemplate远程调用服务user

如下代码:

url:前面是IP和端口,后面是user的请求参数: “/user”,在user服务里可以看到,其接受响应的路径参数为: “/user”

 二:Eureka实践

1.搭建Eureka注册中心

step1:新建eurka-server模块

引入maven

step2:引入eurka依赖

在该项目的xml文件中引入eurka依赖

不需要指定版本,因为在父工程(cloud-demo)的xml文件中已经指定好了(同springboot)

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

step3:编写启动类(main函数),添加@EnableEurekaServer注解

注意启动类的位置

(feign与gateway的位置也一样)

public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

step4:添加application.yml文件,编写配置--用于服务注册

在resource包下创建yml文件---用于服务注册--自己注册到自己上

关于为什么要配置eureka的地址信息?

eureka也是一个服务,其同order和user一样在父工程下的一个服务(功能)。其是注册中心,也要配置端口号和请求路径(http://127.0.0.1:10086/eureka),将自身注册进去。

注意:eureka是服务,且承担大量服务的注册和发现操作。其非常关键。因此同重要数据一样,多级备份。不同区域,同一区域多台。

server:
  port: 10086 # 服务端口
spring:
  application:
    name: eurekaserver # eureka的服务名称
eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

eureka的UI界面

浏览器输入地址信息http://127.0.0.1:10086,即可跳转eureka的UI界面。便于查看当前注册中心管理的各个服务情况

2.服务注册

Step1:引入依赖

<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

step2:添加服务注册的配置

eureka:
  client:
    service-url:  # eureka的地址信息
      defaultZone: http://127.0.0.1:10086/eureka

注册多个实例:

添加  应用程序  服务(不是Java草稿)

然后右键复制配置,看弹幕,编辑配置,允许多个实例,修改原yml文件中的端口号,重新运行,即可实现。

10-Eureka-服务注册_哔哩哔哩_bilibili

IDEA 2023.2新版如何将同一个项目开启多个,模拟集群环境_idea同一个项目打开两个窗口-CSDN博客

3.服务发现

Step1:orderservice里的访问路径url, 服务名替换原来的IP端口

原来:

现在:

Step2:添加负载均衡注解--多个实例“平衡分担请求(流量)”

@Bean 是注册RestTemplate,创建bean对象,交给IOC容器管理

4.总结

三:Ribbon实践--调整负载均衡策略

通过IRule接口 选择某个服务实例----IRule接口的实现类,是不同的负载均衡策略通过修改其参数可以实现不同的策略

1.调整负载均衡策略

方法一:启动类定义新的Irule

方法二:配置文件中定义规则

userservice:
  ribbon:
    NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule  # 负载均衡规则

2.饥饿加载

ribbon:
  eager-load:
    enabled: true # 开启饥饿加载
    clients: # 指定饥饿加载的服务名称
      - userservice

四:nacos实践--注册中心与配置管理

1.注册中心(服务中心)

1.1 认识安装nacos

(1)启动

bin目录打开,输入: .\startup.cmd -m standalone

(2)打开UI界面

点如下连接,跳转页面,账号密码都是nacos

1.2 服务注册

将order服务与user服务注册到nacos里

1.3 添加服务集群属性

配置文件加属性

1.4 将负载均衡策略调整为:集群优先

配置文件加参数

1.5 将负载均衡策略调整为:权重优先

nacos控制台操作

(权重大不是一定调用权重大的,还是具有随机性,同线程的优先级)

1.6 配置环境隔离

给那个服务添加环境隔离属性,就修改其配置

1.7 设置 临时实例属性

修改文件配置

2.统一配置管理

目标:服务A远程调用B,B调用C,.....,

在服务集群很大时,这个远程调用链路几十上百个

而当我们在:修改服务A的某个配置时,就可能需要修改它调用的服务的配置。而一个一个地去找这些服务并修改配置是繁琐地。

nacos统一配置管理:

step1:

nacos界面(控制台):对服务A建立一个配置文件yaml,把常变的一些配置  放进  这个配置文件中。实现被调用服务的热更新。

step2:

在服务A里:(1)引入nacos统一配置管理依赖

(2)在配置文件里添加:识别nacos控制台新建的配置文件yaml。

step1:新建配置文件---nacos控制台操作

对需要统一配置管理的服务新建配置文件---nacos控制台操作

step2: 对需统一配置管理的服务引入依赖+添加新配置文件

step3: 配置热更新

springboot里:属性配置两种方式:

(1)@value

(2)@ConfigurationProperties

配置属性的热更新同样在这两种方法上修改

(1)@value方法配置的属性

这个变量在服务user的那个类里,就在这个类上上添加@RefreshScope注解

(2)@ConfigurationProperties配置的属性

@ConfigurationProperties(prefix = "pattern")

关于属性:prefix

本实验中:@ConfigurationProperties(prefix = "pattern")

所有配置文件含

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值