Java语言经过多年的发展,从开始的EJB + Servlet的开发模式,到后来的轻量级Java EE开发模式,每一种架构或开发模式的出现,都牵动着万千程序员的心。程序员是一个求知若渴的群体,也是一个容易接受新知识的群体,为了学习新技术,多少人食不知味,夜不能寐。笔者有幸成为一名平凡的程序员, 从业十余年,面对各种新技术,时常怀着一颗谦卑的心不停前进,只有学习。才能带来快乐,才不会被淘汰。
如果你有一定的Java语言基础,进行过Web项目的开发,那么《疯狂Spring Cloud 微服务架构实战》这本书可以为你带来一个全新的开发模式。如果你是一名系统设计师,本书可以让你学习全新的系统架构。如果你是一名维护系统的程序员,即使本书的架构不适合你的系统,但本书的技术框架,仍然可以为你的系统改造和完善提供参考。
微服务与Spring Cloud
什么是微服务
微服务一词来自Martin Fowler的Microservices一文,微服务是一.种架构风格,将单体应用划分为小型的服务单元,微服务之间使用HTTP的API进行资源访问与操作。在对单体应用的划分上,微服务与前面的SOA架构有点类似,但是SOA架构侧重于将每个单体应用的服务:集成到ESB上, 而微服务做得更加彻底,强调将整个模块变成服务组件,微服务对模块的划分粒度可能会更细。以我们前面的销售,会员模块为例,在SOA架构中,只需将相应的服务发布到ESB容器就可以了,而在微服务架构中,这两个模块本身,将会变为一个或多个服务组件。SOA 架构与微服务架构,请参见图1-5与图1-6.
Spring Cloud与Netfix
Spring Cloud并不是一个具体的框架,大家可以把它理解为一个工具箱,它提供的各类工具,可以帮助我们快速构建分布式系统。Spring Cloud的各个项目基于Spring Boot,将Netlix的多个框架进行封装,并且通过自动配置的方式将这些框架绑定到Spring的环境中,从而简化了这些框架的使用。由于Spring Boot的简便,使得我们在使用Spring Cloud时,很容易将Netli各个框架整合进项目中。Spring Cloud下的Spring Cloud Netix模块,主要封装了Netlix 的以下项目。
➢Eureka: 基于REST服务的分布式中间件:主要用于服务管理。
➢Hytrix: 容错框架,通过添加延迟阅值以及容错的逻辑,帮助我们控制分布式系统间组件的交互。
➢Feign: 一个REST客户端,目的是为了简化Web Service客户端的开发。
➢Ribbon: 负载均衡框架,在微服务集群中为各个客户端的通信提供支持,它主要实现中间层应用程序的负载均衡。
➢Zul: 为微服务集群提供代理、过滤、路由等功能。
Spring Cloud的主要模块
除了Spring Cloud Nttix模块外,Spring Cloud还包括以下几个重要的模块。
➢Spring Cloud Config: 为分布式系统提供了配置服务器和配置客户端,通过对它们的配置,可以很好地管理集群中的配置文件。
➢Spring Cloud Sleuth:服务跟踪框架,可以与Zipkin. Apache HTace和ELK等数据分析、服务跟踪系统进行整合,为服务跟踪、解决问题提供了便利。
➢Spring Cloud Stream:用于构建消息驱动微服务的框架,该框架在Spring Boot的基础上,整合了Spring Integration来连接消息代理中间件。
➢Spring Cloud Bus:连接RabtMQ、Kafka 等消息代理的集群消息总线。
Spring Boot
Sping Cloud基于Spring Boot搭建,本节将对Spring Boot进行一个大致讲解, 读者知道Spring Boor的作用即可。
Spring Boot简介
开发一个全新的项目,需要先进行开发环境的搭建,例如要确定技术框架以及版本,还要考虑各个框架之间的版本兼容问题。完成这些烦琐的工作后,还要对新项目进行配置,测试能否正常运行,最后才能将搭建好的环境提交给项目组的其他成员使用。经常出现的情形是,表面上已经成功运行,但部分项目组成员仍然无法运行,项目初期浪费大量的时间做这些工作,几乎每个项目都会投入部分工作量来做这些固定的事情。受Ruby On Rails、Node.js 等技术的影响,Java EE领域需要一种更 为简便的开发方式来取代这些烦琐的项目搭建工作。在此背景下,Spring 推出了Spring Boot项目,该项目可以让使用者更快地搭建项目,使用者可以更专注、更快速地投入业务系统开发中。系统配置、基础代码、项目依赖的jar包,甚至是开发时所用到的应用服务器等,Spring Boot 已经帮我们准备好,只要在建立项目时,使用构建工具加入相应的Spring Boot依赖包,项目即可运行,使用者无须关心版本兼容等问题。
Spring Boot支持Maven和Gradle这两款构建工具。Gradle 使用Groovy语言进行构建脚本的编写,与Maven. Ant等构建工具有良好的兼容性。
关注并私信小编“架构”即可获取《疯狂 Spring Cloud 微架构服务实战》整本PDF版学习资料