首页 > 技术文章 > 微服务云应用开发技术前瞻

RealWorld 2018-05-08 11:02 原文

微服务体系结构简介

  • API Gateway(Api 网关)

    • 为体系(或子系统)提供统一的访问入口

    • 在统一访问的基础上,能够实现

      • 访问的认证与授权(策略控制)

      • 动态路由

      • 服务迁移

      • 负载均衡

      • 限流、降级等反向代理

      • 测试规划

        • 压力测试

        • 金丝雀测试(灰度测试)

服务注册中心(Service Register Server)

  • 所有微服务都会注册在中心

  • 注册中心提供功能(服务器端)

    • 服务注册

    • 服务下线

    • 服务续约

    • 剔除失效服务

  • 客户端

    • 服务获取

    • 服务调用

    • 容错

大致可归为三类:

  • 应用内:直接集成到应用中,依赖于应用自身完成服务的注册与发现,最典型的是Netflix提供的Eureka
  • 应用外:把应用当成黑盒,通过应用外的某种机制将服务注册到注册中心,最小化对应用的侵入性,比如Airbnb的SmartStack,HashiCorp的Consul
  • DNS:将服务注册为DNS的SRV记录,严格来说,是一种特殊的应用外注册方式,SkyDNS是其中的代表

配置管理中心(Configuration Server)

  • 分布式配置管理中心

    • 每个服务都有可能包含不同类型的配置

      • 开发环境、测试环境和生产环境
  • 提供的常用功能

    • 提供统一、集中配置管理

      • 配置一致性
    • 不同环境提供不同配置

      • 开发、测试和生产
    • 运行期间的动态配置更新

    • 配置版本管理(回滚)

授权与认证服务(策略控制)

  • 通常是身份认证与安全控制

  • 服务提供的功能

    • 安全、简单和开放

    • 服务无状态

    • 能跨语言、跨服务(甚至跨域)调用传递

    • 具有足够性能

    • OAuth2/JWT

      • JWT: JSON Web Token
  • 断路器与容错机制

    • 分布式系统中不可避免失败,所以需要建立一种有效的防御机制来避免和隔离失败

    • 断路器或容错机制需要面对:

      • 隔离:线程隔离,信号量隔离。避免个别服务故障扩大。

      • 熔断:当失败率达某阈值时,触发快速失败

      • 降级:超时降级、熔断降级,可以使用回调返回保底数据

      • 缓存:请求缓存、请求合并

      • 实时监控与报警

  • 分布式服务追踪与日志整合

    • 根据服务的划分,带来就是一个业务会由多个服务协作完成,形成调用链。

    • 我们需要追踪和监控这些链路,最终掌握服务的工作质量

      • 每个调用的实时数据收集

      • 数据存储

      • 数据分析与展示

消息总线与消息驱动

  • EDA:事件驱动架构,本身就是一个应用广泛的设计与开发思想。消息发布者只关注消息的发布,而消费者只关注自己感兴趣的消息。

  • EDA 带来的好处:

    • 低耦合

    • 持久性

    • 高可扩展性

    • 高灵活性

运行环境平台管理

  • 使用 Docker 作为每个微服务的运行容器

  • 引入 Docker 管理平台

    • OpenShift Origin (RadHat)

      • 基于 Docker + Kubernetes
    • Kubernetes(CNCF)

其他内容

  • 数据存储

    • MySQL

    • Splunk

    • ELK

    • Redis

  • 消息忠线

    • RabbitMQ/Kafka
  • DevOps

    • Jenkins --- 持续集成

    • Git --- 源代码管理

    • Ansible --- 运维

云应用开发框架

  • Spring Cloud 全家桶

    • 基础:Spring Framework + Spring Boot
  • Dubbo (阿里巴巴)

    • Spring Framework + zk
  • Vert.X (Eclipse 基金会)

    • 异步消息总线(自成系统)

 Spring Cloud 全家桶

  • Spring 家族

    • Spring Framework -- 基础

    • Spring Boot -- 应用整合

      • 简化配置

      • 大量应用整合

    • Spring Data 数据存取

    • Spring Cloud 云应用整合

    • Spring Security -- 安全

Spring Cloud 全家桶

  • 提供完整微服务开发框架

  • API 网关

    • Spring Cloud Netflix Zuul

    • Spring Cloud Gateway

  • 服务注册中心

    • Spring Cloud Netflix Eureka

    • Spring Cloud Consul

    • Spring Cloud ZooKeeper

  • 配置管理中心

    • Spring Cloud Config
  • 授权与认证服务

    • Spring Cloud Security
  • 断路器与容错处理

    • Spring Cloud Netflix Hystrix
  • 分布式服务追踪与日志整合

    • Spring Cloud Sleuth

    • Spring Cloud Zipkin

  • 消息总线与消息驱动

    • Spring Cloud Stream

    • Spring Cloud Bus

  • 其他

    • 客户端负载均衡:Spring Cloud Ribbon

    • REST 声明式编程:Spring Cloud Feign

推荐阅读