【微服务笔记】Spring Cloud 总体架构

2019-09-23  本文已影响0人  程序员Anthony

1 什么是微服务?

不得不说,关于技术的资源国外的都是一手资源,所以这里粘贴胰
亚马逊谈微服务

微软谈 微服务

pivotal谈 微服务

IBM 红皮书:Microservices Best Practices for Java

Microservices a definition of this new architectural term

微服务是分布式系统中最近比较流行的架构模型,也是 SOA 架构的一个进化。

2 为什么要引入微服务

除了上面的技术角度,我们可以从Amazon的CTO的角度,我们可以看看这篇文章All Things Distributed

To succeed in using application development to increase agility and innovation speed, organizations must adopt five elements, in any order: microservices; purpose-built databases; automated software release pipelines; a serverless operational model; and automated, continuous security.

3 Spring Cloud

Spring Cloud 是一个基于Spring boot,用于快速构建分布式系统的通用模式的工具集。 为微服务架构中涉及的配置管理、服务治理、限流熔断、智能路由、API网关、控制总线、全局锁、分布式会话、调用链监控、 集群状态管理等提供了一种简单的开发方式。

4 微服务落地技术总结

5 Spring Cloud子项目简介

整理于Spring Cloud中文网,与Spring Cloud 官网

spring-cloud-aws:用于简化整合 Amazon Web Service 的组件
spring-cloud-bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。
spring-cloud-cli:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。
spring-cloud-contract:
spring-cloud-config:配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。
spring-cloud-netflix:针对多种Netflix组件提供的开发工具包,其中包括Eureka、Hystrix、Zuul、Archaius等。
Netflix Eureka:云端负载均衡,一个基于 REST 的服务,用于定位服务,以实现云端的负载均衡和中间层服务器的故障转移。
Netflix Hystrix:熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。
Netflix Ribbon: 客户端负载 均和的服务调用组件(客户端负载)
Netflix Feign: 一种声明式、模板化的HTTP客户端
Netflix Zuul:边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。
Netflix Archaius:配置管理API,包含一系列配置管理API,提供动态类型化属性、线程安全配置操作、轮询框架、回调机制等功能。
Netflix Turbine:聚合服务器发送事件流数据的一个工具,用来监控集群下hystrix的metrics情况
spring-cloud-data-flow:大数据操作工具,通过命令行方式操作数据流。
spring-cloud-security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。
spring-cloud-cloudfoundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。
spring-cloud-consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。
spring-cloud-sleuth:日志收集工具包,封装了Dapper,Zipkin和HTrace操作。
spring-cloud-stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。
spring-cloud-zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。
spring-boot:快速开发框架,Spring Cloud的基础
spring-cloud-task:提供云端计划任务管理、任务调度。
spring-cloud-openfeign:Feign是一种声明式、模板化的HTTP客户端。

6 微服务架构


总体技术架构图从底层到接入层分了六层

基础设施层:是软件运行的必要条件,计算、网络、存储、监控、安全、IDC
平台服务层:包含图中几个模块,资源治理、集群资源调度配合实际业务场景实现资源充分利用,如业务量暴增时,增加服务,上调资源,需要配合监控告警,理想状态是如何实现自动化,交由系统弹性分配。镜像治理、发布系统帮助实现自动化。IAM ( Identity And Access Management)
支撑服务层:后续文章的核心讨论点,也是微服务架构落地与实现的带来的挑战
业务服务层:分解为基础服务与聚合服务两个维度
基础服务:基于单一职责,根据业务特点沉淀与底层的核心基础服务、公共服务、中间层服务
聚合服务:很多时候基础服务是可重复利用的,同时也需要支持需求的多变,通过聚合服务将基础服务关联,组件,再封装,可很好实现目标
网关层:可根据访问者类型拆分为图中几类。内部的接口无论出于安全、稳定性、还是设计上的考虑都不应该直接开放给接入层(或者是调用者),引入网关层设计可以很好解决上述问题,并且可通过网关层实现特定需求,如黑名单过滤,鉴权、反向路由等
接入层:统一引入LB,可分为外部LB以及内部LB。负载均衡已成为标配,无论是需要充分利用资源,还是控制访问流量。主流的解决方式nginx、f5、软负载等

微服务架构分层中,业务服务层才是我们的业务实现代码所在。去除与运维、硬件相关的基础设施层及平台服务层。接入层的LB、网关层、支撑服务层我们都依托于框架,如果有一套完善的微服务框架能帮助我们解决这些与业务无关,但是必须由他们来支撑业务的正常运行的模块,那么对于整体的开发效率的提升是很有帮助的。

微服务框架具体解决什么:负载均衡(软件形式的负载均衡)
服务治理
集中配置
限流熔断
API网关
日志聚合
监控告警
后台服务
认证授权

7 参考文章

Spring Cloud 之简介

微服务架构技术栈选型手册

一个可供中小团队参考的微服务架构技术栈

上一篇下一篇

猜你喜欢

热点阅读