现在微服务倍受关注:文章、博客、社交媒体和会议演讲都在讨论微服务。微服务正在迅速朝着加德纳技术成熟度曲线(Gartner Hype cycle)的高峰前进。与此同时,也有持怀疑态度的软件社区人员认为微服务没什么新鲜可言。反对者声称它的思想只是面向服务架构(SOA)的重塑。然而,不管是炒做仍是怀疑,不能否认,微服务架构模式有很是明显的优点 —— 特别是在实施敏捷开发和复杂的企业应用交付方面。git
而Martin Fowler大师《重构》一书中有说过一句话,大概意思就是,“每次对原有系统进行修改调整的时候是一个很是好的重构契机。面试
用两张图给你们看一下spring
单体的时候系统架构是这样的设计模式
相信不用我多说太多,每个作过大型网站项目的老铁,都应该知道这种系统架构的蛋疼跨域
因此在系统演化下,咱们来看这个服务器
一样的系统实现,可是不一样的组织架构,却让系统的可用性更加高,也方便后期的开发工做网络
因此微服务在我看来,这是一个契机,不管怎么样,最终随着主体业务的复杂化,终会以各类不一样的形式靠拢其中架构
那不管是出于面试仍是知识点的学习,我想,对于微服务,学习一下,对你后期必定会有一些帮助分布式
随着互联网的发展,网站应用的规模不断扩大,常规的应用架构已没法应对,分布式服务架构以及微服务架构势在必行,亟需一个治理系统确保架构有条不紊的演进。微服务
微服务基础知识
Eureka
Ribbon
这一次主要介绍Feign和Hystrix两个知识点
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主要经过如下几点实现延迟和容错。
Feign
Hystrix
在学习完前面的知识后,微服务架构已经初具雏形。但还有一些问题∶不一样的微服务通常会有不一样的网络地址,客户端在访问这些微服务时必须记住几十甚至几百个地址,这对于客户端方来讲太复杂也难以维护。以下图:
若是让客户端直接与各个微服务通信,可能会有不少问题∶
所以,咱们须要一个微服务网关,介于客户端与服务器之间的中间层,全部的外部请求都会先通过微服务网关。客户端只须要与网关交互,只知道一个网关地址便可
网关概述
zuul
Gateway
springcloud Stream
springcloud config
Apollo
须要这份资料的,git扫码获取资料看这里