面试中被问到为什么要使用微服务架构?springcloud的核心组件有哪些?

拿我们国家的兵种来说,如何把战争这个单体架构微服务化,就是根据适用的场景,拆分出不同的兵种(微服务)

然后每个兵种之间通过军区指挥部采用特有的通信协议连接起来(RPC) ;

每个兵种内部自治,有自己的业务,数据,部署单元(建制)对外提供打击服务(HTTP)。

微服务

微服务是一种架构风格:

把单体系统拆分成各种微服务(进程集群里面),服务之间通过HTTP或者RPC协议进行通信。

服务内部是围绕某一个问题领域的业务,有自己单独的业务流程,数据存储,自动化测试,和自动化独立部署机制。

解决单体系统的难题:

开发端:部分业务的修改要修改整个项目, 开发维护成本高,容易出错,不利于团队协作;

运维线:部分业务的上线影响整体服务质量,运维无法精确评估系统资源的需求量;

带来的问题:

1,运维需要维护数量庞大的进程;

2,接口的业务流程拉长,一致性比较更难以控制;

3,分布式的复杂性:网络延迟,异步消息,分布式事务等;

基于敏捷项目管理和自动化部署可以应对这些问题。

springcloud整体介绍

基于springboot实现的微服务架构开发工具。

提供了这些分布式问题的解决方案:

springboot带来了什么?

1,提供了一个开发微服务的脚手架(idea的initializer创建springcloud的微服务),减少了从0开始搭建项目的问题;

2,并非重写spring或者替代spring,主要是提供了自动化配置简化原有的样板配置

3,快速开发,提供了各种starter集成其它的组件和解决依赖管理问题

4,轻松部署,内置了web容器,轻松跟docker融合;

涵盖了项目的构建,开发,测试阶段;

springboot快速使用

idea的initializer创建springcloud的微服务

开发一个rest接口

开发接口的单元测试代码

例子代码点我获取!

工程结构

依赖处理

1, parent处理方式

2,dependencyManagemant处理方式

运行

1,java -jar x.jar 运行 正式环境

2,idea提供调试运行; 开发环境

3,maven的spring-boot:run插件运行  开发环境;

springboot配置

自动化配置是springboot最大的亮点。

配置的加载优先级如下:

1,命令行中的参数 ;

2, 系统环境变量中的SPRING_APPLICATION_JSON配置;

3,JNDI属性: java:comp/env

4,java的操作系统属性 System.getProperties();

5,  操作系统的环境变量

6,jar包外部的 application-${profile}.properties

7, jar包内部的 application-${profile}.properties

8, @Configuration注解修改过的类 @PropertySource注解定义的属性

9, SpringApplication.setDefaultProperties()

多环境配置

application.properties放通用配置,指定激活 dev环境

在其他的环境中提供差异化的配置,发布的时候通过命令行指定环境spring.profiles.active=prod;

springboot监控

微服务是的进程的数量增多,必须有一套自动化的监控运维机制来收集微服务的运行指标,进行监控和预警。

spring-boot-starter-actuator 来进行监控。

并配置开启的端点。

常见的监控端点: /health /beans /mappings

小结

首先宏观上回答了为什么微服务会出现,解决了什么问题?

然后初步介绍了spring-cloud带来了什么?

接着从spring-cloud的基础出发,即springboot分析了springboot带来了什么,简单实用,配置和监控;

springboot带来了什么?

以及快速使用springboot开发接口的过程;

简单介绍了 工程结构,依赖的处理方式 , 运行指令等细节;

然后基于配置,介绍了配置参数的加载顺序,多环境下的最佳实践。

最后介绍了微服务继续的自动监控和运维机制 actuator ,收集微服务的端点信息。

原创不易,点赞关注支持一下吧!转载请注明出处,让我们互通有无,共同进步,欢迎沟通交流。

我会持续分享Java软件编程知识和程序员发展职业之路,欢迎关注,我整理了这些年编程学习的各种资源,关注公众号‘李福春持续输出’,发送'学习资料'分享给你!

