为了账号安全,请及时绑定邮箱和手机立即绑定

《Spring Cloud与Docker高并发微服务架构设计实施》笔记

标签:
SpringBoot

一、微服务架构与Spring Cloud

    1. 微服务概念:
      将单个应用作为一组小型服务开发的方法,每个服务程序都在自己的进程中运行,并与轻量级机制进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机器独立部署。这些服务可以用不同的编程语言编写,使用不同的数据存储技术,并尽量不用集中式方式进行管理。
    1. 微服务定义
    • 微服务架构:将复杂系统使用组件化的方式进行拆分,并使用轻量级通信方式进行整合的一种设计方法(分而治之、合而用之)。
    • 微服务:通过微服务架构设计方法拆分出来一个独立的组件化的小应用。
        1. 小型化(组件化)
        1. 自治化
        1. 扁平化
        1. 轻量级设计
        1. 渐进式设计
    1. 微服务架构与整体架构区别
    • 整体架构:随着项目的迭代更新,项目将变得越来越难以维护,难以更新,稳定性无法得到有效保障,无法快速响应需求的变更。适合小型项目。

    • 微服务架构:随着项目的迭代更新,能够快速响应需求的变化,进行快速更新,快速迭代,单点服务故障不会影响全局系统的正常运行或降低影响程度,能够提供良好的稳定性

    1. 微服务架构与SOA的区别
    • SOA
      • 粗粒度、松耦合
      • 重量级设计
      • 集中式管理
      • 统一的数据中心
    • 微服务
      • 轻量级设计
      • 扁平化管理
      • 服务独立管理独立数据库
    1. 微服务架构优点
      1. 开发简单
      1. 快速响应需求变化
      1. 随时随地更新
      1. 系统更加稳定可靠
      1. 规模可持续拓展
    1. Spring Cloud功能简介
    • 分布式/版本化配置
    • 服务注册与发现
    • 路由
    • 服务之间调用
    • 负载均衡
    • 断路器
    • 全局锁
    • 主机选举和集群状态
    • 分布式消息
    1. Spring Cloud组件介绍
    • Spring Cloud Config:配置管理工具包,可以将每个服务的配置放到远程服务器,实现集群化的集中管理,目前支持本地存储、Git以及Subversion
    • Spring Cloud Netflix
      • Eureka:服务治理
      • Hystrix:服务容错
      • zuul:服务网关
      • Archaius:服务配置
      • Ribbon:负载均衡
      • Turbine:服务监控
    • Spring Cloud Bus:消息总线
    • Spring Cloud CloudFoundry Service Broker:提供一个起点,为CloudFoundry建立托管服务代理
    • Spring Cloud Cluster:提供Leadership选举
    • Spring Cloud Consul:封装了Consul操作
    • Spring Cloud Security:安全控制
    • Spring Cloud Sleuth:日志收集
    • Spring Cloud Data Flow:大数据操作工具
    • Spring Cloud Stream:数据流操作开发包
    • Spring Cloud Stream App Starters:提供数据流基于Spring的外部系统集成的方法
    • Spring Cloud Task:任务管理调度
    • Spring Cloud Zookeeper:Zookeeper工具包
    • Spring Cloud Connectors:应用连接
    • Spring Cloud Starters:启动项目工具包
    • Spring Cloud CLI:基于Spring Boot CLI
    • Spring Cloud Contract:模拟测试

二、微服务架构设计最佳实践

    1. 微服务架构优点
      1. 开发简单
      1. 快速响应需求变化
      1. 随时随地更新
      1. 系统更加稳定可靠
      1. 规模可持续拓展
    1. 微服务引发的问题
    • 服务界限和粗细粒度不好把握
    • 分布式的微服务增加了服务之间的相互调用及其通信的复杂性
    • 分散的数据管理难以保证数据的一致性
    • 由多个微服务组成的系统会增加集成测试的复杂性
    • 单个服务的变更可能会影响到多个服务
    • 部署的复杂性
    1. 如何解决
    • 3.1 合理划分服务(项目最难部分)

      • 深入理解业务
      • 先粗后细,逐步演化
      • 水平划分法:按业务功能不同划分微服务(Rest API),主要完成数据管理方面工作,并通过使用Rest协议对外提供接口服务
      • 垂直划分法: 以Rest API为基础实现前后端分离设计,创建Web UI微服务,专注人机交互设计
    • 3.2 服务治理:使用Spring Cloud工具套件

      • 注册管理服务组件Eureka
      • 负载均衡服务组件Ribbon
      • 边缘代理服务组件Zuul
      • 断路器组件Hystrix
      • 聚合服务事件组件Turbine
      • 日志收集组件Sleuth
      • 配置管理服务组件Config
        服务治理时序图
    • 3.3 Rest API微服务设计

      • 独立部署、独立数据库、独立运行
      • 功能:对内数据管理,对外提供API调用
      • 遵循Restful规范
      • 高性能设计
        • 使用数据库集群
        • 读写分离设计
        • 使用缓存
        • 保证服务的独立性
    • 3.4 Web UI微服务设计

      • 使用FeiginClient实现负载均衡调用
      • 使用Hystrix实现容错设计
      • 使用非阻塞的异步编程技术实现高并发调用(Java8异步编程)
      • 使用分布式文件系统(FastDFS)异步
    • 3.5 调用规则设计

      • Web UI 调用Rest API
      • Rest API 之间只能通过MQ进行通信
      • Web UI之间可使用与之对应的实例进行相互跳转
    • 数据最终一致性设计

      • CAP(Consistency、Availability、Partition tolerance)一致性、可用性、分区容错性三者不可兼得
      • BASE(Basically Availability、Soft state,Eventually consistent)基本可用、软状态、最终一致性
    • 分布式集群架构设计

    • 运行环境安全设计

      • 防火墙设计
      • 防攻击设计
      • 访问控制设计
      • 数据保密设计

记: 深度理解业务,结合开发团队实际情况,业务变化情况,进行适当服务拆分;最佳设计不一定适合具体业务。没有最佳设计,只有最符合业务的设计,才是最佳设计

点击查看更多内容
4人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消