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

前言:

现在IT界跳槽已成常态,跳槽,可能有以下原因:

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

仅个人观点,其他诸如地域 情感 兴趣等个人原因不做讨论。

这也导致很多企业在用人时会比较在意员工的稳定性一般外包公司都会比较忙,相对来说,成长应该是比较快的,而你的工作性质偏业务,那么你要想清楚一个问题,以后你的发展轨迹是怎样的?是在技术方向越走越远呢,还是在管理方向发展呢?

一、 微服务架构专题(思维导图)

二、微服务是干什么的

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

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

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

三、微服务的特性

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

四、微服务的特点

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

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

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

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

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

3.微服务适合哪种情况?

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

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

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

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

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

6.为什么现在每个人都在谈论微服务?

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

六、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 好?

七、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依赖项?

八、docker虚拟化技术面试题

1. 如何批量删除或者停止运行的容器?
2. 如何查看镜像支持的环境变量?
3. 本地的镜像文件都存放在哪里
4. 构建Docker镜像应该遵循哪些原则?
5. 容器退出后,通过docker ps 命令查看不到,数据会丢失么?
6. 如何临时退出一个正在交互的容器的终端,而不终止它?
7. 很多应用容器都是默认后台运行的,怎么查看它们的输出和日志信息?
8. 使用docker port 命令映射容器的端口时,系统报错Error: No public port ‘80’ published for …,是什么意思?
9. 可以在一个容器中同时运行多个应用进程吗?
10. 如何控制容器占用系统资源(CPU,内存)的份额?

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

1. springcloud如何实现服务的注册和发现
2. SpringCloud和Dubbo有什么区别?
3. springcloud断路器的作用
4. Spring Cloud 有了解多少?
5. 什么是Spring Cloud Bus?我们需要它吗?
6. 使用Spring Cloud有什么优势?
7. springcloud你是什么?

总结

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

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

原文地址:https://blog.51cto.com/14570694/2472613

时间: 2024-10-02 06:24:12

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

Java高级程序员面试大纲——备战金三银四跳槽季

跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽.切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(影响自己的发展,偏移自己规划的轨迹),还是钱给少了,不受重视. 准备不充分的面试,完全是浪费时间,更是对自己的不负责(如果title很高,当我没说). 今天给大家分享下chenssy在这次跳槽中整理的Java面试大纲,其中大部分都是面试过程中的面试题,可以对照这查漏补缺,当然了,这里所列的肯定不可能覆盖全部方式. 项目介绍 大部

备战“金三银四”:分享面试小技巧及必问面试题(含答案!)

面试技巧 1.背熟你的简历 原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目.技术都无法描述清楚的话,我想没有哪家公司会接受这样的,哪怕你是超级人才,你自我表述不行,估计也会为此头疼,所以,切记:一定要背好自己的简历,不要求你能全部记下,至少要熟记你最近所待过的两家公司,这两家公司里面你做过的项目,你负责的模块,项目里面用到的技术以及相对应的技术实现方案(这个尤为重要). 2.深入了解并熟记部分Java基础

金三银四铜五铁六

鲁班简称LB 据说,金三银四,截止今天为止面试黄金时间已经过去十之八九,而LB恰逢是这批面试大军其中的一名小兵,很不幸今年恰逢遇上了互联网寒冬(即各大公司都在裁员,对外提供岗位相对较少的,这意味着很多猿即将面临着更多的竞争对手和相对较少的岗位困境),LB求职过程种种被虐,尸体趟过召唤师峡谷每个角落,如今历历在目,终究,当初的一名无名小卒如今已是一名超级兵哈哈,但是从这个事情上却学到了不少的东西,LB不亏. 经验也总是用来交流用的,于是LB觉得有必要记录下来,也许对猿们会有一丝帮助. 首先,找工作

金三银四,我面试七家公司拿到四个offer,面试历程和感悟分享

人人都说金三银四,由于一些个人的原因,博主也在今年的四月份抽空面了几家公司,这里来总结下学习到的东西. 先简单的说下博主的情况: 2015年7月份毕业,到现在加上实习可以算三年工作经验 base武汉,相比于北上广深,工作机会少了点 目前就职于驾考/汽车行业的互联网公司 大概就这么多,给出自身的情况是想给大家一个参考.由于并没有敢裸辞,所以边上班边去面试.今年找工作给我的感受是:市场貌似已经饱和,自己投递的很多简历都没了下文,面试很多走的内推,也没了之前很多的猎头电话,一个字形容就是 "惨&quo

金三银四,磨砺锋芒;剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)下

金三银四,磨砺锋芒:剑指大厂,扬帆起航(2020年最全大厂WEB前端面试题精选)下 引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待!2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上的心,来面对未来每一天的挑战! 所谓"兵马未动,粮草先行",我们打响明天的战役也需要精神食粮来做后勤保障才是.在此我整理了多位从业者和我在2019年底至2020年初的一厂面试精选题,希望对磨砺锋芒.奋发向上

春节过后就是金三银四求职季,分享几个Java面试妙招,轻松搞定HR!

春节过后就是金三银四,分享几个Java面试妙招,轻松搞定HR!2020年了,先祝大家新年快乐!今年IT职位依然相当热门,特别是Java开发岗位.软件开发人才在今年将有大量的就业机会.春节过后,金三银四求职季到来,下面教你8个"妙招",希望能帮你顺利面试成功.1.知道如何写算法如果你申请的是软件工程师的工作,那么显然你需要知道如何编码.写代码脚本其实与写算法来解决软件问题略有不同.用人单位可能会提出这样的问题,"写一个算法,可以从链表中找到某个元素,并将此元素挪到列表末尾.&q

2019大厂Java岗面试题全曝光,刷完这1020道,金三银四大厂等你

2019大厂Java岗面试题全曝光,刷完这1020道,金三银四大厂等你 前言: 本文收集整理了各大厂常见面试题N道,你想要的这里都有 内容涵盖:Java.MyBatis.ZooKeeper.Dubbo.Elasticsearch.Memcached.Redis.MySQL.Spring.Spring Boot.Spring Cloud.RabbitMQ.Kafka.Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码. 看面试题可以是为了面试,也可以是对自己学到的东西的一种查漏

金三银四,磨砺锋芒;剑指大厂,扬帆起航(最全Android开发工程师面试指南)

引言 元旦匆匆而过,2020年的春节又接踵而来,大家除了忙的提着裤子加班.年底冲冲冲外,还有着对于明年的迷茫和期待! 2019年有多少苦涩心酸,2020年就有更多幸福美好,加油,奥利给!怀着一颗积极向上的心,来面对未来每一天的挑战! 所谓"兵马未动,粮草先行",我们打响明天的战役也需要精神食粮来做后勤保障才是. 在此我整理了一份安卓开发面试指南,希望对磨砺锋芒.奋发向上的小伙伴有所帮助,祝你早日剑指大厂,扬帆起航,奥利给! Java基础 Java集合框架 Java集合--ArrayLi

接近金三银四?不要慌,先刷完这几百道面试题

快到金三银四了,很多小伙伴还没有复工,在家呆的有点慌,不知道之后会面临的裁员还是被裁员.在这里我给大家收集了很多面试题,刷完这些面试题,金三银四丝毫不用慌了 AndroidBAT面试专题PDF+学习笔记+相对应的视频教程(见末尾) 一丶Android常问基础面试点 1.四大组件的生命周期和简单用法 1)Activity: onCreate()->onStart()->onResume()->onPause()->onStop()->onDestory()onCreate():