16-第15课:Spring Cloud 实例详解——基础框架搭建(二)

  1. 客户端基础模块
  2. 熔断器
  3. 持久层框架 MyBatis

接着上一篇,我们继续来搭建基础框架,本文我们将搭建客户端基础模块,集成熔断器,集成持久层框架 MyBatis。

在上一篇我们已经构建好了配置中心,因此,此后搭建的所有工程都是将配置文件放到 Git 上(点击这里获取本课程配置文件的 Git 仓库地址),通过配置中心将配置文件从 Git 仓库上拉取下来。

客户端基础模块

  1. 顶级工程下,先创建名为 client 的 pom 工程

    <dependency>
      <groupId>com.lynn</groupId>
      <artifactId>common</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>${mysql.version}</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>${druid.version}</version>
    </dependency>
  2. 创建客户端工程:index(首页)、article(文章)、comment(评论)、user(用户)

    在每个客户端模块创建启动类,添加以下内容:

    @SpringCloudApplication
    @ComponentScan(basePackages = "com.lynn")
    public class Application {
      public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
      }
    }

    最后在每个客户端工程下创建 bootstrap.yml 配置文件,在 Git 仓库创建每个客户端模块自己的配置项,并添加相应的内容。接下来,我们具体看下每个客户端下需要添加的代码内容。

  3. 首页

    首页客户端下 bootstrap.yml 配置文件的代码如下:

    spring:
      cloud:
        config:
          name: index
          label: master
          discovery:
            enabled: true
            serviceId: config
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8888/eureka/

    首页配置项 index.yml 中添加如下代码:

    server:
      port: 8081
    spring:
      application:
        name: index
      profiles:
        active: dev
  4. 文章

    文章客户端下 bootstrap.yml 配置文件的代码如下:

    spring:
      cloud:
        config:
          name: article
          label: master
          discovery:
            enabled: true
            serviceId: config
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8888/eureka/

    文章配置项 article.yml 中添加如下代码:

    server:
      port: 8082
    spring:
      application:
        name: article
      profiles:
        active: dev
  5. 评论

    评论客户端下 bootstrap.yml 配置文件的代码如下:

    spring:
      cloud:
        config:
          name: comment
          label: master
          discovery:
            enabled: true
            serviceId: config
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8888/eureka/

    评论配置项 comment.yml 中添加如下代码:

    server:
      port: 8083
    spring:
      application:
        name: comment
      profiles:
        active: dev
  6. 用户

    用户客户端下 bootstrap.yml 配置文件的代码如下:

    spring:
      cloud:
        config:
          name: user
          label: master
          discovery:
            enabled: true
            serviceId: config
    eureka:
      client:
        serviceUrl:
          defaultZone: http://localhost:8888/eureka/

    用户配置项 user.yml 中添加如下代码:

    server:
      port: 8084
    spring:
      application:
        name: user
      profiles:
        active: dev

熔断器

熔断机制可以有效提升应用的健壮性,通过 Hystrix Dashboard 也可以监控 Feign 调用,便于我们随时观察服务的稳定性,因此集成熔断器是很有必要的,本实例将集成 Feign 和 Hystrix 框架。

首先,在 client 的 pom 中加入依赖(因为所有客户端都需要依赖它,所以在 client 中依赖即可),代码如下:

<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

在每个 client 的 Application 都加入一下注解:

@EnableHystrixDashboard
@EnableFeignClients

并加入一下代码:

@Bean
public ServletRegistrationBean getServlet() {
  HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
  ServletRegistrationBean registrationBean = new ServletRegistrationBean<>(streamServlet);
  registrationBean.setLoadOnStartup(1);
  registrationBean.addUrlMappings("/hystrix.stream");
  registrationBean.setName("HystrixMetricsStreamServlet");
  return registrationBean;
}

我们随便启动一个客户端来看看效果。

依次启动 register、config 和 index,访问地址:http://localhost:8081/hystrix,即可看到如下图所示界面:

enter image description here

说明我们成功集成了 Hystrix Dashboard。

持久层框架 MyBatis

一个 Web 应用免不了数据库的操作,因此我们继续来集成数据库框架,本应用采取 MyBatis 框架,连接池使用阿里巴巴的 Druid 框架。

首先在 client 下加入依赖:

<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.40</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

然后在 Git 仓库创建配置文件 database.yml:

spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/blog_db?useUnicode=true&characterEncoding=UTF-8&useSSL=false
      username: root
      password: 1qaz2wsx
      stat-view-servlet:
        login-username: admin
        login-password: admin

依次启动 register、config 和 index,然后访问:http://localhost:8081/druid,输入配置文件设置的用户名和密码,即可进入如下界面:

enter image description here


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 tuyrk@qq.com

文章标题:16-第15课:Spring Cloud 实例详解——基础框架搭建(二)

文章字数:1.3k

本文作者:神秘的小岛岛

发布时间:2020-07-06, 12:03:11

最后更新:2020-07-14, 23:05:21

原始链接:https://www.tuyrk.cn/gitchat/springcloud-quickly/16-framework-build-02/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