美文网首页
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