面试刷题37:微服务是什么?springcloud,springboot是什么?的更多相关文章

  1. 安利一个基于Spring Cloud 的面试刷题系统。面试、毕设、项目经验一网打尽

    推荐: 接近100K star 的Java学习/面试指南 Github 95k+点赞的Java面试/学习手册.pdf 今天给小伙伴们推荐一个朋友开源的面试刷题系统. 这篇文章我会从系统架构设计层面详解 ...

  2. 使用Redis为注册中心的Dubbo微服务架构(基于SpringBoot)

    title: 使用Redis为注册中心的Dubbo微服务架构(基于SpringBoot) date: 2019-07-30 14:06:29 categories: 架构 author: mrzhou ...

  3. 一、微服务概述与SpringCloud

    一.微服务概述与SpringCloud 1.微服务与微服务架构 微服务强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题/提供落地对应服务的一个服务应用,狭意的看,可以看作Eclipse里面 ...

  4. 微服务架构之SpringCloud

    微服务架构之SpringCloud介绍 1.什么是微服务 2.SpringCloud架构 3.SpringCloud组件 4.微服务相关技术 Docker Jenkins

  5. 【微服务架构】SpringCloud之Eureka(服务注册和服务发现基础篇)(二)

    上篇文章讲解了SpringCloud组件和概念介绍,接下来讲解一下SpringCloud组件相关组件使用.原理和每个组件的作用的,它主要提供的模块包括:服务发现(Eureka),断路器(Hystrix ...

  6. 31.【微服务架构】SpringCloud之Feign(五)

    Feign简介 Feign 是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Fei ...

  7. 微服务学习二:springboot与swagger2的集成

    现在测试都提倡自动化测试,那我们作为后台的开发人员,也得进步下啊,以前用postman来测试后台接口,那个麻烦啊,一个字母输错就导致测试失败,现在swagger的出现可谓是拯救了这些开发人员,便捷之处 ...

  8. 【微服务架构】SpringCloud组件和概念介绍(一)

    一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及 ...

  9. 微服务分布式 spring cloud springboot 框架源码 activiti工作流 前后分离

    1.代码生成器: [正反双向](单表.主表.明细表.树形表,快速开发利器)freemaker模版技术 ,0个代码不用写,生成完整的一个模块,带页面.建表sql脚本.处理类.service等完整模块2. ...

随机推荐

  1. OFD电子证照模版制作工具 --(采用wpf开发)

    前言  ofd应用的范围非常广,电子证照是其中非常重要的一个应用.同一类电子证照具有相同的板式.元数据:所以电子证照非常适合用模版来制作.模版就是板式样式固定,每个具体的证照只是文字或图片内容不同.比 ...

  2. (转)GNU风格ARM汇编语法指南(非常详细)2

    原文地址:http://zqwt.012.blog.163.com/blog/static/120446842010111481828392/ 2.GNU汇编程序中的标号symbol(或label) ...

  3. go例子(三) 使用context实现发牌手策略

    使用context包实现发牌手策略, 发牌手策略:罗永浩在介绍TNT工作站时描述,将一个任务分发给多个处理者处理,谁先处理完使用谁的结果,取消其他的处理者的任务. 经典的例子:同时在百度.google ...

  4. ES6 第七节 ES6中新增的数组知识(1)

    目录 ES6 第七节 ES6中新增的数组知识(1) 第七节 ES6中新增的数组知识(1) JSON数组格式转换 Array.of()方法: find()实例方法: ES6 第七节 ES6中新增的数组知 ...

  5. 安卓App自动化测试环境

    一.appium安装 1.nodejs依赖 2..net framework 3.Appium桌面程序安装 3.1.安装包获取 3.2.安装过程 二.Java_ jdk安装 1.Java_jdk版本说 ...

  6. F版本SpringCloud1—大白话为啥要有微服务?啥是微服务?SpringCloud为什么有那么多组件?

    前言 为什么要有微服务呢? 什么是微服务? SpringCloud 中为什么会有那么多的组件? ...... 作为SpringCloud教程的第一篇,不讲解具体的技术使用,通过一个通俗易懂的小故事,来 ...

  7. Shell中的参数传递

    原文链接 我们先来定义一个方法 function methodName() { paramName1=$1 paramName2=$2 paramName3=$3 # 依此类推,参数是从1开始标号,而 ...

  8. select_related prefetch_related

    # select_related与prefetch_related# # select_related帮你直接连表操作 查询数据 括号内只能放外键字段# # res = models.Book.obj ...

  9. Windows下利用Chrome调试IOS设备页面

    本文介绍如何在 Windows 系统中连接 iOS设备 并对 Web 页面进行真机调试 必须前提 iOS设备.数据线 Node.js 环境 Chrome 浏览器 环境准备 安装Node环境 参考Nod ...

  10. 太赞了!阿里几位工程师重写了 《Java 并发编程》

    事情是这样的,前些日子和得知一个读者在准备阿里的面试,我蛮有兴趣的跟他聊了起来,随着话题越来越深入,我发现这位读者有意思,他和几位阿里的工程师之前编写了一本 concurrent.redspider. ...