使用idea搭建SpringCloud项目(及所遇到的坑)

Spring Cloud简介

Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。

东西虽好,坑也不少

  • Spring cloud特别要注意版本和spring boot版本的兼容性 及其版本中的jar是否缺少,感觉有些版本好多坑。
    大版本对应关系
    使用idea搭建SpringCloud项目(及所遇到的坑)_第1张图片
    使用idea搭建SpringCloud项目(及所遇到的坑)_第2张图片
    不同版本搭建体验千差万别。最好不要使用最新版本。

SNAPSHOT: 快照版本,随时可能修改

M: MileStone,M1表示第1个里程碑版本,一般同时标注PRE,表示预览版版。

SR: Service Release,SR1表示第1个正式版本,一般同时标注GA:(GenerallyAvailable),表示稳定版本。

如:2.0.8.RELEASE Finchley.SR2 没有办法导入Feign包,无法使用Feign注解

  • 命名规范 最好针对模块命名 不要使用一些框架内的可能的类名 如client

亲测通过的版本1.5.10.RELEASE Edgware.SR3

开始搭建项目

创建一个maven项目
使用idea搭建SpringCloud项目(及所遇到的坑)_第3张图片

创建Eureka Server

Spring Cloud使用erureka server, 然后所有需要访问配置文件的应用都作为一个erureka client注册上去。eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳,在默认情况下erureka server也是一个eureka client ,必须要指定一个 server。
创建一个springboot模块
使用idea搭建SpringCloud项目(及所遇到的坑)_第4张图片
选择erureka server
使用idea搭建SpringCloud项目(及所遇到的坑)_第5张图片
修改版本号
使用idea搭建SpringCloud项目(及所遇到的坑)_第6张图片
添加@EnableEurekaServer注解

@SpringBootApplication
@EnableEurekaServer
public class ServerApplication {

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

}

编写配置文件application.yml

server:
   port: 8771
eureka:
# server:
#    enable-self-preservation: true #关闭其自我保护(开发环境可以操作,方便)
  client:
     registerWithEureka: false #其本身作为注册中心,所有设置为:不显示在注册中心
     fetchRegistry: false
     serviceUrl:
         #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
         defaultZone: http://localhost:8771/eureka/

erureka server注册中心就写完了
运行结果:
使用idea搭建SpringCloud项目(及所遇到的坑)_第7张图片
只有注册中心,没有服务

创建Eureka Client

步骤同上创建springboot模块
添加@EnableEurekaClient注解(或@EnableDiscoveryClient)


@SpringBootApplication
@EnableEurekaClient
public class ClientOneApplication {

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

}

编写配置文件application.yml

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8771/eureka/
    fetch-registry: false
#  instance:
#    hostname: one url别名
server:
  port: 8773
spring:
  application:
    name: one #serviceid

运行后,注册中心
使用idea搭建SpringCloud项目(及所遇到的坑)_第8张图片
注册中心与服务一般是一对多,但防止注册中心挂掉,可以在运行一个,两个互相注册

server:
   port: 8771
eureka:
  client:
     fetchRegistry: false
     serviceUrl:
         #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
         defaultZone: http://localhost:8772/eureka/

服务分别向两个注册中心注册

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8771/eureka/,http://localhost:8772/eureka/

有了注册中心与多个服务实现我们的项目是不够的,服务之间需要数据传递。

你可能感兴趣的:(SpringBoot)