1.建立一个父工程
<!--公共的一些配置--> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <spring-cloud.version>Finchley.SR1</spring-cloud.version> </properties>
<!--SpringBoot--> <parent> <groupId> org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> </parent>
<!--SpringCloud--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
<!--公共的依赖--> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.50</version> </dependency> </dependencies>
2.搭建服务端(可与config和zuul放在同一个子模块下)
2.1导入依赖
<dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency> </dependencies>
2.2配置yml
server: port: 1010 eureka: instance: hostname: localhost #主机 client: registerWithEureka: false #不允许自己向自己注册, fetchRegistry: false #不允许拉取服务注册表 serviceUrl: #Eureak的注册地址 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ server: enable-self-preservation: false #关闭自我保护(开发阶段可关闭,项目上线一定要开启)
2.3编写启动类
打上两个标签
@SpringBootApplication @EnableEurekaServer 表示该类为服务端
3.搭建服务网关zuul
3.1导入依赖
<dependencies> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
3.2配置yml
server: port: 1020 eureka: client: serviceUrl: #注册中心的注册地址 defaultZone: http://localhost:1010/eureka/ registry-fetch-interval-seconds: 10 #服务发现的间隔时间 instance: prefer-ip-address: true #使用IP注册 instance-id: www.zuul.com spring: application: name: service-zuul #服务名 zuul: ribbon: eager-load.enabled: true # 饥饿加载 retryable: true #是否开启重试功能 ignored-services: "*" #不准使用服务进行访问 prefix: "/hrm" #统一访问前缀 routes: service-system: "/system/**" #默认访问规则:http://zuul的ip:1030/要访问的服务名/资源 #访问规则:http://zuul的ip:1030/services/user/资源 ribbon: MaxAutoRetries: 1 #对当前服务的重试次数 MaxAutoRetriesNextServer: 1 #切换相同Server的次数 OkToRetryOnAllOperations: false # 对所有的操作请求都进行重试,如post就不能重试,如果没做幂等处理,重试多次post会造成数据的多次添加或修改 ConnectTimeout: 1000 #请求连接的超时时间 ReadTimeout: 2000 #请求处理的超时时间 hystrix: command: de