“灾难无情人有情”:备战金三银四之微服务架构问题!(含解析)

前言:

如今IT界跳槽已成常态,跳槽,可能有如下缘由:java

  1. 技术达到瓶颈,没法在此公司有好的提高,前几年我感受基本不会出现,至少我如今没出现。
  2. 实力与薪资不匹配。
  3. 和同事 领导不和,若是你在几家公司都这样,要自我反省一下是否是本身的问题。

仅我的观点,其余诸如地域 情感 兴趣等我的缘由不作讨论。node

这也致使不少企业在用人时会比较在乎员工的稳定性通常外包公司都会比较忙,相对来讲,成长应该是比较快的,而你的工做性质偏业务,那么你要想清楚一个问题,之后你的发展轨迹是怎样的?是在技术方向越走越远呢,仍是在管理方向发展呢?web

1、 微服务架构专题(思惟导图)

2、微服务是干什么的

我对于微服务最大的体会就是:对于云平台来讲,若是元数据驱动的平台组件是骨骼,那么微服务和触发器就是串联骨骼的经络和血脉没有经络和血脉,一堆组件仅仅是静态的,不能变化,没有反馈,更何谈交互。而一个PaaS平台能够孵化无数个SaaS应用,每一个应用都须要使用一套小服务来开发,而为了防止应用搭建复杂化和避免后期难以维护,因此每一个服务运行在本身的进程中,并使用轻量级机制通讯,一般是HTTP AP(Rest的方式,这就是为何我能看到那些标签的存在)。好处体如今如下方面:面试

  • 这些服务基于业务能力构建,并可以经过自动化部署机制来独立部署(体如今平台就是微服务站点部署和独立微服务站点部署)
  • 这些服务可使用不一样的编程语言实现(只要实现结果,无所谓编程语言,这是我认为如今平台没有充分使用到微服务的地方,也多是我平时使用其它语言的业务场景较少)
  • 这些服务可使用不一样数据存储技术(“非结构化数据和结构化数据均可以按需存储”)
  • 这些服务能够保持最低限度的集中式管理(这个厉害了,至关于接口不只能够在一个项目里复用,甚至在不一样项目间复用)

官方有个2pizza理论颇有趣: 微 狭义来说就是体积小、著名的"2 pizza 团队"很好的诠释了这一解释(2 pizza 团队最先是亚马逊 CEO Bezos提出来的,意思是说单个服务的设计,全部参与人从设计、开发、测试、运维全部人加起来 只须要2个披萨就够了 )。 而所谓服务,必定要区别于系统,服务一个或者一组相对较小且独立的功能单元,是用户能够感知最小功能集。spring

3、微服务的特性

  • 每一个微服务可独立运行在本身的进程里,一系列独立运行的微服务共同构建起了整个系统
  • 每一个服务为独立的业务开发,一个微服务通常完成某个特定的功能,好比:订单管理,用户管理等(我用于图书管理系统和工单中心)
  • 微服务之间经过一些轻量级的通讯机制进行通讯,例如经过REST API或者RPC的方式进行调用(这就是Rest标签的由来吧,是一种通讯机制)。

4、微服务的特色

  • 易于开发和维护。因为微服务单个模块就至关于一个项目,开发这个模块咱们就只需关心这个模块的逻辑便可,代码量和逻辑复杂度都会下降,从而易于开发和维护。(部署独立mrest站点,启动迅速,代码量小)
  • 启动较快,这是相对单个微服务来说的,相比于启动单体架构的整个项目,启动某个模块的服务速度明显是要快不少的。(回收应用程序池便可,不到1分钟搞定)
  • 局部修改容易部署,在开发中发现了一个问题,若是是单体架构的话,就须要从新发布并启动整个项目,很是耗时间,可是微服务则不一样,哪一个模块出现了bug只须要解决那个模块的bug就能够了,解决完bug以后,只须要重启这个模块的服务便可,部署相对简单,没必要重启整个项目从而大大节约时间。(有了bug直接hotfix这部分的ESB的interface)
  • 技术栈不受限,好比订单微服务和电影微服务原来都是用java写的,如今咱们想把电影微服务改为nodeJs技术,这是彻底能够的,并且因为所关注的只是电影的逻辑而已,所以技术更换的成本也就会少不少。(虽然目前尚未接触到多语言技术扩展,但感受这个很强)
  • 按需伸缩,单体架构在想扩展某个模块的性能时不得不考虑到其它模块的性能会不会受影响,对于微服务来说,彻底不是问题,电影模块经过什么方式来提高性能没必要考虑其它模块的状况。

