惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
J
Java Code Geeks
博客园 - 聂微东
量子位
C
Check Point Blog
T
The Blog of Author Tim Ferriss
T
Tailwind CSS Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
B
Blog
罗磊的独立博客
腾讯CDC
GbyAI
GbyAI
博客园 - 【当耐特】
A
About on SuperTechFans
M
MIT News - Artificial intelligence
U
Unit 42
D
Docker
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Y
Y Combinator Blog
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
S
SegmentFault 最新的问题
有赞技术团队
有赞技术团队

博客园 - 刚泡

数据库短暂波动导致xxl-job-admin不调度任务的问题 CompletableFuture用法详解 使用责任链模式简化if-else代码示例 使用Function Interface简化if-else代码示例 自定义AngularJS Modal弹框大小的方法 SpringCloud Alibaba 改造Sentinel Dashboard将熔断规则持久化到Nacos SpringCloud Alibaba 改造Sentinel Dashboard将流控规则持久化到Nacos [Access][Microsoft][ODBC 驱动程序管理器] 无效的字符串或缓冲区长度 Invalid string or buffer length Java操作Kafka执行不成功的解决方法,Kafka Broker Advertised.Listeners属性的设置 pom.xml错误:org.codehaus.plexus.archiver.jar.Manifest.write(java.io.PrintWriter)的解决方法 Spring Cloud @HystrixCommand和@CacheResult注解使用,参数配置 Spring Boot的属性加载顺序 Spring Boot 使用properties如何多环境配置 Java使用POI为Excel打水印,调整列宽并设置Excel只读(用户不可编辑) Sitemesh 3使用及配置 Java上传文件夹(Jersey) 路径名导致的异常:javax.imageio.IIOException: Can't read input file! 解决安卓微信浏览器中上传不能调用相机的问题 Mac下安装SVN插件javaHL not available的解决方法
Spring Cloud微服务实战阅读笔记(一) 基础知识
刚泡 · 2018-01-27 · via 博客园 - 刚泡

本文系《Spring Cloud微服务实战》作者:翟永超,一书的阅读笔记。

一:基础知识

1:什么是微服务架构

    是一种架构设计风格,主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作。

    被拆分的每一个小型服务都围绕系统中的一项或者一些耦合度较高的业务功能进行构建,每个服务维护着自身的数据存储,业务开发,自动化测试以及独立部署。

2:实施微服务带来的问题:

  • 运维的新挑战;
  • 接口的一致性;
  • 分布式的复杂性;

3:微服务9大特性:

  1. 服务组件化;
  2. 按业务组织团队;
  3. 做“产品”的态度;
  4. 智能端点与哑管道;
  5. 去中心化治理;
  6. 去中心化管理数据;
  7. 基础设施自动化;
  8. 容错设计;
  9. 演进式设计;

4:为什么选择Spring Cloud

目前微服务架构中针对不同场景出现的不同问题的各种解决方案和开源框架概览:

服务治理

阿里巴巴Dobbo,当当网DubboX,Netflix的Eureka,Apache的Consul等

分布式配置管理

百度的Disconf,Netflix的Archaius,360的QConf,Spring Cloud的Config,淘宝网的Diamond等

批量任务

当当网的Elastic-Job,LinkedIn的Azkaban,Spring Cloud的Task等

服务跟踪

京东的Hydra,Spring Cloud的Sleuth,Twitter的Zipkin等

    在实施微服务框架时,我们必须在这些关键场景的技术选型上进行抉择,而这需要我们针对每种开源框架花费大量时间和经历进行调研,分析,比较等。

    而Spring Cloud,它不像上面介绍的框架是为了解决微服务实践过程中的某一项问题,而是一个解决微服务架构实施的综合性解决框架。它整合了诸多被广泛实践和证明过的框架作为实施的基础部件,又在该基础上创建了一些非常优秀的边缘组件。

