《Spring Cloud与Docker高并发微服务架构设计实施》笔记
标签:
SpringBoot
一、微服务架构与Spring Cloud
-
- 微服务概念:
将单个应用作为一组小型服务开发的方法,每个服务程序都在自己的进程中运行,并与轻量级机制进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机器独立部署。这些服务可以用不同的编程语言编写,使用不同的数据存储技术,并尽量不用集中式方式进行管理。
- 微服务概念:
-
- 微服务定义
- 微服务架构:将复杂系统使用组件化的方式进行拆分,并使用轻量级通信方式进行整合的一种设计方法(分而治之、合而用之)。
- 微服务:通过微服务架构设计方法拆分出来一个独立的组件化的小应用。
-
- 小型化(组件化)
-
- 自治化
-
- 扁平化
-
- 轻量级设计
-
- 渐进式设计
-
-
- 微服务架构与整体架构区别
-
整体架构:随着项目的迭代更新,项目将变得越来越难以维护,难以更新,稳定性无法得到有效保障,无法快速响应需求的变更。适合小型项目。
-
微服务架构:随着项目的迭代更新,能够快速响应需求的变化,进行快速更新,快速迭代,单点服务故障不会影响全局系统的正常运行或降低影响程度,能够提供良好的稳定性
-
- 微服务架构与SOA的区别
- SOA
- 粗粒度、松耦合
- 重量级设计
- 集中式管理
- 统一的数据中心
- 微服务
- 轻量级设计
- 扁平化管理
- 服务独立管理独立数据库
-
- 微服务架构优点
-
- 开发简单
-
- 快速响应需求变化
-
- 随时随地更新
-
- 系统更加稳定可靠
-
- 规模可持续拓展
-
- Spring Cloud功能简介
- 分布式/版本化配置
- 服务注册与发现
- 路由
- 服务之间调用
- 负载均衡
- 断路器
- 全局锁
- 主机选举和集群状态
- 分布式消息
-
- 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:模拟测试
二、微服务架构设计最佳实践
-
- 微服务架构优点
-
- 开发简单
-
- 快速响应需求变化
-
- 随时随地更新
-
- 系统更加稳定可靠
-
- 规模可持续拓展
-
- 微服务引发的问题
- 服务界限和粗细粒度不好把握
- 分布式的微服务增加了服务之间的相互调用及其通信的复杂性
- 分散的数据管理难以保证数据的一致性
- 由多个微服务组成的系统会增加集成测试的复杂性
- 单个服务的变更可能会影响到多个服务
- 部署的复杂性
-
- 如何解决
-
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人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