zoukankan      html  css  js  c++  java
  • Spring Cloud简介/版本选择/ZooKeeper例子搭建简单说明

    一、什么是Spring Cloud

    官方的说法就是Spring Cloud 给开发者提供一套按照一定套路快速开发分布式系统的工具。 
    具体点就是Spring Boot实现的微服务架构开发工具。它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

    说明:Spring Cloud基于Spring Boot,通过提供一堆库,可以在添加到类路径时增强应用程序的行为。也就是说只能集成到Spring Boot项目。

    二、Spring Cloud的组成

    Spring Cloud包含了多个子项目,如下所述(项目还在不断增加,只列举核心部分):

    Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以使用它实现应用配置的外部化存储,并支持客户端配置信息刷新、加密/加密配置内容等。

    Spring Cloud Netflix:核心组件(相对于国内的Duboo),对多个NetflixOSS开源套件进行整理。

    • Eureka服务治理组件,包含服务注册中心,服务注册与发现机制的实现。(服务治理,服务注册/发现)
    • Hystrix容错管理逐渐,实现断路器模式,帮助服务以来中出现的延迟和为故障提供强大的容错能力。(熔断、断路器,容错)
    • Ribbon客户端负载均衡的服务调用组件(客户端负载)
    • Feigin给予Ribbon和Hystrix的声明式服务调用组件 (声明式服务调用)
    • Zuul网关组件,提供智能路由,访问过滤功能
    • Archaius外部化配置组件

    Spring Cloud Bus:事件、消息总线 (消息总线)

    Spring Cloud Cluster:针对ZooKeeper、Redis、Hazelcast、Consul的选举算法和通用状态模式的实现

    Spring Cloud Cloudfoundry:与Pivatal Cloudfoundry的整合支持

    Spring Cloud Consul:服务发现与配置管理工具

    Spring Cloud Stream:通过Redis、Rabbit或者卡夫卡实现消费微服务,可以通过简单的声明式模型发送和接收消息

    Spring Cloud AWS:用于简化整合Amazon Web Service的组件

    Srping Cloud Security:安全工具包,提供在Zuul代理中的OAuth2客户端请求的中继器

    Spring Cloud Sleuth:Spring Cloud营运的分布式跟踪实现,可以完美整合Zipkin

    Spring Cloud ZooKeeper:给予ZooKeeper的服务发现与配置管理组件

    Spring Cloud Starers:Spring Cloud的基本组件,它基于Spring Boot风格项目的基础依赖模块

    Spring Cloud CLI:用于在Groovy中快速创建Spring Cloud应用的Spring Boot CLI插件

    三、版本说明和选择

    因为Spring Cloud不同其他独立项目,它拥有很多子项目的大项目。所以它是的版本是:版本名+版本号 (如Angel.SR6)。

    版本名:是伦敦的地铁名 

    版本号:SR(Service Releases)是固定的,大概意思是稳定版本。后面会有一个递增的数字。 

    所以Brixton.SR5就是Brixton的第5个Release版本。

    四、版本的区别(包含的子项目不同)

    五、版本的选择

    通过上面的表,不难看出,最初的Angel版本相对来说拥有的子项目较少,Brixton、Camden则拥有更全的子项目,所提供跟多的组件支持。Brixton发布的子项目更稳定,Camden则更具前瞻性。 

    六、基于ZooKeeper例子搭建的思路

    1、Spring Cloud是基于Spring Boot的项目,所以在项目新建时也必须引入Spring Boot的Parent节点。

    2、一般我们会通过https://spring.io/docs/reference来查询Spring Boot ZooKeeper来查看快速集成的例子,其实这个方式有点不正确,参照官网可能会集成不成功。

    3、那么换回思路,Spring Boot ZooKeeper本身是Spring Cloud的一个子项目,所以先集成Spring Cloud的先,入口就不再是https://spring.io/docs/reference下进行搜索,而是通过官网入口:https://spring.io/projects,找到Spring Cloud的项目,点进去。

    4、集成好之后,再来看官方文档中Spring Cloud的ZooKeeper集成的例子,此时一般能集成成功,文档入口:http://cloud.spring.io/spring-cloud-static/Camden.SR7/#_spring_cloud_zookeeper

    5、错误的做法是看这篇官方文章:http://cloud.spring.io/spring-cloud-static/spring-cloud-zookeeper/1.1.1.RELEASE/,然后参照这个依赖进行引入:http://cloud.spring.io/spring-cloud-zookeeper/,会出现各种的错误。不要参考这步去集成。

    6、版本的选择一般是Camden.SR7。

    完成的集成例子应该是这样:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.jsoft.testspringboot</groupId>
        <artifactId>testzookeeper1</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>jar</packaging>
    
        <name>testzookeeper1</name>
        <url>http://maven.apache.org</url>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.4.5.RELEASE</version>
        </parent>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Camden.SR7</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            </dependency>
        </dependencies>
    </project>

    说明:

    绿色部分的为默认总的父类依赖,必须要引入;

    蓝色部分的为Spring Boot比如要引入的依赖Parent节点;

    红色部分是通过http://cloud.spring.io/spring-cloud-static/Camden.SR7/#_spring_cloud_zookeeper文档得知要引入这两个依赖的。 

    参考:

    http://projects.spring.io/spring-cloud/(官方说明)

    http://blog.csdn.net/csdn2193714269/article/details/72853098(以上内容大部分转自此篇文章)

  • 相关阅读:
    centos7 挂载未分配的硬盘空间 (测试可用)
    虚拟化下Centos7 扩容根分区
    Centos7 虚拟机挂载未分配的空间
    Linux下对LVM逻辑卷分区大小调整 [针对xfs和ext4文件系统]
    XFS vs EXT4
    虚拟化下Centos7 扩容根分区
    centos7下扩展根分区(图文详解)
    解决删除镜像时image is referenced in multiple repositories
    linux 根目录扩容方法
    Linux系统扩容根目录磁盘空间的操作方法
  • 原文地址:https://www.cnblogs.com/EasonJim/p/7544660.html
Copyright © 2011-2022 走看看