第四节 微服务OTRS SpringCould使用

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

  • 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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏一个会写诗的程序员的博客

《Spring Boot 实战开发》 附录 II : Spring Boot 2.0 新特性《Spring Boot 实战开发》 附录 II : Spring Boot 2.0 新特性Kotlin

本节我们介绍 Spring Boot 2.0 版本的众多新特性,内容包括了 M1~M7里程碑版本的核心新功能特性。不过,我们首先把对 Kotlin 的特性的支持...

1953
来自专栏用户2442861的专栏

通过Spring Boot三分钟创建Spring Web项目

作者:David 链接:https://zhuanlan.zhihu.com/p/20637937 来源:知乎 著作权归作者所有。商业转载请联系作者获得授...

862
来自专栏代码拾遗

Spring Cloud 教程 - Eureka Client

服务发现是微服务架构的一个关键原则。手动配置每一个客户端不仅非常复杂,同时也容易出错。Netflix 提供了Erueka作为服务发现的服务端和客户端。Sreve...

3043
来自专栏nummy

virtualenv和vittualenvwrapper的使用

virtualenv用于创建独立的Python环境,多个Python相互独立,互不影响,它能够:

913
来自专栏玩转JavaEE

使用Spring Cloud搭建服务注册中心

我们在之前的博客中已经介绍过阿里的分布式服务框架dubbo【Linux上安装Zookeeper以及一些注意事项】【一个简单的案例带你入门Dubbo分布式框架】,...

2.3K4
来自专栏EAWorld

详解Spring Boot 自动配置机制

一、简介 Spring boot 是一个基于 Spring框架开发,高于 Spring 框架,它对 Spring 做了更好的封装,提供了更多的产品级特性,极大的...

3596
来自专栏编程

Spring-Data-REST轻松搞定RESTfulAPI

背景 昨天同事问我有没有研究过 ,没有~但是看名字就大概知道是做什么的(命名的重要性),因为之前有了解过 ,过一会发过两个截图过来。真的很强大,感觉这个在使用...

2796
来自专栏一个会写诗的程序员的博客

Spring Boot 使用 Groovy 模板引擎开发视图层

https://spring.io/blog/2014/05/28/using-the-innovative-groovy-template-engine-in...

1363
来自专栏Gaussic

基于Spring Boot 的Blog开发 原

之前写过几篇关于利用Spring MVC来开发的博客,从博客下面的评论以及GitHub上的Issues看还是会出现许多的问题,且大部分的问题都出在配置上。虽然说...

1001
来自专栏Java后端技术

context:component-scan标签的use-default-filters属性的作用以及原理分析

  我们在Spring+SpringMVC+Mybatis的集成开发中,经常会遇到事务配置不起作用等问题,那么本文就来分析下出现这种问题可能的原因以及解决方式。

944

扫码关注云+社区

领取腾讯云代金券