- gitlab是什么,为什么要用gitlab?
gitlab作为一个开源项目开始帮助团队在团建开发上进行合作。通过以业界领先的步伐交付新的功能为整个软件开发和操作生命周期提供了一个单独的应用平台。 gitlab提供了管理、计划、创建、验证、打包、发布、配置、监视和保护应用程序所需的一切。 gitlab是一个基于git实现的在线代码仓库托管软件,一般用于企业、学校等内部网络搭建git私服。gitlab是一个提供代码托管、提交审核和问题跟踪的代码管理平台。
- 如何使用git拉取代码?
# ssh-keygen -t ras -C "lisi@bdqn.cn"
上传公钥到gitlab或者GitHub
# git config --global user.name "lisi"
# git config --global user.email "lisi@bdqn.cn"
# git clone git@gitlab.bdqn.cn:ios/ios.git
- 公司中产品发布的流程是怎样的?
产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线
- 什么是持续集成?为什么要持续集成?
持续集成(Continuous integration),简称CI,是指开发阶段,对项目进行持续性自动化编译、测试,以达到控制代码质量的手段。持续集成是一种软件开发实践
1)易于定位错误。也就是当你的持续集成失败了,说明你新加的代码或者修改的代码引起了错误
更加充分地测试系统中的各个单元
2)有助于项目的开发数据的收集
3)便于开发流程的管理。要把一个开发的build提交给测试组作测试,测完满意了,再提交到发布组去发布
- 简述Jenkins持续集成的工作原理
-
简述maven仓库的类型和功能
-
简述jar包和war包的区别
JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何处理特定的 JAR。
简单来说,jar包就是别人已经写好的一些类,然后对这些类进行打包。可以将这些jar包引入到你的项目中,可以直接使用这些jar包中的类和属性,这些jar包一般放在lib目录下。
war包是JavaWeb程序打的包,war包里面包括写的代码编译成的class文件,依赖的包,配置文件,所有的网站页面,包括html,jsp等等。一个war包可以理解为是一个web项目,里面是项目的所有东西。
- 简述你对微服务的理解
微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。 微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
- 简述spring cloud中hystrix组件的作用
断路器,类似于物理电路图中的断路器。
正常情况下,当整个服务环境中,某一个服务提供方由于网络原因、数据库原因或者性能原因等,造成响应很慢的话,调用方就有可能短时间内累计大量的请求线程,最终造成调用方down,甚至整个系统崩溃。而加入hystrix之后,如果hystrix发现某个服务的某台机器调用非常缓慢或者多次调用失败,就会短时间内把这条路断掉,所有的请求都不会再发到这台机器上。
如果某个服务所有的机器都挂了,hystrix会迅速失败,马上返回,保证被调用方不会有大量的线程堆积。
使用eureka时,当一个服务提供方挂掉以后,服务订阅者最长可能30s以后才知道,那这30s就会出现大量的调用失败。如果在系统里面集成了hystrix,就会马上把挂掉的这台服务提供方断路掉,让请求不再转发到这台机器上,大量减少调用失败。
hystrix执行断路操作以后,并不表示这条路就永远断了,而是会一定时间间隔内缓慢尝试去请求这条路,如果能请求成功,断路就会恢复。
- 简述雪崩效应(spring cloud)
- 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元。由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很难去定位,怎么解决这个问题?
在微服务系统中,一个来自用户的请求,请求先达到前端A(如前端界面),然后通过远程调用,达到系统的中间件B、C(如负载均衡、网关等),最后达到后端服务D、E,后端经过一系列的业务逻辑计算最后将数据返回给用户。对于这样一个请求,经历了这么多个服务,怎么样将它的请求过程的数据记录下来呢?这就需要用到服务链路追踪。
一个分布式服务跟踪系统,主要有三部分:数据收集、数据存储和数据展示
服务追踪的追踪单元是从客户发起的请求(request)抵达被追踪系统的边界开始,到被追踪系统向客户返回响应(response)为止的过程,称为一个“trace”。每个 trace 中会调用若干个服务,为了记录调用了哪些服务,以及每次调用的消耗时间等信息,在每次调用服务时,埋入一个调用记录,称为一个“span”。这样,若干个有序的 span 就组成了一个 trace。在系统向外界提供服务的过程中,会不断地有请求和响应发生,也就会不断生成 trace,把这些带有span 的 trace 记录下来,就可以描绘出一幅系统的服务拓扑图。附带上 span 中的响应时间,以及请求成功与否等信息,就可以在发生问题的时候,找到异常的服务;根据历史数据,还可以从系统整体层面分析出哪里性能差,定位性能优化的目标。
spring cloud sleuth可以结合zipkin,将信息发送到zipkin,利用zipkin的存储来存储信息,利用zipkin来展示数据
spring cloud sleuth为微服务之间调用提供链路追踪。通过sleuth可以很清楚的了解到一个请求经过了哪些服务,每个服务的处理花费了多久。从而我们可以很方便的理清各微服务间的调用关系。
- 简述es集群master选举的过程
- 简述es集群的容错机制及这个过程中的集群状态变化
- 宕机瞬间
master node宕机的一瞬间,该节点的primary shard(主分片)就没有了,此时状态就不是active status,那么集群中就不是所有的主分片都是active的了 - 容错步骤一
master选举,es自动选举另一个node成为master,承担起master的责任 - 容错步骤二
新master将丢失掉的主分片的某个复制分片提升为主分片,此时cluster status会变成yellow,因为所有的主分片都变成active status了,但是少了一个复制分片 - 容错步骤三
重启宕机node,新master会将缺失的副本shard都copy一份到该节点,而且该节点会使用之前已有的分片数据,只是同步一下宕机的修改,cluster status变为green
-
简述Tomcat的优化项目有哪些
-
简述fastdfs存储系统文件上传的流程
-
简述fastdfs存储系统文件下载的流程
-
你知道的日志系统的常见方案有哪些?就其中一种详述其原理
-
简述nexus的功能
-
简述Tomcat运行原理
-
nexus中默认仓库的分类有哪些?
- group(仓库组类型):又叫组仓库,用于方便开发人员,自己设定的仓库
- hosted(宿主类型):内部项目的发布仓库(内部开发人员发布上去存放的仓库)
- proxy(代理类型):从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration页签下Remote Storage Location属性的值,即被代理的远程仓库的路径)
- virtual(虚拟类型):虚拟仓库(这个基本上用不到)
- 谈谈你对密钥对的理解,并举例说明密钥对的使用