spring-cloud学习笔记之微服务,spring-cloud落地实现以及与其他框架的粗略对比

spring-cloud学习笔记之微服务,spring-cloud落地实现以及与其他框架的粗略对比

  • spring-cloud学习笔记之微服务,spring-cloud落地实现以及与其他框架的粗略对比
    • 微服务架构
      • 应用架构的发展
      • spring-cloud的落地实现

spring-cloud学习笔记之微服务,spring-cloud落地实现以及与其他框架的粗略对比

微服务架构

应用架构的发展

​ 应用是可以独立运行的程序代码,提供相对完善的业务功能。目前软件架构有三种结构类型:业务架构、技术架构、应用架构。他们的关系是:业务架构决定应用架构,技术架构支撑应用架构。

架构发展历程

单体
分布式
SOA
微服务
  1. 单体应用架构可以理解为一个javaweb 应用程序,包含表现层、业务层、数据访问层,从cortroller到service再到dao,没有任何的应用拆分,开发完成之后打包成一个大的war包部署,简单的单体应用架构水平分层逻辑如下:
数据库层
数据访问层
业务层
表现层
DAO1
表1
表2
表3
DAO2
DAO3
BO1
BO2
BO3
页面1
页面2
页面3

优点:

  • 容易开发

  • 容易部署

  • 容易测试

缺点:

  • 灵活度不够:程序修改时,修改的不止是一个点,而是自上倒下的去修改,测试必须等整个程序都部署完才可以看出效果;可能需要等待其他开发人员开发完成后才能完成部署,降低了团队灵活性
  • 降低系统性能:原本可以直接访问数据库但现在多处一层,即使只包含一个功能的点,也需要在各个层写上代码。
  • 系统启动慢:一个进程包含了所有的业务逻辑,设计的启动模块过多,导致系统的启动时间长。
  • 系统拓展性差:增加新的功能点不能针对单点增加,要全局增加。
  1. 分布式架构:简单来说就是按照业务垂直切分,每个应用都是单体架构,通过API相互调用。分布式架构图如下:
应用N
应用二
应用一
应用N表现层
应用N业务逻辑
应用一API接口
应用NAPI接口
应用二API接口
应用二表现层
应用二业务逻辑
应用一表现层
应用一业务逻辑

优点:依赖解耦,理解清晰。

缺点:进程间调用可靠性降低,实现技术复杂。

  1. 面向服务的SOA架构:也是一种分布式架构。是不同业务建立不同的服务,服务之间的数据交互粗粒度可以通过服务接口分级,这样的松散耦合提高服务的可重用性,也让业务逻辑变得可组合,每个服务可以根据使用情况做出合理的分布式部署从而让服务变得规范,高性能、高可用。SOA主要分为两个角色:服务提供者(Provider)和服务消费者(Consumer)。

优点:

  • 把模块拆分,使用接口通信,降低了模块之间的耦合度。
  • 把项目拆分成若干个子项目,不同团队负责不同的子项目
  • 增加功能时只需要增加一个子项目,调用其他系统的接口即可。
  • 可以灵活的进行分布式部署。

缺点:系统之间的交互需要使用盐城通信接口开发增加工作量

  1. 微服务架构:从某种程度上来说是SOA架构的进一步发展,最早的概念是源于Martin Fowler的文章《Microservices》。是一种架构风格,简单来说就是:把一个大型复杂的业务系统,按照一定的规则拆分成多个项目独立的微服务,微服务之间是松耦合,通过各种远程协议进行同步/异步通信,每个微服务均可以独立部署、扩/缩容、升/降级。
Spring-Cloud Dubbo Motan MSEC 其他
功能 微服务完整方案 服务治理框架 服务治理框架 服务开发运营框架
通信方式 REST/http RPC协议 RPC/Hessian2 Protocol buffer grpc、thrift
服务注册/发现 Eureka(AP) ZK、Nacos ZK/Conusl 只有服务发现 Etcd
负载均衡 Ribbon 客户端负载 客户端负载 客户端负载 Ngnix+Lua
容错机制 6种 6种 2种 自动容错 Keepalivad、HeartBeat
熔断机制 Hystrix 提供过在保护
配置中心 Spring Cloud Config Nacos Apollo、Nacos
网关 Zuul,Gateway Kong、自研
服务监控 Hystrix+Turbine Dubbo+Monitor Monitor ELK
链路监控 Sleuth+Zipkin Pinpoint
多语言 Rest支持多语言 java Java Java、c++、PHP Java、PHP、Node.js
社区活跃 高(spring) 高(阿里) 一般 未知

spring-cloud的落地实现

组件 方案1 方案2 方案3
服务发现 Eureka Consul etcd、阿里Nacos
公用组件 服务见调用组件Feign、负载均衡组件Ribbon、熔断器Hytric 服务见调用组件Feign、负载均衡组件Ribbon、熔断器Hytric 服务见调用组件Feign、负载均衡组件Ribbon、熔断器Hytric
网关 性能低:Zuul。性能高:spring-cloud getaway 性能低:Zuul。性能高:spring-cloud getaway 自研网管中间件
配置中心 spring-cloud-config、携程阿波罗、阿里Nacos spring-cloud-config、携程阿波罗、阿里Nacos spring-cloud-config、携程阿波罗、阿里Nacos
全链路监控 zikpin(不推荐)、Pinpoint(不推荐)、Skywalking(推荐) zikpin(不推荐)、Pinpoint(不推荐)、Skywalking(推荐) zikpin(不推荐)、Pinpoint(不推荐)、Skywalking(推荐)

你可能感兴趣的