IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> SpringCloud netfilx 使用 -> 正文阅读

[Java知识库]SpringCloud netfilx 使用

目录

SpringCloud 套餐介绍

实操

1.创建注册中心 demo-registy (Eureka-server框架)

2.创建第一个服务提供者 demo-provider

3.创建第二个服务提供者 demo-provider2

4.创建服务消费者 demo-consumer

5. 调用远程服务

5.1 方法一:使用 RestTemplate 工具类调用

5.2 方式二:使用服务消费 Fegin 框架


SpringCloud 套餐介绍

  • springcloud 有两个主流的套餐

套餐1:netfilx(这是一家公司的名称,网飞、奈飞):springcloud netfilx 这就是netfilx这家公司提供的一套微服务解决方案,这套解决方案有很多技术,技术1 注册中心 Eurake,技术2负载均衡Ribbon 等等

套餐2:阿里巴巴的 springcloud alibaba

实操

  • 操作流程

    1.新建一个空项目

    2.在这个空项目下,新建4个模块,一个注册中心,两个服务提供者,一个服务消费者

  • 这里使用的是 springcloud netfilx

1.创建注册中心 demo-registy (Eureka-server框架)

1.1 导入依赖

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

1.2 配置注册中心 application.properties

# 应用名称
spring.application.name=demo-registry
# 应用服务 WEB 访问端口,官网默认端口8761,随意改
server.port=8761
?
# 是否注册到注册中心,因为此项目本身就是注册中心,所以不用注册到注册中心,所以配置为false,这里默认配置是 ture 的
eureka.client.register-with-eureka=false
?
# 是否允许从注册中心拉取服务,但是此项目本身就是注册中心,所以配置为false
eureka.client.fetch-registry=false
?
# 配置的注册中心的注册地址,本身就是注册中心,下面这段可以不写,因为源码里就有这个默认值
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

1.3 在启动类上加注解 @EnableEurekaServer

@SpringBootApplication
@EnableEurekaServer ?//允许当前项目以注册中心的身份启动
public class DemoRegistryApplication {
?
 ? ?public static void main(String[] args) {
 ? ? ? ?SpringApplication.run(DemoRegistryApplication.class, args);
 ?  }
?
}

2.创建第一个服务提供者 demo-provider

2.1 导入依赖

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

2.2 配置注册到服务中心 application.properties

# 应用名称
spring.application.name=demo-provider
# 应用服务 WEB 访问端口
server.port=8081
?
# 因为此项目是服务提供者,需要把服务注册到注册中心,所以配置为true,这里默认是true的
eureka.client.register-with-eureka=true
?
# 允许从注册中心拉去服务,此项目是服务提供者,所以配置true,这里默认是true的
eureka.client.fetch-registry=true
?
# 配置的注册中心的注册地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

2.3 在启动类上加注解 @EnableEurekaClient

@SpringBootApplication
@EnableEurekaClient ?//服务提供者身份启动
public class DemoProviderApplication {
?
 ? ?public static void main(String[] args) {
 ? ? ? ?SpringApplication.run(DemoProviderApplication.class, args);
 ?  }
 ?
}

2.4 编写一个接口

@RestController
@RequestMapping("/provider")
public class ProviderController {
?
 ? ?@RequestMapping("/demo")
 ? ?public String demo(){
 ? ? ? ?return "服务提供者1";
 ?  }
?
}
  • 启动项目,访问 http://localhost:8761 ,可以看到 demo-provider 服务注册到注册中心,说明创建服务者成功

3.创建第二个服务提供者 demo-provider2

3.1 再建一个项目 demo-provider2,服务名还是叫 demo-provider

  • 所有的配置跟 demo-provider 一样,接口名也一样,内容改一改,除了端口号

? ? ? ? ? ? ? ? ? ? ? ??

3.2 配置 application.properties

? ? ? ? ? ??

3.3 编写 controller,除了内容不一样,接口名什么的都跟 demo-provider 一样

? ? ? ? ? ?

  • 启动 demo-provider2 项目,访问 http://localhost:8761 ,可以看到服务名为 demo-provider 有两个服务

? ? ? ? ? ?

4.创建服务消费者 demo-consumer

4.1 导入依赖

 ? ? ? ?<dependency>
 ? ? ? ? ? ?<groupId>org.springframework.boot</groupId>
 ? ? ? ? ? ?<artifactId>spring-boot-starter-web</artifactId>
 ? ? ? ?</dependency>
?
 ? ? ? ?<!-- 发现服务提供者需要的包 -->
 ? ? ? ?<dependency>
 ? ? ? ? ? ?<groupId>org.springframework.cloud</groupId>
 ? ? ? ? ? ?<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
 ? ? ? ?</dependency>
?
 ? ? ? ?<!-- 注册到注册中心需要的包 -->
 ? ? ? ?<dependency>
 ? ? ? ? ? ?<groupId>org.springframework.cloud</groupId>
 ? ? ? ? ? ?<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
 ? ? ? ?</dependency>
?

4.2 配置注册到服务中心 application.properties

