写点什么

面试不会微服务没关系,跟着我 4 天学会微服务!

用户头像
小Q
关注
发布于: 2020 年 09 月 07 日

如今微服务倍受关注:文章、博客、社交媒体和会议演讲都在讨论微服务。微服务正在迅速朝着加德纳技术成熟度曲线(Gartner Hype cycle)的高峰前进。与此同时,也有持怀疑态度的软件社区人员认为微服务没什么新鲜可言。反对者声称它的思想只是面向服务架构(SOA)的重塑。然而,无论是炒作还是怀疑,不可否认,微服务架构模式有非常明显的优势 —— 特别是在实施敏捷开发和复杂的企业应用交付方面。

而Martin Fowler大师《重构》一书中有说过一句话,大概意思就是,“每次对原有系统进行修改调整的时候是一个非常好的重构契机。

用两张图给大家看一下

单体的时候系统架构是这样的

相信不用我多说太多,每一个做过大型网站项目的老铁,都应该知道这种系统架构的蛋疼

所以在系统演化下,我们来看这个

同样的系统实现,但是不同的组织架构,却让系统的可用性更加高,也方便后期的开发工作

所以微服务在我看来,这是一个契机,无论怎么样,最终随着主体业务的复杂化,终会以各种不同的形式靠拢其中

那无论是出于面试还是知识点的学习,我想,对于微服务,学习一下,对你后期一定会有一些帮助

day1

随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已无法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进。

微服务基础知识

Eureka

Ribbon

day2

这一次主要介绍FeignHystrix两个知识点

Feign

Feign是Netflix开发的声明式,模板化的HTTP客户端,其灵感来自RetrofitJAXRS-2.0以及WebSocket.Feign可帮助我们更加便捷,优雅的调用HTTP API。在SpringCloud中,使用Feign非常简单—―创建一个接口,并在接口上添加一些注解,代码就完成了。

Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。SpringCloud对Feign进行了增强,使Feign支持了SpringMVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。

Hystrix

Hystrix是由Netflix开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。Hystrix主要通过以下几点实现延迟和容错。

  • 包裹请求∶使用HystrixCommand包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用了设计模式中的“命令模式"。

  • 跳闸机制︰当某服务的错误率超过一定的阈值时,Hystrix可以自动或手动跳闸,停止请求该服务一段时间。

  • 资源隔离:Hystrix为每个依赖都维护了一个小型的线程池(或者信号量)。如果该线程池已满,发往该依赖的请求就被立即拒绝,而不是排队等待,从而加速失败判定。

  • 监控:Hystrix可以近乎实时地监控运行指标和配置的变化,例如成功、失败、超时、以及被拒绝的请求等。

  • 回退机制︰当请求失败、超时、被拒绝,或当断路器打开时,执行回退逻辑。回退逻辑由开发人员自行提供,例如返回一个缺省值。

  • 自我修复∶断路器打开一段时间后,会自动进入“半开"状态。

Feign

Hystrix



day3

在学习完前面的知识后,微服务架构已经初具雏形。但还有一些问题∶不同的微服务一般会有不同的网络地址,客户端在访问这些微服务时必须记住几十甚至几百个地址,这对于客户端方来说太复杂也难以维护。如下图:

如果让客户端直接与各个微服务通讯,可能会有很多问题∶

  • ·客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度

  • ·在某些场景下存在跨域请求的问题

  • ·加大身份认证的难度,每个微服务需要独立认证

因此,我们需要一个微服务网关,介于客户端与服务器之间的中间层,所有的外部请求都会先经过微服务网关。客户端只需要与网关交互,只知道一个网关地址即可

网关概述

zuul

Gateway



day4



springcloud Stream

springcloud config

Apollo

用户头像

小Q

关注

还未添加个人签名 2020.06.30 加入

小Q 公众号:Java架构师联盟 作者多年从事一线互联网Java开发的学习历程技术汇总,旨在为大家提供一个清晰详细的学习教程,侧重点更倾向编写Java核心内容。如果能为您提供帮助,请给予支持(关注、点赞、分享)!

评论

发布
暂无评论
面试不会微服务没关系,跟着我4天学会微服务!