5、微服务(Microservice)架构快速指南

1.微服务技术栈有哪些?docker

2.微服务架构的缺点是什么?编程

  • 微服务架构可能带来过多的操做。
  • 须要DevOps技巧
  • 可能双倍的努力。
  • 分布式系统可能复杂难以管理。
  • 由于分布部署跟踪问题难。
  • 当服务数量增长,管理复杂性增长。

3.微服务适合哪一种状况?安全

当你须要支持桌面 web 移动 智能电视 可穿戴时都是能够的,甚至未来你可能不知道但须要支持的某种环境。springboot

4.哪一个公司或产品使用微服务架构?服务器

大部分大型网站系统如Twitter, Netflix, Amazon 和 eBay都已经从传统总体型架构monolithic architecture迁移到微服务架构

5.微服务之间是如何独立通信的?

这依赖需求,经过使用HTTP/REST,数据格式使用JSON 或 Protobuf(Binary protocol),通信协议是自由的。

6.为何如今每一个人都在谈论微服务?

自从SOA面试15年来,随着RESTful web服务和JSON数据交换格式流行,简单快速创建一个可链接的服务已经愈来愈方便了。

6、dubbo应用及源码解读面试题

1. Dubbo telnet 命令能作什么?

2. Dubbo必须依赖的包有哪些?

3. Dubbo的管理控制台能作什么?

4. 说说 Dubbo 服务暴露的过程。

5. Dubbo 和 Dubbox 有什么区别?

6. 你还了解别的分布式框架吗?

7. Dubbo 能集成 Spring Boot 吗?

8. 在使用过程当中都遇到了些什么问题?

9. 你读过 Dubbo 的源码吗?

10. 你以为用 Dubbo 好仍是 Spring Cloud 好?

7、springboot面试题

1. 如何从新加载Spring Boot上的更改,而无需从新启动服务器?

2. Spring Boot中的监视器是什么?

3. 如何在Spring Boot中禁用Actuator端点安全性?

4. 如何在自定义端口上运行Spring Boot应用程序?

5. 如何实现Spring Boot应用程序的安全性?

6. 如何集成Spring Boot和ActiveMQ?

7. 如何使用Spring Boot实现分页和排序?

8. 什么是Swagger?你用Spring Boot实现了它吗?

9. 如何使用Spring Boot实现异常处理?

10. 您使用了哪些starter maven依赖项?

8、docker虚拟化技术面试题

1. 如何批量删除或者中止运行的容器?

2. 如何查看镜像支持的环境变量?

3. 本地的镜像文件都存放在哪里

4. 构建Docker镜像应该遵循哪些原则?

5. 容器退出后,经过docker ps 命令查看不到,数据会丢失么?

6. 如何临时退出一个正在交互的容器的终端,而不终止它?

7. 不少应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?

8. 使用docker port 命令映射容器的端口时,系统报错Error: No public port ‘80’ published for …,是什么意思?

9. 能够在一个容器中同时运行多个应用进程吗?

10. 如何控制容器占用系统资源(CPU,内存)的份额?

9、springcloud应用及源码解读面试题

1. springcloud如何实现服务的注册和发现

2. SpringCloud和Dubbo有什么区别?

3. springcloud断路器的做用

4. Spring Cloud 有了解多少?

5. 什么是Spring Cloud Bus?咱们须要它吗?

6. 使用Spring Cloud有什么优点?

7. springcloud你是什么?

总结

上面提到的面试题我这边都整理成文档放在我新开通的公众号【风平浪静如码】里,海量Java相关文章,学习资料都会在里面更新,整理的资料也会放在里面。

以为写的还不错的就点个赞,加个关注呗!点关注,不迷路,持续更新!!!

相关文章
相关标签/搜索