zoukankan      html  css  js  c++  java
  • 面试刷题37:微服务是什么?springcloud,springboot是什么?

    file

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

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

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

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

    微服务

    微服务是一种架构风格:

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

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

    解决单体系统的难题:
    开发端:部分业务的修改要修改整个项目, 开发维护成本高,容易出错,不利于团队协作;
    运维线:部分业务的上线影响整体服务质量,运维无法精确评估系统资源的需求量;

    带来的问题:

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

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

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

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

    springcloud整体介绍

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

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

    file

    springboot带来了什么?

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

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

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

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

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

    springboot快速使用

    idea的initializer创建springcloud的微服务

    开发一个rest接口

    开发接口的单元测试代码

    例子代码点我获取!

    工程结构

    file

    依赖处理

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

  • 相关阅读:
    Redis 3.0.4 链表
    Redis 3.0.4 简单动态字符串(sds)
    4. 寻找两个有序数组的中位数
    redis主从同步异常
    redis重命名flushall和flushdb重启失败
    redis3.2 aof重写
    【转载】Redis 4.0 自动内存碎片整理(Active Defrag)源码分析
    [转]memcached对key和value的限制 memcached的key最大长度和Value最大长度
    LSM树(Log-Structured Merge Tree)存储引擎
    Linux使用详解(进阶篇)
  • 原文地址:https://www.cnblogs.com/snidget/p/12691636.html
Copyright © 2011-2022 走看看