Spring Cloud 生态源码剖析之序言

Spring Cloud 生态源码剖析之序言

 

     以前看过好多书,发现每本书开始的前几页都有好多对应行业的大牛为之作序,而且每个人头上都戴着很闪亮的title,一上来就是一顿吹牛逼,说这书怎么怎么牛逼,国内还没有对相关领域出版的书籍,作者走在了时代的最前头,成为了该技术的国内布道者,未来的该领域的发展方向,等等布拉布拉一大堆。最一开始的时候我还像孩子一样的天真相信了这群所谓的大牛所说的话,但是看了几章之后发现,尼玛上帝,这孙子跟我之前看的那本内容很多地方一样,处于好奇的我,又看了一下两本书的出版日期(抱着前一本是抄袭的态度),发现我又被我的天真狠狠的打了一个大嘴巴。

  国内的技术文章抄袭对于我这个已经工作五年的小学生来说已经是司空见惯了,有些时候在自己没有能力去改变什么事情的时候,我们唯一能做的只是尽量的改变自己,让自己脱离一会污泥浊水(但不要完全脱离,毕竟还要在这个社会上生存吗!),静下心好好写一点有意义的东西。

  言归正传,本次下定决心修炼一下Spring Cloud生态的各个组件,Spring Cloud生态的组件包含:

  • 注册中心(Eureka)
  • 配置中心(Config)
  • 网关(Zuul)
  • Http客户端(Feign)
  • 负载均衡器(Ribbon)
  • 熔断器(Hystrix)
  • 消息总线(Bus)

  在整个系列文章中会针对每一个组件进行深入的源码分析,而不是单单的讲解如何应用配置各个组件,本系列文章的主要意图是希望能够提供更加完善的内部交互逻辑和SpringCloud的设计理念,以便能够为大家在今后的开发过程中能够更好的扩展SpringCloud的每个组件亦或是开发一套类似的生态服务。同时也会尽量介绍一些本人自己在研发过程中的遇到的问题并尽量给出具体的应用实例。

  在整个系列文章中并没有列举出所有的SpringCloud的组件,后续会在博客更新中不断将其填补上去,希望各位看官们能够体谅。并且在本文编写时可能会用到其他一些外部组件(如 :zookeeper、kafka、rabbitmq、等),在本系列文章中将不会进行详细描述,但会在编写文章时将应用到的外部组件以同等系列文章的方式呈现给大家,所以在大家发现有外部组件应用时,请移步其他博文进行参考。

  下面是各章节title介绍:

  1. SpringCloud生态源码剖析之注册中心(Eureka)
  2. SpringCloud生态源码剖析之配置中心(Config)
  3. SpringCloud生态源码剖析之网关(Zuul)
  4. SpringCloud生态源码剖析之Feign
  5. SpringCloud生态源码剖析之Ribbon
  6. SpringCloud生态源码剖析之Hystrix
  7. SpringCloud生态源码剖析之Bus

  首先介绍一下在本系列文章中采用的技术版本:

  • SpringCloud ->Dalston.SR5
  • Spring boot ->1.5.9.RELEASE(目前是1.*版本中的最新版本)
  • maven 3
  • idea 2017
  • JDK 1.8
  • 编码格式UTF-8

    引用方式:

 <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
  </parent>
<dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-dependencies</artifactId>
        <version>Dalston.SR5</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>

  对于SpringCloud多版本之间的差异,请各位看官们通过某度自行查找,在开发中可以选择符合业务需求的版本。

  SpringCloud简述(个人):

     SpringCloud是在SpringBoot基础之上开发的一套专注于服务治理工具,比如注册中心(Eureka)可以实现服务的提供者(provider)和服务的消费者(customer)之间的完全解耦,对于消费者而言无需知道服务的具体地址,只需要知道自身要调用哪个服务即可,通过注册中心进行服务的发现,并获取服务提供者(provider)的多实例地址,并通过负载均衡(ribbon)进行本地负载调用,如果在调用过程中出现错误或者异常可以对请求配置熔断器(Hystrix)做熔断处理或者服务降级操作。(其实有些时候真的是这样,这样简简单单的几句话就把SpringCloud的三大组件:Eureka、ribbon、Hystrix和两大角色provider、customer之间的关系讲明白了,妈的其他的那么多文字是用来凑字数吗?)当然,所有的这些高级实现都是基于Spring底层的支持,希望大家在学习SpringCloud的同时也能够对Spring原始家族成员有一定的了解(比如:IOC 、AOP原理的内容),不要感觉SpringCloud比较火,一上来就开始学高级框架,这样反而效果很糟糕,有句话叫做:让你感受一下什么叫SpringCloud从入门到放弃。

    其实,我在学习SpringCloud的框架之后才发现,我们现在用的很多技术之间的实现原理很大程度上都是大同小异的,或者说,有时候只是实现的语言不一样,比如说:我们可以Java实现负载均衡,那么同样可以用C语言(nginx)实现负载均衡,最重要的是原理,如果我们对原理比较清楚,那么我们自己也可以实现类似的功能,只不过性能等各方面就可能比不上那些大牛(此处为褒义词)了。所以在本系列中将对各个模块采用:原理介绍-》技术实现-》代码结构-》应用样例  ,这样的文章结构给大家讲解每个组件的内容。如果对于某一个组件的内容特别多的时候,将采取组件分节讲解。

  文章将会陆续的发布上来(就是上吊也要让人喘口气啊!),如果有特别想要知道的内容可以帐下留言,我尽量会抽时间去研究。希望本系列文章能够帮助到您,文章内容必定存在瑕疵或者错误,请大家能够不吝赐教,予以矫正。拿出大家吐槽明星的本事(虽然我不是明星),尽最大的努力把口水吐给我这个疯子吧!最后再一次强调:请大家在转载过程中标注出处,不为扬名立万,只为尊重知识产权!

       尽量保证每周(周五晚上或者周六更新)发布一篇文章,直到该系列文章结束!

     我是一个巫妖可久的疯子,只为在枯燥的求学中创造非凡!

posted @ 2018-01-26 17:30  itcrazer  阅读(29)  评论(0)    收藏  举报