【SpringCloud微服务】第1章 基础知识

1章 基础知识

1.1 什么是微服务架构

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

1.2 与单体系统的区别

系统会按照不同模块拆分成多个不同的服务,这些服务独立部署和扩展单一服务的更新,不会影响其他服务的运行,同时,由于是独立部署,我们可以更精准地为每个服务评估性能容量,通过配合服务间的协作流程,也可以更容易地发现系统的瓶颈位置,以及给出较为准确的系统级性能容量评估。

1.3 如何实施微服务

1.3.1 带来的新挑战

1.运维新挑战

运维人员需要维护的进程数大大增加,需要运维人员有一定的开发能力编排运维过程,并让它们能自动运行起来

2.接口的一致性

需要更完善的接口和版本管理,或是严格地遵循开闭原则(对于扩展是开放的,对于修改是关闭的)

3.分布式的复杂性

比如网络延迟,分布式事务,异步消息等

1.3.2 微服务的九大特征

1.服务组件化

每个服务像组件一样,是一个可以独立更换和升级的单元,且相互独立,在更新或升级的时候,并不影响其他单元。

2.按业务组织团队

①可以有效减少服务内部修改所产生的内耗;②团队边界可以变得更为清晰。

3.做产品的态度

每个成员应该以做产品的方式,对整个生命周期负责,而不是以项目的模式,以完成开发与交付,并将成功交给运维为终极目标。

4.智能端点与哑管道

    个人理解:哑管道即“交互方式比较单一”,依赖“智能端点”进行总的协调调度。这样单一的交互,实现了易读性,但是智能调度却消耗了系统的部分资源,使得系统性能的高效性受到影响。

更粗粒度的通信协议

①使用HTTPRESTful API或轻量级的消息发送协议,实现消息传递与服务调用的触发。

②通过在轻量级消息总线上传递消息,类似RabbitMQ等一些提供可靠异步交换的中间件

5.去中心化治理

不是每一个问题都是钉子,不是每一个解决方案都是锤子。

6.去中心化管理数据

①希望让每一个服务来管理其只有的数据库

②强调各个服务之间进行“无事务”的调用

③若在过程中发现错误,通过补偿机制来进行处理,使得错误数据能够达到最终的一致性

7.基础设施自动化

持续交付

自动化测试

自动化部署

8.容错设计

实现监控和日志记录的组件,比如服务状态、断路器状态、吞吐量、网络延迟等关键数据的仪表盘等。

9.演进式设计

从单体开始,逐渐拆分

1.3 SpringCloud简介

1.3.1 什么是SpringCloud

Spring Cloud 是一款基于Srping Boot实现的微服务架构开发工具

1.3.2 SpringCloud子项目

①Spring Cloud Config 配置管理工具;

Spring Cloud Netfix 核心组件,整合对个Netflix OSS开源套件;

 aEureka 服务治理组件(包含服务注册中心、服务注册与发现机制的实现);

 bHystrix 容错管理组件(实现短路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力);

 cRibbon 客户端负载均衡的服务调用组件;

 dFeign 基于RibbonHystrix的声明式服务调用组件;

 eZuul 网关组件(提供智能路由、访问过滤等功能);

 fArchaius 外部化配置组件;

Spring Cloud Bus 事务、消息总线(用于传播集群中的状态变化或事务,以触发后续的处理,比如用来动态刷新配置等);

Spring Cloud Cluster(针对ZookeeperRedisHazelcastConsul的选举算法和通用状态模式的实现);

Spring Cloud Cloudfoundry(与 Pivotal Cloudfoundry的整合支持);

Spring Cloud Consul(服务发现与配置管理工具);

Spring Cloud Stream(通过RedisRabbit或者Kafka实现的消费微服务,可以通过简单的声明式模型来发送和接受消息);

Spring Cloud AWS(用于简化整合Amazon Web Service的组件);

Spring Cloud Security安全工具包(提供Zuul代理中对OAuth2客户端请求的中继器);

Spring Cloud Sleuth Spring Cloud应用的分布式跟踪实现,可以完美整合Zipkin。其中zipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪);

Spring Zookeeper(基于Zookeeper的服务发现与配置管理组件);

Spring Cloud starttersSpring Cloud的基础组件,它是基于Spring Boot风格项目的基础依赖模块);

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

。。。

1.4 版本说明

①Spring Cloud版本采用了伦敦地铁站的名字,按照首字母排序的规则,进行命名的;

Cloud代号

Boot版本(train)

Boot版本(tested)

lifecycle

Angle

1.2.x

incompatible with 1.3

EOL in July 2017

Brixton

1.3.x

1.4.x

2017-07

Camden

1.4.x

1.5.x

-

Dalston

1.5.x

not expected 2.x

-

Edgware

1.5.x

not expected 2.x

-

Finchley

2.x

not expected 1.5.x

-

原著中的例子采用Brixton.SR5版本,基于Spring Boot 1.3.7版本;但是Brixton版本于2017-07已卒,故笔者采用的是Finchley.M8版本 + Spring Boot 2.0.0版本



猜你喜欢

转载自blog.csdn.net/qq296398300/article/details/79635090