标签云
读者墙
RSS订阅
勤学习 乐分享
暴走编程
搜索
首页
技术随笔
JAVA专栏
安卓专栏
Linux专栏
行业经验
视频教程
叨逼叨
Spring Cloud - 前世今生
Oct 24, 2022
暴走编程
JAVA专栏
0
0
### 前言 单体架构是什么 • 一个归档包包含了应用所有功能的应用程序,我们通常称之为单体应用 • 架构单体应用的架构风格,我们称之为单体架构,这是一种比较传统的架构风格 单体架构缺点: • 复杂性逐渐变高 • 技术债务逐渐上升 • 部署速度逐渐变慢 • 无法按需伸缩 架构演进: • 单体架构 • SOA(面向服务) • 微服务 微服务是什么 简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的,其中每个小型服务都运行在自己的进程中,并经常采用 HTTP资源APi 这样轻量的机制来相互通信,这些服务 围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署;这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术,对这些微服务我们仅做最低限度的集中管理; 微服务具备的特性: • 每个微服务可独立运行在自己的进程里 • 一系列独立运行的微服务共同构建起了整个系统 • 每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理、用户管理等 • 微服务之间通过一些轻量的通信机制进行通信,例如通过REST API或者RPC的方式进行调用 微服务优点: • 易于开发和维护 • 启动较快 • 局部修改容易部署 • 技术栈不受限 • 按需伸缩 • DevOps 微服务带来的挑战: • 运维要求较高 • 分布式的复杂性 • 接口调整成本高 • 重复劳动 微服务设计原则: • 单一职责原则 • 服务自治原则 • 轻量级通信原则 • 接口明确原则 微服务常用框架: • Spring Cloud:http://projects.spring.io/spring-cloud • Dubbo:https://dubbo.apache.org/zh/ • Consul. ### 分布式架构 分布式架构概念: 分布式架构是相对于单体架构来说 • 分布式架构强调小粒度的模块化部署,每个模块独立,分而治之 • 分布式强调 "避免将鸡蛋放在一个篮子里" ![](https://image-1305827789.cos.ap-shanghai.myqcloud.com/image/2022/10/24/20221024123138.jpg) 微服务定义: 微服务(MicroService)最早由 Martin Fowler 与 James Lewis 于2014年共同提出,微服务架构风格是一种使用系列微小服务来开发单个应用的的方式,每个服务运行在自己的进程中,为独立业务开发, 并使用轻量级通信机制,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持分布式管理; 单体架构优缺点: 优点: • 开发简单粗暴 • 没有其他开销 • 人力成本低 缺点: • 开发效率低 • 团队协作困难 • 部署不够灵活 • 稳定性不高 • 扩展性不够 总结: 单体架构适用于短平快的中小型项目 微服务优缺点: 优点: • 业务驱动 • 轻松扩展 • 容错机制 • 管理轻松 缺点: • 人力成本高 • 设备成本高 • 架构设计要求高 • 调试麻烦 总结: 适用于大业务、高并发、高可用场景 ### 服务拆分原则 可伸缩的架构设计: • x-微服务可水平扩展 • y-按业务功能进行切分 • z-将数据进行切分 ### Spring Cloud 架构体系: ![](https://image-1305827789.cos.ap-shanghai.myqcloud.com/image/2022/10/24/20221024125600.jpg) Spring Cloud 是一个开发工具集,包含了多个子项目 • 基于 Spring Boot 的开发便利 • 对 Netflix 开源组件的进一步封装 Spring Cloud 极大的简化了微服务的开发; 微服务两大阵营: 阿里系: • 通信方式:RPC(二进制) • 通信套件:Dubbo • 注册中心:Zookeeper 优点: • 执行效率高 • 接口规范 缺点: • 兼容性差 • 服务治理不完整 • 国产开源 Spring Cloud系: • 通信方式:Restful(Http) • 通信套件:Spring Cloud Netflix 全家桶 • 注册中心:Netflix Eureka 优点: • 兼容性好 • 完整的服务治理 缺点: • 接口不规范 • 执行效率相对较差