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

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

优点

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

缺点

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

1.4、集群:负载均衡

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

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

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

1.6、面向服务的SOA架构

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

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

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

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

优点

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

缺点

  • 系统之间需要远程通信,增加了开发的工作量 SpringCloud 学习(1) --- 微服务与 Spring Cloud

    1.7、微服务架构

    微服务架构是一种架构风格,对于大型复杂的业务系统,可以将业务功能拆分成多个相互独立的微服务,各个微服务之间是松耦合的,通过各种远程协议进行通信,各个微服务可,以及

    微服务技术选型对比

    Spring Cloud Dubbo Motan MSEC 其他
    功能 微服务完整方案 服务治理框架 服务治理框架 服务开发运营框架
    通信方式 REST / http RPC 协议 RPC / Hessian2 Protocol Buffers gRPC、thrift
    服务发现 / 注册 Eureka(AP) ZK、Nacos ZK / Consul 只有服务发现 Etcd
    负载均衡 Ribbon 客户端负载 客户端负载 客户端负载 Ngnix + Lua
    容错机制 6 种 6 种 2 种 自动容错 keepalived、heartbeat
    熔断机制 Hystrix 过载保护
    配置中心 Spring Cloud Config Nacos Apollo、Nacos
    网关 Zuul、Gateway Kong、自研
    服务监控 Hystrix + Turbine Dubbo + Monitor Monitor ELK
    链路监控 Sleuth + Zipkik Pinpoint
    多语言 REST 支持多语言 Java Java Java、C++、PHP Java、PHP、Node.js
    社区活跃度 高(Spring) 高(阿里) 一般 未知

    2、什么是微服务/h2>

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

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

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

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

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

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

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

    特征:

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

    3、Spring Cloud

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

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

    常见的中间件:

    、、、、、、、、等。

    3.2、什么是Spring Cloud

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

    Spring Cloud 像是一个中间件,基于 开发,提供一套完整的微服务解决方案。包括、、、、、、、等选型的中立的开源组件,可以随需扩展和替换组装。

    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:熔断器,与正主断了联系,使用备胎。

    SpringCloud 学习(1) --- 微服务与 Spring Cloud
    组件名称 所属项目 组件分类
    Eureka spring-cloud-netflix 注册中心
    Zuul spring-cloud-netflix 第一代网关
    Sidecar spring-cloud-netflix 多语言支持
    Ribbon spring-cloud-netflix 负载均衡
    Hystrix spring-cloud-netflix 熔断器
    Turbine spring-cloud-netflix 集群监控
    Feign spring-cloud-openfeign 声明式的 HTTP 客户端
    Consul spring-cloud-consul 注册中心
    Gateway spring-cloud-gateway 第二代网关
    Sleuth spring-cloud-sleuth 链路监控
    Config spring-cloud-config 配置中心
    Bus spring-cloud-bus 总线
    Pipeline spring-cloud-pipelines 部署管道
    Dataflow spring-cloud-dataflow 数据处理
    Stream spring-cloud-stream 消息驱动

    服务治理中间件

    服务治理中间件包含:、、、、等。 其中,服务路由包含:、、、、等。 负载均衡包含:支持根据目标状态和目标权重进行负载均衡。 自我保护包含:、、


    借鉴简书上的一位大神

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

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

    文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91337 人正在系统学习中

    来源:庭前云落

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年11月4日
下一篇 2019年11月4日

相关推荐