SpringCloud 学习(1) --- 微服务与 Spring Cloud

1.1、什么是软件架构?

软件架构是在软件内部,经过综合各种因素的考量、权衡,选择特定的技术,将系统划分成不同的部分并使这些部分相互分工,彼此协作,为用户提供需要的价值。

1.2、哪些因素?

  • 业务需求
  • 技术栈
  • 成本
  • 组织架构
  • 可扩展性
  • 可维护性

应用是可以独立运行的程序代码,提供相对完善的业务功能。

架构分为:业务架构、应用架构、技术架构。

业务架构决定应用架构,技术架构支撑应用架构。

架构的发展历程:单体架构-->分布式架构-->SOA架构-->微服务架构

1.3、什么是单体架构

定义:功能、业务集中在一个发布包里,部署运行在同一个进程中

优点

  • 易于开发
  • 易于测试
  • 易于部署
  • 易于水平伸缩(节点复制)

缺点

  • 代码膨胀,难以维护(灵活度不够)
  • 构建、部署成本大
  • 新人上手困难
  • 降低系统性能
  • 启动慢
  • 扩展性差

1.4、集群:负载均衡

随着访问量的变大,一个Tomcat服务器已经不能满足需要。

需要配置多个Tomcat,做Tomcat集群,通过负载均衡服务器访问不同的Tomcat服务器,每个Tomcat中部署完整项目即可

1.5、分布式架构

每一个Tomcat存放完整项目,会存在部分业务模块长时间用不到,部分业务模块不够用的现象。

按照功能模块拆分项目,每台服务器仅存放一个模块,通过多系统的配合完成整体业务逻辑。

(按照业务垂直切分,每个引用都是单体架构,通过API互相调用)

1.6、面向服务的SOA架构

SAO架构有两个主要角色:服务的提供者(provider)、服务的消费者(consumer)。阿里的Dubbo的SOA的一个典型实现

将工程拆分成表现层和服务层两个工程,

服务层中包含业务逻辑,只需要对外提供服务即可。

服务层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现

优点

  • 模块拆分,使用接口通信,降低了模块之间的耦合度
  • 把一个大项目拆分成多个子项目,可以并行开发
  • 增加功能时只需要增加一个子项目,调用其他系统接口即可
  • 可以灵活分布式部署

缺点

  • 系统之间需要远程通信,增加了开发的工作量

1.7、微服务架构

微服务架构是一种架构风格,对于大型复杂的业务系统,可以将业务功能拆分成多个相互独立的微服务,各个微服务之间是松耦合的,通过各种远程协议进行同步/异步通信,各个微服务可单独部署扩容/缩容以及升级/降级

微服务技术选型对比

Spring CloudDubboMotanMSEC其他
功能微服务完整方案服务治理框架服务治理框架服务开发运营框架
通信方式REST / httpRPC 协议RPC / Hessian2Protocol BuffersgRPC、thrift
服务发现 / 注册Eureka(AP)ZK、NacosZK / Consul只有服务发现Etcd
负载均衡Ribbon客户端负载客户端负载客户端负载Ngnix + Lua
容错机制6 种6 种2 种自动容错keepalived、heartbeat
熔断机制Hystrix过载保护
配置中心Spring Cloud ConfigNacosApollo、Nacos
网关Zuul、GatewayKong、自研
服务监控Hystrix + TurbineDubbo + MonitorMonitorELK
链路监控Sleuth + ZipkikPinpoint
多语言REST 支持多语言JavaJavaJava、C++、PHPJava、PHP、Node.js
社区活跃度高(Spring)高(阿里)一般未知

2、什么是微服务?

微服务是一种架构风格,即将单体应用划分为小型的服务单元。

使用一套小服务来开发单个应用的方式,每个服务运行在独立的进程里,一般采用轻量级的通讯机制互联(应用程序之间远程调用进行通信),并且它们可以通过自动化的方式部署。

2.1、微服务的特性

1、完全独立的一个最小个体(可以独立运行)

2、个体与个体之间,通过远程调用进行访问。例如:基于RESTFul风格的

3、通过注册中心,将不同个体可以进行整合。

4、通过网关,可以进行统一的入口访问。

特征:

  • 单一职责
  • 轻量级通信
  • 隔离性
  • 业务数据的独立性(有自己的数据)
  • 技术多样性

3、Spring Cloud

3.1、这里先讲一下中间件的概念

中间件:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算器资源和网络通讯。是连接两个独立应用程序或独立系统的软件。

常见的中间件:

服务治理(如 RPC)配置中心全链路监控分布式事务分布式定时任务消息中间件API 网关分布式缓存数据库中间件等。

3.2、什么是Spring Cloud

SpringCloud就是用于构建微服务开发和治理的框架集合。

Spring Cloud 像是一个中间件,基于 Spring Boot 开发,提供一套完整的微服务解决方案。包括服务注册与发现配置中心全链路监控API网关消息总线负载均衡熔断器数据监控等选型的中立的开源组件,可以随需扩展和替换组装。

3.3、基于Spring Cloud的微服务解决方案

1、公用组件:服务调用:Feign、负载均衡:Ribbon、熔断器:Hystrix

2、网关:Eureka、Consul 使用 zuul(性能低)、SpringCloud Gateway(性能高);etcd、Nacos 使用自研网关

3、配置中心:SpringCloud Config、携程 Apollo、阿里 Nacos

4、Zipkin、Pinpoint、SkyWalking(推荐)

5、分布式事务、Docker、gRPC、领域驱动 Halo

3.4、Spring Cloud项目常见模块

  • Eureka:注册中心,用于注册所有服务(项目/应用)
  • Ribbon:负载均衡,用于搭建集群的。(同一个功能多个tomcat,ribbon帮着选择一个tomcat)
  • Zuul 网关:确定统一入口,方便进行管理。
  • Feign:服务与服务之间调用。类似HttpClient
  • Hystrix:熔断器,与正主断了联系,使用备胎。

组件名称所属项目组件分类
Eurekaspring-cloud-netflix注册中心
Zuulspring-cloud-netflix第一代网关
Sidecarspring-cloud-netflix多语言支持
Ribbonspring-cloud-netflix负载均衡
Hystrixspring-cloud-netflix熔断器
Turbinespring-cloud-netflix集群监控
Feignspring-cloud-openfeign声明式的 HTTP 客户端
Consulspring-cloud-consul注册中心
Gatewayspring-cloud-gateway第二代网关
Sleuthspring-cloud-sleuth链路监控
Configspring-cloud-config配置中心
Busspring-cloud-bus总线
Pipelinespring-cloud-pipelines部署管道
Dataflowspring-cloud-dataflow数据处理
Streamspring-cloud-stream消息驱动

服务治理中间件

服务治理中间件包含:服务注册与发现服务路由负载均衡自我保护管理机制等。 其中,服务路由包含:服务上下线在线测试机房就近选择AB测试灰度发布等。 负载均衡包含:支持根据目标状态和目标权重进行负载均衡。 自我保护包含:服务降级优雅降级流量控制


借鉴简书上的一位大神

原地址:https://www.jianshu.com/p/0a8f29842a6f

SpringClound:https://www.processon.com/view/link/5c3ec3cce4b0641c83ddee05

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值