springcloud是什么
基于spring boot实现的服务治理工具包,管理和协微服务
把别人的东西拿来组合在一起,形成各种组件
微服务协调者【service registtry注册中心 Eureka】--统一的网关【api gateway-zuul】
负载均衡【ribbon】--分布式配置 【config】-断路器【hystrix】
服务者--消费者 都向Eureka注册中心去注册,一个负责生产,一个负责消费
idea 如何创建多个模块 。
和eclipse有点区别,创建maven项目
看下项目结构
和eclipse中的workspace一样。
1.创建EurekaServer
带个端口明确一下。
2.创建生产者和消者共用的接口
3.创建服务提供者
4.创建服务消费者
现在的项目架构
开始配置
想让项目中的四个模块 都拥有spring boot
让四个模块继承一个父亲 。在总项目的pom.xml中添加spring boot ,这个下面的四个模块都会继承
总项目的pom.xml
${spring-cloud.version} 是一个变量,要定义在properties中。
以下代码是引入spring cloud.
一定要注意版本是否正确。我在这里就入了一个大坑 。
先开始定义的spring-cloud.version写成了 spring-cloud.verison,导致cloud怎么也导入不进来
费了很大功夫才发现。
UTF-8
UTF-8
1.8
Finchley.SR1
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
springboot 与springcoud 的版本选择
这里要注意springboot 与springcoud 的版本的匹配,可以参考:
https://spring.io/projects/spring-cloud
springboot的最新版 ,springcloud不一定就支持,要看对应关系 。
这里有一位同学写的踩坑旅程,有兴趣的可以参考一下。少走一些弯路
https://blog.51cto.com/honly/2156583?source=dra
以下图中可以看到。srpingboot 2.0开 头的版本,要用springcloud的Finchley来适配
Finchley 又分为 Release ,SR1-SR4 . 选择自己需要的就可以。 比如Finchley Release 或者Finchley SR1
以下网址是springcloud maven中面仓库的地址
https://repo1.maven.org/maven2/org/springframework/cloud/spring-cloud-dependencies/
可以看到Finchley.Release是Finchley最新发布的一个版本,之后才有sr1-4
然后是Greenwich.Releash版本,这个是针对springboot 2.1.x版本做的适配
每个版本都有针对的说明 : 比如
finchley.Release的官方说明:https://spring.io/blog/2018/06/19/spring-cloud-finchley-release-is-available
中文说明 参考:https://www.oschina.net/news/97226/spring-cloud-finchley-released
显著变化:
与 Spring Boot 2.0.x 兼容
不支持 Spring Boot 1.5.x
最低要求 Java 8
新增 Spring Cloud Function 和 Spring Cloud Gateway
以下代码是表示所有的模块都继承springboot
org.springframework.boot
spring-boot-starter-parent
2.0.5.RELEASE
如果表示模块继承了,在模块的pom.xml中
//microservice_paent 表示继承了父类
microservice_paent
com.project
1.0-SNAPSHOT
Eureka注册中心的pom.xml
添加springboot ,spring.cloud的依赖。
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-test
test
Eureka注册的配置
在src->main->resources中添加 application.yml.指定服务器端口号,同时配置 Eureka的配置
server:
port: 7001
eureka:
instance:
hostname: 127.0.0.1
client:
register-with-eureka: false
fetch-registry: false
service-url:
defaultZone:http://${eureka.instance.hostname}:${server.port}/eureka/
在src->main->java中添加新类。
这些类似于单项目 springboot项目的创建。
这里如果@EnableEurekaServer不出现智能提示,或者明显有错误,需要去检查springcloud是否导入 进来
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServiceApplication {
public static void main(String[] args) {
SpringBootApplication.run(EurekaServiceApplication.class,args);
}
}
也可以去检查依赖的包里是否有cloud的字样,比如下图,如果没有,检查配置 pom.xml确保springcloud导入进来再进行操作。
下面就会有区别了。请等下一篇 ,今天有几个坑入的比较深