框架 :springboot+springcloud+nacos+Feign
(1)个人理解
springboot:
1.Spring Boot简化了基于Spring的应用开发,单体服务
2.自动装配
3.约定大于配置
springcloud:
1.Spring Cloud是一系列框架的有序集合。
2.利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,
如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等
3.微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,
采用了微服务这种架构之后,项目的数量会非常多,Spring Cloud做为大管家就需要提供各种方案来维护整个生态。
4.Spring Cloud就是一套分布式服务治理的框架,既然它是一套服务治理的框架,
那么它本身不会提供具体功能性的操作,更专注于服务之间的通讯、熔断、监控等。
因此就需要很多的组件来支持一套功能。
springboot与springcloud关系
1.Spring Boot 是 Spring 的一套快速配置脚手架,可以基于Spring Boot 快速开发单个微服务,
Spring Cloud是一个基于Spring Boot实现的云应用开发工具;
2.Spring Boot专注于快速、方便集成的单个微服务个体,Spring Cloud关注全局的服务治理框架;
3.Spring Boot使用了默认大于配置的理念,很多集成方案已经帮你选择好了,
能不配置就不配置,Spring Cloud很大的一部分是基于Spring Boot来实现;
4.Spring Boot可以离开Spring Cloud独立使用开发项目,但是Spring Cloud离不开Spring Boot,属于依赖的关系。
(2) 快速开始
运用springboot框架开发的是单体服务,运用springcloud+springboot开发才算是微服务,即有多个单体服务进行通信,运用springcloud来治理。
注册中心
解决了服务之间的自动发现。在没有注册中心时候,服务间调用需要知道被调方的地址或者代理地址。当服务更换部署地址,就不得不修改调用当中指定的地址或者修改代理配置。
而有了注册中心之后,每个服务在调用别人的时候只需要知道服务名称就好,继续地址都会通过注册中心同步过来。
下载nacos并启动
参考:https://nacos.io/zh-cn/docs/quick-start.html
访问
项目搭建
1.项目结构
2.nacos-provider配置pom.xml
注意(nacos与springboot版本不符时可能会报错,可以调换相应版本)
<properties>
<java.version>1.8</java.version>
<spring-boot.version>2.4.2</spring-boot.version>
<spring-cloud.version>2020.0.1</spring-cloud.version>
<spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${spring-cloud-alibaba.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<!-- spring boot 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud 依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- spring cloud alibaba 依赖-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
3.properties.properties配置文件
server.port=8002
nacos.config.server-addr=127.0.0.1:8848
spring.application.name=nacos-provider
myName=nacos
4.新建一个Controller层创建ProviderController类
/**
* @Description:
* @Author: lizq
* @date 2021/5/30 11:07
**/
@RestController
public class ProviderController {
@Value("${myName}")
private String name;
@GetMapping("hello")
public String hello(){
return "hello " + name;
}
5.NacosProviderApplication启动类上添加自动发现配置注解
@SpringBootApplication
@EnableDiscoveryClient
public class NacosProviderApplication {
public static void main(String[] args) {
SpringApplication.run(NacosProviderApplication.class, args);
}
}
6.启动类访问nacos页面
到这里就已经成功把服务注册进去了!
7.nacos-consumer服务配置
跟上面配置同操作
-
添加依赖:同生产者
-
在application.properties中配置nacos的服务名及服务地址:同生产者
-
在引导类(NacosConsumerApplication.java)中添加@EnableDiscoveryClient注解:同生产者
-
启动类访问nacos
8.nacos-consumer
1.ConsumerController类
/**
* @Description:
* @Author: lizq
* @date 2021/5/30 11:42
**/
@RestController
public class ConsumerController {
@Autowired
private ProviderFeign providerFeign;
@GetMapping("hi")
public String hi() {
return this.providerFeign.hellos();
}
}
2.ProviderFeign
@FeignClient("nacos-provider")
public interface ProviderFeign {
@RequestMapping("hello")
String hellos();
}
3.访问
到这里就实现了再nacos-consumer服务调用nacos-provider服务的功能!
总结
本章节通过搭建springcloud框架,实现了两个服务之间的通信!算是个快速入门! 下章节将详细分享细节!
关注博主,不迷路!一起进步,一起拿高薪!