您的位置:首页 > 编程语言 > Java开发

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

2018-03-21 09:33 651 查看
第1章 基础知识1.1 什么是微服务架构
简单说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协作
1.2 与单体系统的区别
系统会按照不同模块拆分成多个不同的服务,这些服务独立部署和扩展单一服务的更新,不会影响其他服务的运行,同时,由于是独立部署,我们可以更精准地为每个服务评估性能容量,通过配合服务间的协作流程,也可以更容易地发现系统的瓶颈位置,以及给出较为准确的系统级性能容量评估。
1.3 如何实施微服务
1.3.1 带来的新挑战
1.运维新挑战
运维人员需要维护的进程数大大增加,需要运维人员有一定的开发能力编排运维过程,并让它们能自动运行起来
2.接口的一致性
需要更完善的接口和版本管理,或是严格地遵循开闭原则(对于扩展是开放的,对于修改是关闭的)
3.分布式的复杂性
比如网络延迟,分布式事务,异步消息等
1.3.2 微服务的九大特征
1.服务组件化
每个服务像组件一样,是一个可以独立更换和升级的单元,且相互独立,在更新或升级的时候,并不影响其他单元。
2.按业务组织团队
①可以有效减少服务内部修改所产生的内耗;②团队边界可以变得更为清晰。
3.做产品的态度
每个成员应该以做产品的方式,对整个生命周期负责,而不是以项目的模式,以完成开发与交付,并将成功交给运维为终极目标。
4.智能端点与哑管道
    个人理解:哑管道即“交互方式比较单一”,依赖“智能端点”进行总的协调调度。这样单一的交互,实现了易读性,但是智能调度却消耗了系统的部分资源,使得系统性能的高效性受到影响。
更粗粒度的通信协议
①使用HTTP的RESTful 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开源套件;
 a)Eureka 服务治理组件(包含服务注册中心、服务注册与发现机制的实现);
 b)Hystrix 容错管理组件(实现短路器模式,帮助服务依赖中出现的延迟和为故障提供强大的容错能力);
 c)Ribbon 客户端负载均衡的服务调用组件;
 d)Feign 基于Ribbon和Hystrix的声明式服务调用组件;
 e)Zuul 网关组件(提供智能路由、访问过滤等功能);
 f)Archaius 外部化配置组件;
③Spring Cloud Bus 事务、消息总线(用于传播集群中的状态变化或事务,以触发后续的处理,比如用来动态刷新配置等);
④Spring Cloud Cluster(针对Zookeeper、Redis、Hazelcast、Consul的选举算法和通用状态模式的实现);
⑤Spring Cloud Cloudfoundry(与 Pivotal Cloudfoundry的整合支持);
⑥Spring Cloud Consul(服务发现与配置管理工具);
⑦Spring Cloud Stream(通过Redis、Rabbit或者Kafka实现的消费微服务,可以通过简单的声明式模型来发送和接受消息);
⑧Spring Cloud AWS(用于简化整合Amazon Web Service的组件);
⑨Spring Cloud Security安全工具包(提供Zuul代理中对OAuth2客户端请求的中继器);
⑩Spring Cloud Sleuth (Spring Cloud应用的分布式跟踪实现,可以完美整合Zipkin。其中zipkin为分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪);
⑪Spring Zookeeper(基于Zookeeper的服务发现与配置管理组件);
⑫Spring Cloud startters(Spring Cloud的基础组件,它是基于Spring Boot风格项目的基础依赖模块);
⑬Spring Cloud CLI(用于在Groovy中快速创建Spring Cloud应用的Spring Boot CLI插件);
。。。
1.4 版本说明
①Spring Cloud版本采用了伦敦地铁站的名字,按照首字母排序的规则,进行命名的;
Cloud代号Boot版本(train)Boot版本(tested)lifecycle
Angle1.2.xincompatible with 1.3EOL in July 2017
Brixton1.3.x1.4.x2017-07卒
Camden1.4.x1.5.x-
Dalston1.5.xnot expected 2.x-
Edgware1.5.xnot expected 2.x-
Finchley2.xnot expected 1.5.x-
原著中的例子采用Brixton.SR5版本,基于Spring Boot 1.3.7版本;但是Brixton版本于2017-07已卒,故笔者采用的是Finchley.M8版本 + Spring Boot 2.0.0版本
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息