Spring Cloud介绍与环境搭建(一)
前言
使用Spring Cloud需要用到Spring boot的知识,如果没有相关经验,请参考Spring Boot的简单使用(二),做一个简单的入门。
Spring Cloud系列博客是基于MyEclipse开发工具的。
LAMP项目
传统的单体项目用一个LAMP结构就可以完成,L:Linux;A:Apache;M:MySQL;P:PHP。在一台服务器上,我们就能完成整个项目的搭建。
因为是放置于一个Apache服务器里,我们的项目结构一般就如下所示:
前端采用JSP等视图,后台采用servlet等MVC框架,整体项目采用Spring容器,持久层采用Hibernate或者MyBatis做数据连接。最后把我们编译好的项目打成war包(或者编译好的字节码文件),放到我们的Apache服务器里,启动服务,用户访问Tomcat服务器,就能获取到自己需要的信息。
但是,在这一个单一的服务器里,每当我们有新的代码需要发布,都会使得我们的war不断庞大,最后成为一个臃肿的怪物,启动耗时不必多说,所有的代码都放在一个war包里,万一某个class文件的一个方法出现了内存泄露,迎来的就是整个项目的宕机,如果是一个传统行业的项目,和客户说一下,调试解决可能就处理好问题了,但是,如果作为一个互联网行业的项目,可能停机一个小时,就意味着公司的破产倒闭。
单体项目的优化
把各个功能模块的代码写在一起的弊端,催生了面向服务架构(SOA)的出现,将耦合在一起的功能代码做拆分,每一个功能模块都作为单一的能力或服务,接入到平台上,如果其中某个服务宕机了,也不会影响整个项目的运行。
企业服务总线(Enterprise Service Bus,ESB)从面向服务架构(Service-Oriented Architecture,SOA)发展而来,是传统中间件技术与XML、Web服务等技术结合的产物。ESB提供了网络中最基本的连接中枢,是构筑企业神经系统的必要元素。ESB采用了“总线”这样一种模式来管理和简化应用之间的集成拓扑结构,以广为接受的开放标准为基础来支持应用之间在消息、事件和服务级别上动态的互连互通,是一种在松散耦合的服务和应用之间标准的集成方式。
微服务架构
微服务架构和面向服务架构在理念上是相同的,只不过微服务架构在服务的拆分上更细腻,譬如销售模块可以进一步拆分成“食品销售”和“玩具销售”。
关于NetFlix
Netflix是一个互联网影片提供商,是美国视频巨头,随着Netflix转型为一家云计算公司,Netflix公司成立了自己的开源中心,名称为Netflix Open Source Software Center,简称Netflix OSS
这个开源组织专注于大数据、云计算方面的技术,提供了多个开源框架,这些框架包括大数据工具、构建工具、基于云平台的服务工具等。
关于Spring Cloud
Spring Cloud本质上并不是一个具体的框架,它是一个工具箱,用于帮助我们构建一个微服务集群;
Spring Cloud是基于Spring Boot的,它封装了Netflix的框架;
Spring Cloud将Netflix与Spring容器进行了整合,很容易使用Spring的IOC、AOP等等功能。
Spring Cloud整合了哪些常用Netflix框架
Eureka:基于REST服务的分布式中间件,主要用于服务管理。
Hystrix:容错框架,通过添加延迟阀值以及容错的逻辑,来帮助我们控制分布式系统间组件的交互。
Feign:一个REST客户端,目的是为了简化Web Service客户端的开发
Ribbon:负载均衡框架。
Zuul:为微服务集群提供过代理、过滤、路由等功能。
Spring Cloud系列:
Spring Cloud服务管理框架Eureka简单示例(三)