目录
一Netflix oss微服务架构
边缘服务器Netflix Zuul Server
负载均衡 Netflix Ribbon
客户端负载均衡
服务器端负载均衡
电路断路器: Netflix Hystrix 电路断路器和帮助系统运行
启动断路器:使用其他服务的微服务的主类应使用
配置回退方法
定义回退方法
服务注册和发现:Netflix Eureka 用于服务注册和发现
监控仪表盘 : Hystrix 与Netflix Turbine结合 微服务监控
二 使用DOCKER容器部署微服务
一Netflix oss微服务架构
spring将Zuul、Ribbon、Hystrix、Eureka Server 和Turbine集成到 spring cloud中
边缘服务器Netflix Zuul Server
负载均衡 Netflix Ribbon
客户端负载均衡
微服需要进程间通信
服务器端负载均衡
外部UI和其他客户端调用边缘服务器,使用application.yml中定义的路由,调用内部服务并提供响应。充当代理服务器,承担内部网络的网关,并为定义和配置的路由调用内部服务
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
程序添加
@EnableZuulProxy
application.yml 添加配置
zuul:
ignoredServices: "*" //表示忽略所有服务 除了restaurant-service其余都被忽略
routes:
restaurantapi:
path: /restaurantapi/** //包含定义URI模式path属性
serviceId: restaurant-service //serviceID 表示在Eureka服务器中的服务
stripPrefix: true //比如请求 /restarurantapi/v1/estaurants/1 调用会变味/v1/restaurants/1
电路断路器: Netflix Hystrix 电路断路器和帮助系统运行
启动断路器:使用其他服务的微服务的主类应使用
@EnableCircuitBreaker
配置回退方法
使用
@HystrixCommand(fallbackMethod = "defaultRestaurant")
定义回退方法
/**
* Fallback method
*
* @param input
* @return
*/
public ResponseEntity<Entity> defaultRestaurant(String input) {
logger.warning("Fallback method for restaurant-service is being used.");
return new ResponseEntity<>((Entity) null, HttpStatus.NO_CONTENT);
}
服务注册和发现:Netflix Eureka 用于服务注册和发现
监控仪表盘 : Hystrix 与Netflix Turbine结合 微服务监控
二 使用DOCKER容器部署微服务
Docker容器是提供轻量级的运行时环境,它由虚拟机的核心功能和一个称为Docker影像的隔离操作系统组成。Docker使得包装和执行微服务更加容易、顺畅。每个操作系统可以有多个Docker、并且每个Docker都可以运行多个应用程序。
1使用maven构建Docker影像
http://github.com/rhuss/docker-maven-plugin
http://github.com/spotify/docker-maven-plugin
http://github.com/alexec/docker-maven-plugin
2、application.yml中Docker Spring配置文件
- 使用确定为Docker的Spring配置文件
- 嵌入式tomcat的端口之间不会有任何冲突,因为服务器将在各自的容器内执行,现在使用端口8080
- 偏爱在Eureka中使用我们的服务的IP地址,因此Eureka实例属性 preferIpAddress 将被设置为true
- 最后,在serviceUrl:defaultZone中使用Eureka服务器主机名
配置文件
---
# For deployment in Docker containers
spring:
profiles: docker
server:
port: 8080
eureka:
instance:
preferIpAddress: true
leaseRenewalIntervalInSeconds: 1
leaseExpirationDurationInSeconds: 2
client:
registryFetchIntervalSeconds: 5
instanceInfoReplicationIntervalSeconds: 5
initialInstanceInfoReplicationIntervalSeconds: 5
serviceUrl:
defaultZone: http://eureka:8761/eureka/
fetchRegistry: true
healthcheck:
enabled: true