5:Spring Cloud简介

    Spring Cloud是一个基于Spring Boot实现的微服务框架,它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一个简单的开发方式。

    Spring Cloud下主要的子项目有:

  • Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以使用它实现应用配置的外部化存储,支持客户端配置信息刷新,加密/解密配置内容等。
  • Spring Cloud Netflix:核心组件,对多个Netflix开源套件进行整合。
    • Eureka:服务治理组件,包括服务注册中心、服务注册与发现机制的实现。
    • Hystrix:容错管理组件,实现断路器模式,为服务依赖中出现的延迟和故障提供容错能力;
    • Ribbon:客户端负载均衡;
    • Feign:基于Hystrix和Ribbon的声明式服务调用组件;
    • Zuul:网关组件,提供只能路由、访问过滤等功能;
    • Archaius:外部化配置组件;
  • Spring Cloud Bus:消息总线,用于传播集群中的状态变化或者事件,以触发后续处理,比如用来动态刷新配置等。
  • Spring Cloud Cluster:针对Zookeeper、Redis、Hazelcast、Consul的选举算法和通用状态模式的实现。
  • Spring Cloud Cloudfoundry:与Pivotal Cloudfoundry的整合支持;
  • Spring Cloud Stream:通过Redis、Rabbit或者Kafka实现的消费微服务,可以通过简单的声明式模型来发送和接收消息;
  • Spring Cloud Security:安全工具包,提供在zuul代理中对OAuth2客户端请求的中继器;

6:Spring Cloud版本说明

    当我们查找到一些Spring Cloud的文章或者示例时,往往可以在依赖中看见很多不同版本的名字,比如Angel.SR6、Brixton.SR5等,为什么Spring Cloud没有想其他Spring项目使用1.X.X的版本命名规则呢?

    因为Spring Cloud下有很多子项目,他们各自维护着自己的版本更新,也就是说每一个Spring Cloud的版本下的不同子项目有不同的版本号,为了区别于子项目的版本号,因此使用命名的方式标识版本。

    其中大版本命名使用伦敦地铁站的名字,按照字母顺序排列,如Angel,Brixton......

    当一个版本的Spring Cloud项目的发布内容累积到一定程度或者修复了一个严重的Bug,就会发布一个Release版本,简称SRX版本,其中X是一个递增的数字,Brixton SR5表示Brixton的第五个Release版本。

最新版本区别:

Component

Edgware.SR1

Finchley.M5

Finchley.BUILD-SNAPSHOT

spring-cloud-aws

1.2.2.RELEASE

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

spring-cloud-bus

1.3.2.RELEASE

2.0.0.M4

2.0.0.BUILD-SNAPSHOT

spring-cloud-cli

1.4.1.RELEASE

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-cloud-commons

1.3.1.RELEASE

2.0.0.M5

2.0.0.BUILD-SNAPSHOT

spring-cloud-contract

1.2.2.RELEASE

2.0.0.M5

2.0.0.BUILD-SNAPSHOT

spring-cloud-config

1.4.1.RELEASE

2.0.0.M5

2.0.0.BUILD-SNAPSHOT

spring-cloud-netflix

1.4.2.RELEASE

2.0.0.M5

2.0.0.BUILD-SNAPSHOT

spring-cloud-security

1.2.2.RELEASE

2.0.0.M1

2.0.0.BUILD-SNAPSHOT

spring-cloud-cloudfoundry

1.1.1.RELEASE

2.0.0.M2

2.0.0.BUILD-SNAPSHOT

spring-cloud-consul

1.3.1.RELEASE

2.0.0.M4

2.0.0.BUILD-SNAPSHOT

spring-cloud-sleuth

1.3.1.RELEASE

2.0.0.M5

2.0.0.BUILD-SNAPSHOT

spring-cloud-stream

Ditmars.SR3

Elmhurst.M3

Elmhurst.BUILD-SNAPSHOT

spring-cloud-zookeeper

1.2.0.RELEASE

2.0.0.M4

2.0.0.BUILD-SNAPSHOT

spring-boot

1.5.9.RELEASE

2.0.0.M7

2.0.0.BUILD-SNAPSHOT

spring-cloud-task

1.2.2.RELEASE

2.0.0.M2

2.0.0.RELEASE

spring-cloud-vault

1.1.0.RELEASE

2.0.0.M4

2.0.0.BUILD-SNAPSHOT

spring-cloud-gateway

1.0.1.RELEASE

2.0.0.M5

2.0.0.BUILD-SNAPSHOT