SpringCloud的简介
引用出处:楠哥教你学Java中SpringCloud快速上手笔记
1、单体应⽤存在的问题
随着业务的发展,开发变得越来越复杂。
修改、新增某个功能,需要对整个系统进⾏测试、重新部署。
⼀个模块出现问题,很可能导致整个系统崩溃。
多个开发团队同时对数据进⾏管理,容易产⽣安全漏洞。
各个模块使⽤同⼀种技术进⾏开发,各个模块很难根据实际情况选择更合适的技术框架,局限性很
⼤。
模块内容过于复杂,如果员⼯离职,可能需要很⻓时间才能完成⼯作交接。
2、分布式、集群
集群:⼀台服务器⽆法负荷⾼并发的数据访问量,那么就设置⼗台服务器⼀起分担压⼒,⼗台不⾏就设
置⼀百台(物理层⾯)。很多⼈⼲同⼀件事情,来分摊压⼒。
分布式:将⼀个复杂问题拆分成若⼲个简单的⼩问题,将⼀个⼤型的项⽬架构拆分成若⼲个微服务来协
同完成。(软件设计层⾯)。将⼀个庞⼤的⼯作拆分成若⼲个⼩步骤,分别由不同的⼈完成这些⼩步
骤,最终将所有的结果进⾏整合实现⼤的需求。
服务治理的核⼼⼜三部分组成:服务提供者、服务消费者、注册中⼼。
在分布式系统架构中,每个微服务在启动时,将⾃⼰的信息存储在注册中⼼,叫做服务注册。
服务消费者从注册中⼼获取服务提供者的⽹络信息,通过该信息调⽤服务,叫做服务发现。
Spring Cloud 的服务治理使⽤ Eureka 来实现,Eureka 是 Netflix 开源的基于 REST 的服务治理解决⽅
案,Spring Cloud 集成了 Eureka,提供服务注册和服务发现的功能,可以和基于 Spring Boot 搭建的
微服务应⽤轻松完成整合,开箱即⽤,Spring Cloud Eureka。
SpringCloud的上手搭建
1、配置父工程的pom文件
在SpringBoot的基础上增加SpringCloud
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE </version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--<!– 解决 JDK 9 以上没有 JAXB API 的问题 –>-->
<!--<dependency>-->
<!--<groupId>javax.xml.bind</groupId>-->
<!--<artifactId>jaxb-api</artifactId>-->
<!--<version>2.3.0</version>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>com.sun.xml.bind</groupId>-->
<!--<artifactId>jaxb-impl</artifactId>-->
<!--<version>2.3.0</version>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>com.sun.xml.bind</groupId>-->
<!--<artifactId>jaxb-core</artifactId>-->
<!--<version>2.3.0</version>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>javax.activation</groupId>-->
<!--<artifactId>activation</artifactId>-->
<!--<version>1.1.1</version>-->
<!--</dependency>-->
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、在父工程下创建子工程module
在子工程中加入eureka server的包,从而
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
</dependencies>
3、创建application.yml配置文件,添加Eureka Server的相关配置
server:
port: 8761
eureka:
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone: http://localhost:8761/eureka/
属性说明
1、server.port :当前 Eureka Server 服务端⼝。
2、eureka.client.register-with-eureka :是否将当前的 Eureka Server 服务作为客户端进⾏注册。
3、eureka.client.fetch-fegistry :是否获取其他 Eureka Server 服务的数据。
4、eureka.client.service-url.defaultZone :注册中⼼的访问地址。
4、创建启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class,args);
}
}
注解说明:
1、@SpringBootApplication :声明该类是 Spring Boot 服务的⼊⼝。
2、@EnableEurekaServer :声明该类是⼀个 Eureka Server 微服务,提供服务注册和服务发现功能,即注册中⼼。