官方文档
官方介绍
This project provides Netflix OSS integrations for Spring Boot apps through autoconfiguration and binding to the Spring Environment and other Spring programming model idioms. With a few simple annotations you can quickly enable and configure the common patterns inside your application and build large distributed systems with battle-tested Netflix components. The patterns provided include Service Discovery (Eureka), Circuit Breaker (Hystrix), Intelligent Routing (Zuul) and Client Side Load Balancing (Ribbon).
Demo 源码
GitHub:spring-cloud-netflix-demo
Ribbon
官网文档
基本使用
1、添加Ribbon Starter依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
2、配置RestTemplate,添加LoadBalanced 注解
@Configuration
public class RestConfiguration {
@Bean
@LoadBalanced
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
return restTemplateBuilder.build();
}
}
3、配置文件中定义服务列表
user-server.ribbon.listOfServers=localhost:8081,localhost:8083
源码分析
未完待续。。。
Feign
基本使用
1、添加openFeign 依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>${spring-cloud.version}</version>
</dependency>
2、创建FeignClient接口类,添加FeignClient 注解
@FeignClient("user-server")
@RequestMapping("/user")
public interface UserService {
@GetMapping("/{uid}")
String getUserInfo(@PathVariable("uid") String uid);
}
3、启动类增加EnableFeignClients 注解
@EnableFeignClients
@SpringBootApplication
public class OrderServerApplication {
public static void main(String[] args) {
SpringApplication.run(OrderServerApplication.class, args);
}
}
Client 扩展
使用OkHttp
1、添加OkHttp依赖包。
<dependency>
<groupId>io.github.openfeign</groupId>
<artifactId>feign-okhttp</artifactId>
<version>10.12</version>
</dependency>
2、修改application.properties配置文件,开启OkHttp Client。
feign.okhttp.enabled=true
使用HttpClient
使用HttpClient5
源码分析
未完待续。。。
Eureka Server
官网文档
Spring Cloud Netflix Eureka Server
基本使用
参考:docs.spring.io/spring-clou…
1、创建Spring-boot项目 pom.xml 添加eureka-server依赖包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
2、启动类添加EnableEurekaServer注解
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
3、application.properties 配置文件添加eureka-server 配置,包括端口配置
# 服务启动端口号
server.port=8761
# 定义服务名称
spring.application.name=example-eureka-server
# 是否注册到eureka中
eureka.client.registerWithEureka=false
# 是否获取服务信息
eureka.client.fetchRegistry=false
# 注册中心服务地址
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
4、启动spring-boot项目,浏览器访问http://localhost:8761
Eureka Server 安全
1、引入Spring Security 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2、针对Eureka 客户端屏蔽CSRF
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().ignoringAntMatchers("/eureka/**");
super.configure(http);
}
}
3、配置文件中配置登录用户名密码
spring.security.user.name=admin
spring.security.user.password=123456
Eureka Client
官网文档
Spring Cloud Netflix Eureka Client
基本使用
1、Spring Boot项目添加eureka-client 依赖。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
2、配置文件配置Eureka 注册中心地址。
eureka.client.serviceUrl.defaultZone=http://admin:123456@127.0.0.1:8761/eureka/
3、启动类增加EnableEurekaClient注解。
@EnableEurekaClient
@SpringBootApplication
public class UserServerApplication {
public static void main(String[] args) {
SpringApplication.run(UserServerApplication.class, args);
}
}