基础知识
Posted Ethan_LiYan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础知识相关的知识,希望对你有一定的参考价值。
第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版本采用了伦敦地铁站的名字,按照首字母排序的规则,进行命名的;
②原著中的例子采用Brixton.SR5版本,基于Spring Boot 1.3.7版本;但是Brixton版本于2017-07已卒,故笔者采用的是Finchley.M8版本 + Spring Boot 2.0.0版本; |
以上是关于基础知识的主要内容,如果未能解决你的问题,请参考以下文章