问题背景:由于之前的项目赶的匆忙,所以把所有功能的代码都整合在了一起,以致于耦合度太高,造成了牵一发动全身的情况,所以现在时间相对充分,就将之前的项目拆分成微服务管理。
原项目其实并非springboot项目,而是Spring项目,因为要拆出来做成springBoot,这里就不说Spring的事情了。
最终项目结构:
我这里只做个demo,所以在原项目基础上做的,这里拆出来了三个module分别为注册中心,服务提供者和服务调用者。所谓SpringCloud微服务,就要每一个模块都要成为独立的服务,各自运行,互不影响才可以,之前互通数据通过调用接口完成,下面详细介绍一下三个模块:
注册中心eureka
注册中心也是一个独立运行的服务,它的任务就是作为一个总中心,一个地址薄,它让服务调用者和提供者并不需要知道谁是谁,对于调用者来说,对上暗号就行了,只要你暗号对了,我就在你这拿我需要的东西,至于你是谁,换没换人,几个人,我都不管,反正我只管去注册中心拿对上暗号的人的地址,要东西。而对于提供者,也不用告诉调用者我准备好了,你来拿吧,而是只去注册中心做个登记,我能服务了,给我挂上牌子。这样服务之间的管理就容易多了。
具体新建步骤如下:
- 右键项目目录,点击添加module,使用springInitializr方式创建,选择maven或gradle项目(根据个人需要)然后选择SpringCloud eureka新建,这样会自总引入依赖,省去了自己写pom的时间。
- 修改springboot的配置文件,application.properties或者application.yml,我这里用的是yml
# 端口号
server:
port: 8761
# 配置注册服务中心
eureka:
instance:
hostname: localhost
# 配置关闭自我保护,并按需配置Eureka Server清理无效节点的时间间隔。
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 6000
peer-node-read-timeout-ms: 90000
response-cache-update-interval-ms: 5000
client:
# 表明自己不是一个客户端,并且不进行自注册
register-with-eureka: false
fetch-registry: false
# 注册中心的访问地址
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
# 配置应用程序名称
spring:
application:
name: cloud-eureka
- 在启动类上添加@EnableEurekaServer,表明自己是注册中心。
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaApplication.