初始 Spring Cloud

一、什么是Sping Cloud?

        Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,主节点选举, 分布式session, 集群状态)。协调分布式环境中各个系统,为各类服务提供模板性配置。使用Spring Cloud, 开发人员可以搭建实现了这些样板的应用,并且在任何分布式环境下都能工作得非常好。

        Spring Cloud是基于Spring Boot之上的应用,目的是为了如何解决如何快速搭建一个分部式系统。只需要按照相应的规则配置就可以快速搭建一个分布式系统。一般分布式系统都有一个注册中心,如Dubbo,Zookeeper分布都会有一个注册中心提供给其它地方调用,Spring cloud也是一样有服务端和客户端,下面来说Spring Cloud是如何进行注册和管理的。

        Spring Cloud使用一个叫eureka server的注解来进行声明,而客户端使用enreka client注解,eureka没用提供缓存的机制,每个实例之后需要像注册中心发送心跳(心跳:每隔多少秒请求一次 如果有返回信息,则表示在进行使用,如果没有返回则服务就挂掉了),使用eureka的服务端和客户端配置基本一样,做为服务端的只需要设置两个参数registerWithEureka和fetchRegistry 都设置为false 表示是服务端用来注册服务,如果没有设置则表示是客户端。下面我们来看具体的实例。

二、如何搭建一个Sping Cloud?

      1、Spring Cloud是基于Spring Boot之上,新建一个Spring Boot工程如图:

这里要选择Eureka Server依赖   点击完成。

***

注意的是如果搭建下来pom.xml出现错误,提示一些包没在本地仓库,那么是你的maven包有些冲突了,需要新建一个maven仓库进行加载

*******

pom.xml内容如下 :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>eureka-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>eureka-server</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        
        <dependency>
           <groupId>org.springframework.cloud</groupId>
           <artifactId>spring-cloud-starter-eureka-server</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2、进入主程序类增加@EnableEurekaServer注解

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

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

}

3、增加配置文件properties.yml  内容如下:

#服务端端口
server:
  port: 8761

#配置服务端口URL路径 共客户端使用
eureka:
  instance:
    hostname: localhost
  client:
    registerWithEureka: false
    fetchRegistry: false  
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

其中我们指定了服务端的端口,名称和暴露地址URL 设置了两个参数registerWithEureka和fetchRegustry都设置了false表示这是一个服务端。

4、运行主程序EurekaServerApplication.java。

5、在URL地址中输入:locahost:8761 如图:

可以看到如何界面这是spring Eureka提供的系统环境,里面包含了各种信息,其中主要的是Application参数  表示有哪些服务进行注册了。

6、以上就表示一个服务端了,下面我们新建一个客户端,新建项目和上面一样,完成后进入主程序修改如图:

@EnableEurekaClient 	//eureka客户端表明
@SpringBootApplication
@RestController			//页面返回内容
public class EurekaClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaClientApplication.class, args);
	}
	
	@Value("${server.port}")	//得到客户端口
	String port;
	@RequestMapping("/hi")		//访问路径
	public String home(@RequestParam String name) {
		return "hi "+name+",i am from port:" +port;
	}

}

7、增加客户端的application.yml文件内容如下:

#1客户端端口    
server:
  port: 8763

#客户端配置
eureka:
  instance:
    hostname: localhost #声明
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8761/eureka/ #这里就是服务端暴露的地址

#应用程序名字用于调用
spring:
  application:
    name: eureka-client #项目名称(无论多少客户端多少个 名称要保持一样,例如 project2项目的properties 也是这个名称只是端口不一样)
    

8、接我们先运行Eureka server项目 之后再运行Eureka Client项目 结果如图 :

多了一个叫eureka-client的名称也就是我们客户端的名称以及后面的端口   我们访问下客户端url地址:  

http://localhost:8763/hi?name=miku 

显示  hi miku,i am from port:8763  说明服务已经注册好了。

总结:服务端暴露地址给客户端,客户端使用服务端提供的地址进行注册,客户端就可以编写业务功能。

以上就Spring Boot和Spring Cloud之间的注册和发现,使用的是Eureka(Eureka Server依赖)。

猜你喜欢

转载自blog.csdn.net/looplook21/article/details/86246782