美文网首页
【微服务笔记】Spring Cloud 总体架构

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

作者: 程序员Anthony | 来源:发表于2019-09-23 22:43 被阅读0次

    1 什么是微服务?

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

    微软谈 微服务

    pivotal谈 微服务

    IBM 红皮书:Microservices Best Practices for Java

    Microservices a definition of this new architectural term

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

    2 为什么要引入微服务

    • 核心原因:目前的单体应用或者SOA架构已无法满足业务的快速增长带来的需求,包括功能迭代效率、应用性能要求、稳定性要求。且随着时间推移问题越来越明显
    • 追逐潮流?相信是有的,或者抱着一步到位的理想开始就上微服务,不考虑业务、团队、公司现状,想后续一步一步完善

    除了上面的技术角度,我们可以从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 之简介

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

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

    相关文章

      网友评论

          本文标题:【微服务笔记】Spring Cloud 总体架构

          本文链接:https://www.haomeiwen.com/subject/ozfmuctx.html