面试不会微服务不要紧,跟着我4天学会微服务!

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

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

用两张图给你们看一下spring

单体的时候系统架构是这样的设计模式

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

因此在系统演化下,咱们来看这个服务器

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

因此微服务在我看来,这是一个契机,不管怎么样,最终随着主体业务的复杂化,终会以各类不一样的形式靠拢其中架构

那不管是出于面试仍是知识点的学习,我想,对于微服务,学习一下,对你后期必定会有一些帮助分布式

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

须要这份资料的,git扫码获取资料看这里

https://gitee.com/biwangsheng/personal.git

相关文章
相关标签/搜索