SpringCloud微服务之概念及环境介绍(一)

一、软件架构

1、单一软件架构:典型代表为一个应用使用一个数据库部署在一个web容器中就可以运行。多应用于企业发展初期和访问压力较小的业务系统,这种架构对技术要求较低。关注重点在数据库访问框架上。

2、垂直软件架构:随着业务的拓展,访问流量的不断增加,企业的业务会慢慢增多,单一应用已经无法满足日常需要,此时就会将之前的单一应用进行业务拆分,如后台系统、前台系统、用户管理系统等,其实就是把整个系统拆分成多个垂直子系统。

3、水平软件架构:在垂直架构的基础上,还可以将每个子系统部署到多态服务器上来平衡子系统的业务访问量,从而达到每个子系统的水平扩展。在这个阶段SSH或是SSM变成项目的关键。

4、SOA(Service-Oriented Architecture)软件架构:面向服务软件架构将应用程序根据不同的职责划分为不同的模块,不同的模块之间通过特定的协议和接口进行交互。这样使整个系统切分成很多单个组件服务来完成请求。

      SOA架构中,会把项目的整个业务系统分解为多个组件,让每个组件都独立提供可复用的服务能力,通过服务的组合和编排来实现上层的业务流程。把原来的子系统逐步引入到了服务化的概念。

5、微服务软件架构:每个微服务都可以独立运行在自己的进程里,一系列独立运行的微服务共同完成了整个系统的功能。每个服务为独立的业务开发,之间通过轻量级的通信机制进行通信,例如REST API等,基本实现手段为分库分表和搭建统一服务接口。


二、微服务Microservice


微服务是将整个web应用组织成为一系列小的web服务,小的web服务既可以独立的进行编译和部署,也可以通过彼此暴露的API接口相互通讯。彼此相互协作,可以作为一个整体为用户提供功能。

目前主流的微服务框架:Dubbo、 SpringCloud、thrift、Hessian等,每种语言都有自己搭建微服务的框架,以Java为例,常用的微服务框架有:

1、SpringCloud:基于HTTP的RETS服务体系,是一系列微服务框架的集合,能够帮助我们构建一套完整的微服务架构技术生态链。

2、Dubbo:由阿里巴巴开源的分布式服务化治理框架,通过RPC请求方式访问。Dropwizard:将Java生态系统中各个问题域里最好的组建集成于一身,能够快速打造一个Rest风格的后台,还可以整合Dropwizard核心以外的项目

3、Akka:Akka是一个用Scala编写的库,可以用在有简化编写容错、高可伸缩性的Java和Scala的Actor模型,使用Akka能够实现微服务集群。

三、SpringCloud项目介绍

       SpringCloud是一天实现微服务的框架集合,所以SpringCloud中的子项目众多,这些子项目在微服务开发中提供了
服务发现、服务注册、配置中心、消息总线、负载均衡、断路器、数据监控等功能组件。最重要的是,这些功能组件跟SpringBoot框架一起使用的话,会让开发微服务架构项目的过程方便快捷很多。

其实主要的核心项目有:

Spring Cloud Netflix  仅次于SpringCloud的地位,SpringCloud中的各种重要服务功能都要依赖于它,它和Netflix OSS组件各种集成,组成了SpringCloud中服务器的核心。其中包括Eureka、Hystrix、Zuul、Archaius等。Netflix是一家互联网流媒体播放商,是美国视频巨头,随着Netflix转型为一家云计算公司,它也开始积极参与开源项目。Netflix OSS(Open Source)就是由Netflix公司主持开发的一套代码框架和库,目的是解决上了规模之后的分布式系统可能出现的一些问题。

注:SpringCloud Netflix是在 netflix oss基础之上的封装。

Netflix Eureka:服务中心,云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。SpringCloud中最重要的组件,没有之一。

Netflix Hystrix:熔断器,容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。

Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。

Spring Cloud Config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。

Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。

Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。

Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。

Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具。

Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。

Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。

Spring Cloud Cluster:将取代Spring Integration。提供在分布式系统中的集群所需要的基础功能支持,如:选举、集群的状态一致性、全局锁、tokens等常见状态模式的抽象和实现。

Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。

Spring Cloud Task 主要解决短命微服务的任务管理,任务调度的工作,比如说某些定时任务晚上就跑一次,或者某项数据分析临时就跑几次。

Spring Cloud Connectors: 简化了连接到服务的过程和从云平台获取操作的过程,有很强的扩展性,可以利用Spring Cloud Connectors来构建你自己的云平台。

Spring Cloud starter:Spring Boot式的启动项目,为Spring Cloud提供开箱即用的依赖管理。

四、本机测试环境

Spring Tool Suite  3.9.6.RELEASE

Maven 3.3.9

JDK 1.8.0_73

Spring Boot 1.5.16.RELEASE(1.5.x的最终版本)

Spring Cloud Edgware.SR4(E版的最终版本)

说明

该版本eclipse需要安装了JDK1.8以上的才能支持

Maven中的配置使用了自己的仓库,请保持网络环境良好,也可以使用阿里的私服仓库:http://maven.aliyun.com/nexus/content/groups/public

 

官方地址

Spring Cloud当前版本: Edgware.SR4

http://projects.spring.io/spring-cloud/ 

Spring Cloud 说明文档:(Edgware.SR4

http://cloud.spring.io/spring-cloud-static/Edgware.SR4/single/spring-cloud.html 

Spring Cloud 属性配置官方说明:(Edgware.SR4

http://cloud.spring.io/spring-cloud-static/Edgware.SR4/single/spring-cloud.html#_appendix_compendium_of_configuration_properties 

Spring Boot 当前版本:(1.5.16.RELEASE

https://spring.io/projects/spring-boot#learn 

Spring Boot说明文档:(1.5.16.RELEASE

https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/htmlsingle/ 

Spring Boot api文档:(1.5.16.RELEASE

https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/api/ 

Spring Boot 属性配置官方说明:(1.5.16.RELEASE

https://docs.spring.io/spring-boot/docs/1.5.16.RELEASE/reference/htmlsingle/#common-application-properties 

猜你喜欢

转载自blog.csdn.net/DarkflameCG/article/details/88796665