美文网首页
SpringCloud

SpringCloud

作者: inverseli | 来源:发表于2018-10-01 11:21 被阅读0次
    SpringCloud中文网

    https://springcloud.cc/

    SpringCloud文档

    https://springcloud.cc/spring-cloud-netflix.html
    https://springcloud.cc/spring-cloud-dalston.html

    SpringCloud vs Dubbo

    SpringCloud与Dubbo是现在最流行的分布式龙头老大,但是在技术选型的时候二者只能选其一。那么看一些blog和听网上谈论,还是SpringCloud应用更广。
    原因据说有几种:

    • SpringCloud是微服务架构,而Dubbo只不过是微服务框架
    • SpringCloud自身提供了关于微服务的技术,Dubbo与之相比远远不足
    • SpringCloud社区火热,能在遇到问题的时候得到社区小伙伴的帮助,也有更多的资料可以供开发参考,而据说Dubbo因为多种原因在12年停止了对Dubbo项目的维护,而在最近SpringCloud变得火热的时候,才重新开启了对Dubbo的维护支持,势要与Cloud分杯羹。
      主要不同:SpringCloud基于REST,Dubbo基于RPC(远程过程调用)

    微服务架构

    微服务架构包含了很多支持的微服务的功能,比如说SpringCloud可以说是微服务架构。有人这样举栗子,买电脑,说是SpringCloud像是一台完整的机器,而Dubbo可以自由拼装,组合。SpringCloud自身实现了很多微服务的技术点,不需要依赖第三方。

    SpringCloud

    • Spring Cloud Config - 配置管理
    • Spring Cloud Bus - 事件,消息总线
    • Eureka - 服务发现
    • Hystrix - 熔断器
    • zuul - 路由监控
    • Ribbon - 负载均衡

    项目地址

    https://github.com/Inverseli/SpringBoot-Learning/tree/master/microservicecloud

    project

    spingcloud

    父项目和两个子模块
    (未完 。。。)


    项目结构

    image.png

    父项目和四个模块

    • microservicecloud - 父工程
    • microservicecloud-api - 通用api
    • microservicecloud-consumer-dept - 服务消费者
    • microservicecloud-eureka - 服务注册中心
    • microservicecloud-provider-dept - 服务提供方

    note

    maven中父pom.xml

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.0.5.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.12</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.0.31</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>1.3.0</version>
            </dependency>
            <dependency>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-core</artifactId>
                <version>1.2.3</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
        </dependencies>
      </dependencyManagement>
    

    dependencyManagement元素,通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

    image.png
    写这个项目的时候,出问题最多的还是版本问题,一定要了解版本之间的兼容问题,不一定出现版本问题的时候就非得降低版本去适应,一个框架会去解决这些问题的,只是说你可能没在官方文档中找到,可以在官方推荐的简单开始项目的例子中找找看,它依赖的是什么版本。遇到问题先不要着急解决,看看问题出在什么地方,看看给定的错误提示

    Eureka的自我保护机制

    image.png
    这是正常的时候
    image.png
    这是自我保护的提示
    当一个服务因为网络延迟,而没有被发现的时候,eureka不会马上删除微服务,而是会保存服务信息。
    它不会从注册列表中剔除因长时间没收到心跳导致租期过期的服务,而是等待修复,直到心跳恢复正常之后,它自动退出自我保护模式。这种模式旨在避免因网络分区故障导致服务不可用的问题
    (未完。。。。)

    相关文章

      网友评论

          本文标题:SpringCloud

          本文链接:https://www.haomeiwen.com/subject/bbqnoftx.html