zoukankan      html  css  js  c++  java
  • SpringCloud(一) 微服务架构-总览

      微服务是将企业通用服务按业务化分成一个个单体服务,增强可用性、服务易扩展、减少开发成本、减少服务发布对整个平台的影响。微服务是一种思想,实现有很多方式,企业转由单个系统转向微服务就要考虑很多问题,比如技术选型、业务拆分问题、高可用、服务通信、服务发现和治理、集群容错、配置管理、数据一致性问题、康威定律、分布式调用跟踪、CI/CD、微服务测试,以及调度和部署等等,这并非一些简单招数能够化解。

      微服务框架必须能够达到借助虚拟化平台,能够按需创建机器并调整大小,借助基础设施的自动化从一台机器扩展到多台,拥有业务监控预警、异常熔断等等功能。

    康康定律

    • 任何组织在设计一套系统(广义概念上的系统)时,所交付的设计方案在结构上都与该组织的沟通结构保持一致
    • 沟通的问题会影响系统的设计

      所以,上不上微服务已经不是使用某个技术栈的技术问题了,已经上升到一个团队结构有关的管理问题了

    限界上下文

       微服务领域驱动设计中有个核心概念-限界上下文,其含义是用一个清晰可见的边界,将上下文勾勒出来,如此就能在自己的边界内维持领域模型的一致性和完整性

    • 领域逻辑层面:确定领域模型的业务边界,维护了模型的完整性与一致性,从而降低系统的业务复杂度
    • 团队合作层面:确定开发团队的工作边界,建立团队之间的合作模式,避免团队之间的沟通变得混乱,从而降低系统的管理复杂度
    • 技术实现层面:确定系统架构的应用边界,保证了系统层和上下文领域层各自的一致性,建立上下文之间的集成方式,从而降低了系统的技术复杂度

      当我们将一个限界上下文限定在一个独立的进程边界内时,并不足以决定领域驱动架构的设计质量,还需要将这个边界的外延扩大,考虑限界上下文需要访问的外部资源,这样就产生了两种不同风格的架构:数据库共享架构和零共享架构

    SpringCloud技术栈

      服务治理:目前SpringCloud主要通过整合Netflix的相关产品来实现这方面的功能,包括用于服务注册发现的Eureka,调用断路器Hystrix,调用端负载均衡Ribbon,Rest客户端Feign,智能服务路由Zuul,用于监控数据收集和展示的Spectator,用于配置读取的Archaius和提供Controller层Reactive封装的RxJava。

      配置中心:基于SpringCloudNetfix和SpringCloudBus,Spring又提供了SpringCloudConfig,实现了配置集中管理、动态刷新的配置中心概念。配置通过Git或简单文件来存储。

      消息组件:SpringCloudStream对分布式消息的各种需求进行了抽象,包括发布订阅、分组消费、消息分片等功能,实现了微服务之间的异步通信。SpringCloudStream也集成了第三方的RabbitMQ和ApacheKafka作为消息队列的实现。

      分布式链路监控:SpringCloudSleuth提供了全自动、可配置的数据埋点,以收集微服务调用链路上的性能数据,并发送给Zipkin进行存储、统计和展示

      安全控制:SpringCloudSecurity基于OAuth2这个开放网络的安全标准,提供了微服务环境下的单点登录、资源授权、令牌管理等功能

      数据处理:SpringCloudTask、SpringCloudBatch。

  • 相关阅读:
    ASP.NET Core 集成 WebSocket
    如何在CentOS7上安装桌面环境?
    Visual Studio 2017 远程调试(Remote Debugger)应用
    cmd sc命令进行服务操作
    EntityFrameworkCode 操作MySql 相关问题
    Windows下安装PHP开发环境
    未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序
    System.Runtime.InteropServices.COMException (0x800A03EC): 无法访问文件
    c# WinFo判断当前程序是否已经启动或存在的几种方式
    MVC自定义视图引擎地址
  • 原文地址:https://www.cnblogs.com/ryjJava/p/14203962.html
Copyright © 2011-2022 走看看