美文网首页java程序员
第四节 微服务OTRS SpringCould使用

第四节 微服务OTRS SpringCould使用

作者: 勃列日涅夫 | 来源:发表于2018-08-21 23:33 被阅读1次

    本节主要叙述项目主要组成架构,以及使用相关技术

    • OTRS微服务架构总图如下:
    springcloud.png
    1. 总工程module总览如下
      <module>zuul-server</module>
            <module>restaurant-service</module>
            <module>eureka-server</module>
            <module>dashboard-server</module>
            <module>turbine-server</module>
            <module>common</module>
            <module>user-service</module>
            <module>security-service</module>
            <module>api-service</module>
            <module>booking-service</module>
    
    1. spring cloud 中的中组件
    • 边缘服务器: 我们使用Netflix zuul server作为边缘服务器
    • 客户端负载均衡: 我们使用netflix Ribbon作为负载均衡
    • 熔断路由:我们使用Netflix Hystrix
    • 服务发现和注册: Netflix Eureka server
    • 监控仪表盘: Hystrix 和Netflix Turbine 结合用于微服务的监控。他提供一个仪表盘来检查微服务的健康状态

    依次简单介绍相关组件的使用

    1. 先给出主工程的pom文件

    2. 服务的注册与发现(Eureka)
      eureka是一个服务注册和发现模块,也是微服务组件中最重要的一部分。首先我们会启动一个服务发现的服务端(也可以配置成集群模式,这里不再赘述),其他各个模块作为客户端。

    • 当前工程pom添加依赖
     <dependencies>
            <!--eureka server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
            </dependency>
        </dependencies>
    

    1.1. 启动一个服务注册中心,只需要一个注解@EnableEurekaServer,这个注解需要在springboot工程的启动application类上加:

    @SpringBootApplication
    @Configuration
    @EnableAutoConfiguration
    @EnableEurekaServer
    public class App {
    
        public static void main(String[] args) {
            SpringApplication.run(App.class, args);
        }
    }
    

    1.2. eureka是一个高可用的组件,它没有后端缓存,每一个实例注册之后需要向注册中心发送心跳(因此可以在内存中完成),默认情况下erureka server也是一个eureka client ,必须要指定一个 server。下面是一个网上常见的配置文件appication.yml

    server:
      port: 8761
    #通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
    eureka:
      instance:
        hostname: localhost
      client:
        registerWithEureka: false
        fetchRegistry: false
        serviceUrl:
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    
    spring:
      application:
        name: eurka-server
    

    1.3. 下面添加一个客户端,已user-server模块服务为例

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
            </dependency>
    

    启动的主程序中添加注解EnableEurekaClient表明为eurka的客户端

    @SpringBootApplication
    @EnableEurekaClient
    @EnableCircuitBreaker
    @ComponentScan({"com.packtpub.mmj.user", "com.packtpub.mmj.common"})
    public class UsersApp {
    
        private static final Logger LOG = LoggerFactory.getLogger(UsersApp.class);
    
        @Value("${app.rabbitmq.host:localhost}")
        String rabbitMqHost;
    
        @Bean
        public ConnectionFactory connectionFactory() {
            LOG.info("Create RabbitMqCF for host: {}", rabbitMqHost);
            CachingConnectionFactory connectionFactory = new CachingConnectionFactory(rabbitMqHost);
            return connectionFactory;
        }
    
        public static void main(String[] args) {
            SpringApplication.run(UsersApp.class, args);
        }
    }
    

    然后我们需要再配置文件中注明自己的服务注册中心的地址,application.yml配置文件如下

    # Discovery Server Access
    eureka:
        instance:
            leaseRenewalIntervalInSeconds: 3
            metadataMap:
                instanceId: ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}}
    
        client:
            registryFetchIntervalSeconds: 5
            instanceInfoReplicationIntervalSeconds: 5
            initialInstanceInfoReplicationIntervalSeconds: 5
            serviceUrl:
                defaultZone: ${vcap.services.${PREFIX:}eureka.credentials.uri:http://user:password@localhost:8761}/eureka/
            fetchRegistry: true
    

    其他的客户端配置注册不再赘述可参照源码

    *第五节 客户端服务负载均衡

    相关文章

      网友评论

        本文标题:第四节 微服务OTRS SpringCould使用

        本文链接:https://www.haomeiwen.com/subject/thgnbftx.html