目录

一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配置文件

  1. 使用确定为Docker的Spring配置文件
  2. 嵌入式tomcat的端口之间不会有任何冲突,因为服务器将在各自的容器内执行,现在使用端口8080
  3. 偏爱在Eureka中使用我们的服务的IP地址,因此Eureka实例属性 preferIpAddress 将被设置为true
  4. 最后,在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