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

author author     2023-04-17     424

关键词:

技术图片

前言:

现在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相关文章,学习资料都会在里面更新,整理的资料也会放在里面。

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

技术图片

技术图片

java写手机app,赶紧收藏备战金三银四!

原理讲解前,先看一个最经典的业务场景,如开发一个电商网站,要实现支付订单的功能,流程如下:创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”扣减相... 查看详情

docker端口映射,赶紧收藏备战金三银四!

美团一面(50分钟左右)进程和线程死锁的必要条件网络,七层协议TCP和UDP的区别hashmap详细讲一下hashmap底层是如何解决hash冲突的hashmap和linkedhashmap数据库的索引,为什么推荐自增id,有什么优点MySQL的引擎࿱... 查看详情

2022android大厂面试题汇总,备战2022金三银四跳槽季。

前言跳槽时时刻刻都在发生,但是我建议大家跳槽之前,先想清楚为什么要跳槽。切不可跟风,看到同事一个个都走了,自己也盲目的开始面试起来(期间也没有准备充分),到底是因为技术原因(... 查看详情

2021最强android中高级大厂面试源码秘籍,为你备战2022金三银四,直通大厂

前言很多人都觉得阅读源码是一件比较困难的事情,虽然程序员每天都和代码打交道,但是经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。然而,会读代码的并... 查看详情

java常用面试题汇总助你备战金三银四

前言我坚信,机会永远属于有准备的人,我们与其羡慕他人的成功,不如从此刻起,积累足够多的知识和面试经验,为将来进入更好的公司做好充分的准备!想让面试官在短短的几十分钟内认可你的能力?想在最短的时间内收获... 查看详情

android大厂面试必问framework层面试题(展望2022,备战金三银四)

前言过去的一年,很多开发者都在金三银四成功的拥抱到了高薪,很多Androider也准备在今年大展身手。但也有很多人在过去的一年略显遗憾:对自己的简历多次更改,多次投递,多次的面试,但收到的都是... 查看详情

2023​史上最全软件测试工程师常见的面试题总结​备战金三银四(代码片段)

软件的生命周期(prdctrm)计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(runningmaintrnacne)测试用例用例... 查看详情

“金三银四”是找工作的最佳时期吗?

一、为什么会出现“金三银四”的现象职场中,一直有“金三银四、金九银十”的说法,这指的是一年中求职的两个高峰期那么为什么会出现金三银四的现象?一、年终奖已发放,调薪情况已确定二、公司增加员... 查看详情

讨论帖这个金三银四,你计划跳槽吗?

@折腾不止的追梦人、@thinkwei、@fising、@axuebin、@敲键盘的猫、@三掌柜、@北枳、@Meathill、@Armey、@五行缺钱请以上这十位用户私聊我领取精美礼品 查看详情

金三银四2022android面经实录(代码片段)

1、项目经历,业务,难点2、Java基础,JVM,集合原理3、Android基础,View体系,View绘制流程,事件分发,屏幕刷新,动画原理4、常见三方库原理5、Jetpack6、AndroidFramework7、算法8、Kotlin方法重载问题,泛型相关word常用的三方库原理,... 查看详情

金三银四铜五铁六(代码片段)

   鲁班简称LB  据说,金三银四,截止今天为止面试黄金时间已经过去十之八九,而LB恰逢是这批面试大军其中的一名小兵,很不幸今年恰逢遇上了互联网寒冬(即各大公司都在裁员,对外提供岗位相对较少的,这意味... 查看详情

2023备战金三银四,python自动化软件测试面试宝典合集

接上篇:11、点击塞钱进红包,选择使用新卡付款,按照流程添加新卡,此时同样需要考虑金额>新卡余额,金额<新卡余额,金额=新卡余额三种情况12、使用指纹确认付款(正确的/不正确的指纹)13、... 查看详情

223道2021金三银四阿里高频面试题分享!

...幅原因不能把答案分享出来,文末会有博主整理的2021金三银四阿里高频面试题免费获取方式!模块一:Java基础JAVA中的几种基本数据类型是什么,各自占用多少字节。String类能被继承吗,为什么?String࿰... 查看详情

“金三银四”求职季过去了,五月份还会是技术岗找工作的好时机吗?

#金三银四##求职面试大家说#有人问我:“金三银四”求职季过去了,五月份还会是找工作的好时机吗?金三银四,金九银十,是教育行业公认的黄金招聘期,可是真的有那么玄乎吗?我认为不尽然。不... 查看详情

金三银四,给面试者的十大建议

一、提前复习好你的专业知识专业知识是最为重要的一点,拥有了坚实的专业基础,你才能迈向成功的彼岸。因此,面试之前,一定一定要复习好专业知识。对自己学过的知识,要做一个概括,放在脑海中。茶余饭后,复习一下... 查看详情

阿里腾讯裁员,2022金三银四android开发该何去何从?

...员冲上热搜。大厂纷纷裁员减负,本来在热火朝天的金三银四,奋力冲刺和面试跳槽大厂的互联网打工人们,陷入了迷茫和焦虑。对大环境的担忧是应该的,因为大环境会直接影响到我们生活的方方面面。但其实&... 查看详情

2021金三银四java大厂面试题来袭!面经解析

基于Servlet容器的WebMVC身为Java开发者,对于Spring框架并不陌生。它起源于2002年、RodJohnson著作《ExpertOne-on-OneJ2EEDesignandDevelopment》中的Interface21框架,到了2004年,推出Spring1.0,从XML到3.0之后,支持JavaConfi 查看详情

字节跳动java金三银四解析:java面试选择题及答案

第1章快速入门1.1Kafka简介1.2以Kafka为中心的解决方案1.3Kafka核心概念1.4Kafka源码环境第2章生产者2.1KafkaProducer使用示例2.2KafkaProducer分析ProducerInterceptors&cProducerInterceptorKafka集群元数据Serializer&DeserializerPartitioner2.3Re 查看详情