spring-cloud - 基础环境搭建

spring-cloud中文文档https://springcloud.cc/

spring-cloud中文导航:http://springcloud.fun/

文章纯属用于个人学习的一个归纳,哪里不对希望大哥们能指出,如果你帮助到你一点点那也是我的荣幸(对于小白还是有点用的- -)。

 

————————————————————————————————————————————————————————————————————————————————————

  那么Spring Boot和和Spring Cloud 功能区别是什么呢?

  • Spring Boot 它内嵌Web服务器(tomcat/jetty)的可执行程序的框架。你开发的web应用不需要作为war包部署到web服务器中[例如:把war包扔到tomcat app下],Spring Boot 直接作为一个可启动程序,直接把Web启动起来加载起来。
  • Spring Cloud是一套微服务开发和治理框架,来自Netflex的OSS,包含了微服务运行的功能,可以通过Spring-boot 项目集成很多功能比如 RabbitMQ,ES,Ribbon,负载均衡,限流等。

spring-cloud基本架构图:

   

  图片来源网络

下面开始搭建基础项目,环境:

  jdk1.8

  eclipse

一、搭建注册中心(即服务发现中心) :

  创建一个maven-project

 

创建好的目录层次结构:

  

pom文件:

  

 1 <project xmlns="http://maven.apache.org/POM/4.0.0"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5     <groupId>custom-server</groupId>
 6     <artifactId>custom-server</artifactId>
 7     <version>0.0.1-SNAPSHOT</version>
 8     <!-- 引入spring boot的依赖 -->
 9     <parent>
10         <groupId>org.springframework.boot</groupId>
11         <artifactId>spring-boot-starter-parent</artifactId>
12         <version>2.0.7.RELEASE</version>
13     </parent>
14     <dependencies>
15         <!-- Eureka-server依赖 -->
16         <dependency>
17             <groupId>org.springframework.cloud</groupId>
18             <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
19         </dependency>
20         <!-- 密码配置依赖 -->
21         <dependency>
22             <groupId>org.springframework.boot</groupId>
23             <artifactId>spring-boot-starter-security</artifactId>
24         </dependency>
25     </dependencies>
26     <!-- 引入spring cloud的依赖,不能少,主要用来管理Spring Cloud生态各组件的版本 -->
27     <dependencyManagement>
28         <dependencies>
29             <dependency>
30                 <groupId>org.springframework.cloud</groupId>
31                 <artifactId>spring-cloud-dependencies</artifactId>
32                 <version>Finchley.SR2</version>
33                 <type>pom</type>
34                 <scope>import</scope>
35             </dependency>
36         </dependencies>
37     </dependencyManagement>
38 
39     <!-- 添加spring-boot的maven插件,不能少,打jar包时得用 -->
40     <build>
41         <plugins>
42             <plugin>
43                 <groupId>org.springframework.boot</groupId>
44                 <artifactId>spring-boot-maven-plugin</artifactId>
45             </plugin>
46         </plugins>
47     </build>
48 
49 </project>
View Code

这里使用的是Finchley.SR2版本,这是在网上找了许多后选择了一个相对较新的版本。

security库不用理会,后面写注册中心时会有说明,其他spring-boot、eureka、spring-cloud都是必须的库

 

在resources编写application.yml配置文件:

server: 
  port: 8080
spring:
eureka: 
  instance:
    hostname: localhost
  client:
    # 是否要注册到其他Eureka Server实例
    register-with-eureka: false
    # 是否要从其他Eureka Server实例获取数据
    fetch-registry: false
    service-url: 
      # 下面俩种方式随便一种都可以,但是后缀【eureka】必不可少
      #defaultZone: http://{hostname}:{server.port}/eureka/
      defaultZone: http://localhost:8080/eureka/

 spring.security.user.name跟password先不用理会,后面讲述注册中心会有提到。

 

建包编写入口类(入口类必须放在顶级的包下面,否则会无法扫描自动注入):

 

package com.server;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication    //    spring-boot启动注解
@EnableEurekaServer        //    eureka组件服务注解
public class ServerApplication {

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

 

 编写好后的注册中心整体结构:

   

运行ServerApplication后,访问localhost:8080如果看到下面画面就说明注册中心搭建好了:

 

  红色字体先不用理会,现在没有使用账号跟密码,任何服务都能注册到注册中心,下面创建一个服务注册到注册中心。

 二、搭建一个服务注册到注册中心:

  同样创建一个名为custom-client的maven-project 

  

pom文件:

  

 1 <project xmlns="http://maven.apache.org/POM/4.0.0"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 4     <modelVersion>4.0.0</modelVersion>
 5     <groupId>custom-client</groupId>
 6     <artifactId>custom-client</artifactId>
 7     <version>0.0.1-SNAPSHOT</version>
 8     <!-- 引入spring boot的依赖 -->
 9     <parent>
10         <groupId>org.springframework.boot</groupId>
11         <artifactId>spring-boot-starter-parent</artifactId>
12         <version>2.0.7.RELEASE</version>
13     </parent>
14     <properties>
15         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
16         <java.version>1.8</java.version>
17     </properties>
18     <dependencies>
19         <dependency>
20             <groupId>org.springframework.boot</groupId>
21             <artifactId>spring-boot-starter-web</artifactId>
22         </dependency>
23         <!-- eureka服务组件 -->
24         <dependency>
25             <groupId>org.springframework.cloud</groupId>
26             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
27         </dependency>
28     </dependencies>
29     <!-- 引入spring cloud的依赖,不能少,主要用来管理Spring Cloud生态各组件的版本 -->
30     <dependencyManagement>
31         <dependencies>
32             <dependency>
33                 <groupId>org.springframework.cloud</groupId>
34                 <artifactId>spring-cloud-dependencies</artifactId>
35                 <version>Finchley.SR2</version>
36                 <type>pom</type>
37                 <scope>import</scope>
38             </dependency>
39         </dependencies>
40     </dependencyManagement>
41 
42     <!-- 添加spring-boot的maven插件,不能少,打jar包时得用 -->
43     <build>
44         <plugins>
45             <plugin>
46                 <groupId>org.springframework.boot</groupId>
47                 <artifactId>spring-boot-maven-plugin</artifactId>
48             </plugin>
49         </plugins>
50     </build>
51 </project>
View Code

 

application.yml:

 1 server:
 2   port: 8001
 3 spring:
 4   application:
 5     # 指定注册到eureka server上的服务名称
 6     name: custom-client
 7 eureka:
 8   client:
 9     service-url:
10       # 指定eureka server通信地址,注意/eureka/小尾巴不能少
11       defaultZone: http://localhost:8080/eureka/
12   instance:
13     # 是否注册IP到eureka server,如不指定或设为false,那就会注册主机名到eureka server
14     prefer-ip-address: true
View Code

*Application.java:

 1 package com.client;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.context.annotation.Bean;
 6 import org.springframework.web.client.RestTemplate;
 7 
 8 @SpringBootApplication
 9 @EnableEurekaClient    //    eurekaClient注解
10 public class UserClientApplication {
11 
12     
13     public static void main(String[] args) {
14         SpringApplication.run(UserClientApplication.class, args);
15     }
16 }
View Code

 

编写完成好启动UserClientApplication类,然后访问注册中心,查看服务是否注册到了中心,访问localhost:8080:

图上标注的就是刚才启动并注册的服务,一个最基本的架构已经完成了,后面陆续添加其他微服务的基础篇章,大家一起学习、一起进步。

 

   

 

posted @ 2019-03-06 18:45  JCYL-Pandong  阅读(1343)  评论(0编辑  收藏  举报