项目大概图
代码链接:github超链接
一,总体
Eurekaserver:注册中心
Configserver:配置中心
Client:消费者;集成了Feign负载均衡、服务熔断、Hystrix服务监听。
Studuent:服务提供者
Zuul:服务网关
二,父工程springcloud2
springcloud是基于springboot实现的,创建springcloud2父工程,可以选择模板创建项目(SpringInitializr),但我喜欢使用maven创建,maven需要自己在pom.xml中添加相关依赖。
此中表示继承的spring-boot-starter-parent,一些基础的依赖。比如编码格式什么的。
中的jar是直接加到项目中,并且会被子项目自动添加(如果有父pom,子pom,则子pom中只能被动接受父类的版本)
里只是声明依赖,并不实现引入,只有子类实现了该类,并且没有具体版本,才去父项目里面去读取该信息。
可以发现,springboot-starter-web与lombok子类都会被动继承。而springframework-springcloud需要子类自己去添加才会有。
三,eurekaserver注册中心
注册中心就相当于中介,各服务只要注册到注册中心,注册中心就会有信息显示,注册中心也可以注册自己。
1,创建module模块,添加pom.xml依赖
该依赖表示该模块为eureka-server。同时它强制继承了父模块的lombok和starter-web。
2, application.xml中配置相关信息
server.port:当前Eureka Server服务端口。
eureka.client.register-with-eureka:是否将当前的Eureka Server服务作为客户端进行注册。
eureka.client.fetch-registry:是否获取其他Eureka Server服务的数据。
eureka.client.service-url.defaultZone:注册中心访问地址。
3,创建启动类
@SpringBootApplication:声明该类是Spring Boot服务的入口。
@EnableEurekaServer:声明该类是一个Eureka Srever微服务,提供服务注册和服务发现功能,
即注册中心。
四,配置中心
1.添加pom.xml依赖
添加config-server配置中心 和eureka子模块
2,application.yml
端口8008
profiles.active:表示的是文件的获取方式
cloud.config.server.native.search-location:本地配置文件存放的路径。
Eureka-client-service-url-defaultZone:注册中心访问地址。
Instance.instance-id;在eureka上显示该服务的名称,
Perfer-ip-address:注册时使用ip而不是主机名
3,shared下的目录
各个服务的配置
4,创建启动类
@SpringBootApplication:声明该类是Spring Boot服务的入口。
@EnableEurekaServer:声明该类是一个Eureka Srever微服务,提供服务注册和服务发现功能,
即注册中心。
@EnableConfigServer:声明该类是微服务的配置中心。
五,Student服务提供者
1,添加pom.xml依赖
eureka子模块
配置中心
mybatis整合
数据库驱动
2,bootstrap.yml
名字不能写application.yml,不然不能读取配置中心的文件。
通过student-dev,到8002中寻找studnet-dev.yml:
Server:端口号
Spring…数据库相关信息
mybatis的扫模
Eureka-client…注册到注册中心
3,entity
添加lombok简写set /get等方法
3,创建接口
其与resource相映射,每个接口的sql语句写在mapping中。
4,studentRepository.xml与StudentRepository接口相关联
5,控制器
通过实例化接口实现crud
六,服务消费者
1,添加相关依赖
Feign:负载均衡
Hystrix:结合feign实现服务熔断
Actuator:健康监控
Hystrix-dashbord:服务监控
2,bootstrap.xml读取配置中心信息
倒数第一个是服务监控功能
倒数第二个是是否开启服务熔断,你不写true开启,他是默认关闭的(踩过坑)
3,控制器、实体与服务提供者差不多。
student接口是正常情况下调用的,上面的注解FeignClient,value=student表示调用的服务提供者student的服务。
fallback = StudentFeignError.class
表示如果发生错误,会熔断,回去执行它实现的一个方法。
七,zuul服务网关
1,添加pom依赖
2,application.yml配置相关信息
zuul.routers.provider:设置映射
这里我通过/p/**表示 client服务消费者。
3,服务启动类
EnableZuulProxy:包含了EnableZuulServer,设置该类是网关的启动类。
EnableAutoConfiguretion:可以帮助Spring Boot应用将所有符合条件的Configuration配置加载到当前Spring Boot创建并使用的IOC容器中。(SpringbootApplication注解默认使用了该属性)
@EnableEurekaClient:声明该类是一个Eureka Srever微服务,提供服务注册和服务发现功能