# 应用名称
spring.application.name=demo-consumer
# 应用服务 WEB 访问端口
server.port=8082
?
# 因为此项目是服务消费者,需要注册到注册中心,配置为 true,这里默认是 true 
eureka.client.register-with-eureka=true
?
# 允许从注册中心拉去信息,此项目是服务消费者,所以配置true,这里默认是 true
eureka.client.fetch-registry=true
?
# 配置的注册中心的注册地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

4.3在启动类上加注解 @EnableDiscoveryClient

@SpringBootApplication
@EnableDiscoveryClient ? //服务消费者身份启动
public class DemoConsumerApplication {
?
 ? ?public static void main(String[] args) {
 ? ? ? ?SpringApplication.run(DemoConsumerApplication.class, args);
 ?  }
?
}

4.4编写一个接口,远程调用服务消费者提供的服务

5. 调用远程服务

5.1 方法一:使用 RestTemplate 工具类调用

  • RestTemplate 调用方式默认是支持复制均衡(它支持负载均衡的框架是 Ribbon,默认是加入了Ribbon,Ribbon是实现负载均衡的框架)

Ribbon与Nginx的负载均衡的区别:

  • Nginx主要是做服务器直接的负载均衡,可以做静态资源负载均衡

  • Ribbon是代码级别的负载均衡,这个职责单一

5.1.1 编写 RestTemplateConfig

@Configuration
public class RestTemplateConfig {
?
 ? ?@Bean //将当前方法创建的 Bean 交给 spring 管理
 ? ?@LoadBalanced //支持负载均衡
 ? ?public RestTemplate restTemplate(){
 ? ? ? ?RestTemplate template = new RestTemplate();
 ? ? ? ?return template;
 ?  }
?
}

5.1.2 编写 controller

@RestController
@RequestMapping("/consunmer")
public class Demo {
?
 ? ?@Autowired
 ? ?private RestTemplate template;
?
 ? ?@RequestMapping("/getData")
 ? ?public String test(){
        //参数1:请求地址
 ? ? ? ?//参数2:响应返回值
 ? ? ? ?//参数3:请求参数
 ? ?    // 服务提供者那边接口没有参数,所有这里也不用写
 ? ? ? ?String object = template.getForObject("http://demo-provider/provider/demo", String.class);
?
 ? ? ? ?return object;
 ?  }
?
}
  • 从上可以看到,请求地址 http://demo-provider/provider/demo ,这里是通过服务名 demo-provider 来调用里面的接口。这里默认就是支持负载均衡的。我们再建一个 demo-provider 服务来测试负载均衡。

5.2 方式二:使用服务消费 Fegin 框架

  • Fegin 框架封装了 RestTemplate 完成服务消费功能,以更加简洁的方式来消费服务提供者

5.2.1 导入依赖

 ? ? ? ?<dependency>
 ? ? ? ? ? ?<groupId>org.springframework.cloud</groupId>
 ? ? ? ? ? ?<artifactId>spring-cloud-starter-feign</artifactId>
 ? ? ? ? ? ?<version>1.4.7.RELEASE</version>
 ? ? ? ?</dependency>

5.2.2 配置启动类 @EnableFeignClients

@SpringBootApplication
@EnableDiscoveryClient ? //服务消费者身份启动
@EnableFeignClients ? ? //开启 Feign 进行服务调用
public class DemoConsumerApplication {
?
 ? ?public static void main(String[] args) {
 ? ? ? ?SpringApplication.run(DemoConsumerApplication.class, args);
 ?  }
?
}

5.2.3 使用 Feign,需要写一个接口 PrviderServier

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
?
@FeignClient("demo-provider") ?//参数配置是服务提供者的服务名称
@RequestMapping("/provider")
public interface ProviderService {
?
 ? ?@RequestMapping("/demo")
 ? ?public String demo();
?
}

5.2.4 编写 controller

@RestController
@RequestMapping("/consumer")
public class Demo {
?
 ? ?// 方法一:使用 RestTemplate 工具类调用
 ? ?@Autowired
 ? ?private RestTemplate template;
?
 ? ?// 方法二:使用服务消费 Fegin 框架
 ? ?@Autowired
 ? ?private ProviderService providerService;
?
 ? ?// 方法一
 ? ?@RequestMapping("/getData")
 ? ?public String test(){
 ? ? ? ?//参数1:请求地址
 ? ? ? ?//参数2:响应返回值
 ? ? ? ?//参数3:请求参数
 ? ? ? ?String object = template.getForObject("http://demo-provider/demo", String.class);
 ? ? ? ?System.out.println("调用:"+ object);
 ? ? ? ?return object;
 ?  }
?
 ? ?// 方法二:使用服务消费 Fegin 框架
 ? ?@RequestMapping("/getData2")
 ? ?public String test2(){
 ? ? ? ?String demo = providerService.demo();
 ? ? ? ?System.out.println("调用:" + demo);
 ? ? ? ?return demo;
 ?  }
?
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-09 18:09:53  更:2022-04-09 18:10:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:25:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码