Spring Cloud - 前世今生

前言

单体架构是什么

​ • 一个归档包包含了应用所有功能的应用程序,我们通常称之为单体应用

​ • 架构单体应用的架构风格,我们称之为单体架构,这是一种比较传统的架构风格

单体架构缺点:

​ • 复杂性逐渐变高

​ • 技术债务逐渐上升

​ • 部署速度逐渐变慢

​ • 无法按需伸缩

架构演进:

​ • 单体架构

​ • SOA(面向服务)

​ • 微服务

微服务是什么

简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的,其中每个小型服务都运行在自己的进程中,并经常采用 HTTP资源APi 这样轻量的机制来相互通信,这些服务

围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署;这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术,对这些微服务我们仅做最低限度的集中管理;

微服务具备的特性:

​ • 每个微服务可独立运行在自己的进程里

​ • 一系列独立运行的微服务共同构建起了整个系统

​ • 每个服务为独立的业务开发,一个微服务一般完成某个特定的功能,比如:订单管理、用户管理等

​ • 微服务之间通过一些轻量的通信机制进行通信,例如通过REST API或者RPC的方式进行调用

微服务优点:

​ • 易于开发和维护

​ • 启动较快

​ • 局部修改容易部署

​ • 技术栈不受限

​ • 按需伸缩

​ • DevOps

微服务带来的挑战:

​ • 运维要求较高

​ • 分布式的复杂性

​ • 接口调整成本高

​ • 重复劳动

微服务设计原则:

​ • 单一职责原则

​ • 服务自治原则

​ • 轻量级通信原则

​ • 接口明确原则

微服务常用框架:

​ • Spring Cloud:http://projects.spring.io/spring-cloud

​ • Dubbo:https://dubbo.apache.org/zh/

​ • Consul.

分布式架构

分布式架构概念:

分布式架构是相对于单体架构来说

​ • 分布式架构强调小粒度的模块化部署,每个模块独立,分而治之

​ • 分布式强调 “避免将鸡蛋放在一个篮子里”

Spring Cloud - 前世今生_第1张图片

微服务定义:

微服务(MicroService)最早由 Martin Fowler 与 James Lewis 于2014年共同提出,微服务架构风格是一种使用系列微小服务来开发单个应用的的方式,每个服务运行在自己的进程中,为独立业务开发,

并使用轻量级通信机制,通常是HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持分布式管理;

单体架构优缺点:

优点:
• 开发简单粗暴

​ • 没有其他开销

​ • 人力成本低

缺点:
​ • 开发效率低

​ • 团队协作困难

​ • 部署不够灵活

​ • 稳定性不高

​ • 扩展性不够

总结:

单体架构适用于短平快的中小型项目

微服务优缺点:

优点:

​ • 业务驱动

​ • 轻松扩展

​ • 容错机制

​ • 管理轻松

缺点:
• 人力成本高

​ • 设备成本高

​ • 架构设计要求高

​ • 调试麻烦

总结:

适用于大业务、高并发、高可用场景

服务拆分原则

可伸缩的架构设计:

​ • x-微服务可水平扩展

​ • y-按业务功能进行切分

​ • z-将数据进行切分

Spring Cloud

架构体系:

Spring Cloud - 前世今生_第2张图片

Spring Cloud 是一个开发工具集,包含了多个子项目

​ • 基于 Spring Boot 的开发便利

​ • 对 Netflix 开源组件的进一步封装

Spring Cloud 极大的简化了微服务的开发;

微服务两大阵营:

阿里系:
• 通信方式:RPC(二进制)

​ • 通信套件:Dubbo

​ • 注册中心:Zookeeper

优点:
​ • 执行效率高

​ • 接口规范

缺点:
​ • 兼容性差

​ • 服务治理不完整

​ • 国产开源

Spring Cloud系:

​ • 通信方式:Restful(Http)

​ • 通信套件:Spring Cloud Netflix 全家桶

​ • 注册中心:Netflix Eureka

优点:
​ • 兼容性好

​ • 完整的服务治理

缺点:
• 接口不规范

​ • 执行效率相对较差

你可能感兴趣的:(微服务专栏,1024程序员节,微服务,java)