美文网首页springboot微服务开发实战springcloud
[微服务系列] 1. 微服务构建框架--Spring Boot

[微服务系列] 1. 微服务构建框架--Spring Boot

作者: Xiangdong_She | 来源:发表于2017-11-08 20:28 被阅读489次

    一、微服务

    作为微服务系列的第一篇文章,首先要了解一下微服务的概念。
    微服务是系统架构上的一种风格,主要是将原本单体的系统拆分为多个小型的服务,这些小型的服务在各自的进程中运行,每个服务之间的通信是基于HTTP的Restful API进行通信。每个服务都维护着各自的数据存储、业务开发、自动化测试案例等,但它们都是围绕着系统中某一项或者一些耦合度较高的业务功能进行构建。

    二、 SpringBoot

    SpringBoot是构建微服务的基础,因为其自动化配置、快速开发、轻松部署等一些特性都是非常适合作为微服务架构中各个微服务的框架。它的主要作用就是创建和启动基于Spring框架的项目,帮助开发人员容易的、迅速的创建出独立运行和产品级别的基于Spring的应用。SpringBoot具有以下特性:

    • 创建独立运行的基于Spring的项目
    • 直接嵌入Tomcat/Jetty服务器
    • 解决大量的配置问题,通过一系列Starter POMs,提供模块化的依赖管理工作
    • 提供可以直接在生产环境中使用的功能,如性能指标、应用信息和应用健康检查。
    • 供推荐的基础 POM 文件来简化 Apache Maven 配置

    三、快速入门

    1. 系统及工具版本要求
    • Java 1.7+
    • Maven 3.5+
    • Spring Framework 4.2.7+
    • eclipse/intellij
    2. 项目搭建
    1. 选择SpringBoot项目
    new 1.png
    1. 自定义GroupID和ArtifactID
    new 2.png
    1. 选择Web下的web,方便之后构建Restful API 接口
    new 3.png
    1. 完成
    new 4.png
    1. 项目结构
    new 5.png
    3. 添加RESTFul API接口

    在包com.shexd.springbootdemo.Controller;中添加如下代码

    @RestController
    public class TestRestful {
        @RequestMapping("/")
        public String home(){
            return "hello spring";
        }
    }
    
    4. 启动应用

    启动Springboot有多种方式:

    • 将应用作为Java应用程序,直接使用main函数来启动
    • 因为应用使用Maven管理,并且应用中使用spring-boot-maven-plugin插件,所以,可以使用Maven的命令来启动应用,如下是应用在不同声明周期所用到的不同的maven命令
    maven 1.png
    • 将应用打包成Jar包,使用java -jar xxxx.jar命令来启动项目
    5. 测试

    测试分为两种方式:

    • 使用单元测试来测试接口
    • 使用网页直接访问
    • 使用postman接口测试工具来测试接口
    1. 了解以上的知识之后,我们使用main函数启动项目,然后访问localhost:8080/即可访问到主页。

    2. 使用单元测试进行测试,代码如下:

    @RunWith(SpringJUnit4ClassRunner.class)
    //@SpringApplicationConfiguration(classes = SpringbootdemoApplication.class)
    @SpringBootApplication
    @WebAppConfiguration
    public class SpringbootdemoApplicationTests {
    
        private MockMvc mvc;
    
        @Before
        public void  setUp(){
            mvc= MockMvcBuilders.standaloneSetup(new TestRestful()).build();
        }
    
        @Test
        public void  hello() throws Exception {
            mvc.perform(MockMvcRequestBuilders.get("/")
                    .accept(MediaType.APPLICATION_JSON))
                    .andExpect(status().isOk())
                    .andExpect(content().string(equalTo("hello spring")));
        }
    }
    
    4. 实时掌握应用的健康状况

    在微服务中,我们是将单体应用拆分为多个小的服务进程,但是随着业务和微服务应用逐步增多,那么部署应用的数量也随之增多,使得传统的运维的复杂度大大提升。这时就需要一套自动化监控的机制来实时的监控应用的运行状态,并根据一些指标来完成相应的操作。
    在springboot中,spring-boot-starter-actuator模块为应用提供了一系列的用于监控的端点。通过此模块,我们可以获取程序中加载的应用配置、环境变量、内存信息、线程池信息以及配置报告等内容。

    1. 在pom中添加模块
            <!--为应用提供监控端点-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
    
    2. 配置健康监控的端口

    通过配置此端口,可以和应用本身的端口区分开,如果不指定,则使用和server相同的端口

    application.yml文件中设置如下:

    management:
      port: 60000
      health:
        mail:
          enabled: false
    
    3. 启动应用并查看健康状况

    访问http://localhost:60000/beans,获取应用上下文创建的所有Bean

    监控1.png

    访问http://localhost:60000/mappings,返回所有Spring MVC的控制器映射关系报告

    监控2.png

    更多接口信息如下
    该模块主要分为如下的三类及每个类对应的一些接口信息:

    应用配置类:

    HTTP方法 API 描述
    GET /autoconfig 获取应用自动化配置报告,包括自动化配置候选项
    GET /beans 获取应用上下文创建的所有Bean
    GET /configprops 获取配置的属性信息报告
    GET /env 获取所有可用的属性报告
    GET /env/{name} 查看具体变量的值
    GET /info 返回应用自定义的信息

    度量指标类

    HTTP方法 API 描述
    GET /metrics 返回当前应用的各类重要度量指标
    GET /metrics/{name} 查看具体指标
    GET /health 获取应用各类健康指标信息
    GET /dump 暴露程序运行中的线程信息
    GET /trace 返回基本的http跟踪信息

    操作控制类

    HTTP方法 API 描述
    POST /shutdonw 关闭应用

    四、结束

    此文主要是通过构建Springboot项目,实现了Restful接口,并添加监控信息,以对微服务的基本框架有个大概的轮廓。

    相关文章

      网友评论

        本文标题:[微服务系列] 1. 微服务构建框架--Spring Boot

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