原文链接:Floyd的个人博客
- 单体结构(耦合度较高,不易维护)
- 提供数据(数据部分)
- 展示数据(视图部分)
- 缺点:随着单体应用规模和复杂性的增长,当个别团队做出一点变动,整个应用程序必须被重新构建、测试、部署,增加了各个团队之间交流和协调的成本。
** 2.分布式(各个微服务之间互不干扰)**
注册中心+多个微服务
3.集群(不同端口提供相同的微服务)
例如上图中数据微服务可以由8001和8002两个端口提供
** 4.服务注册和发现(Eureka)**[juˈriːkə]
** 5.断路器(Hystrix)熔断机制**
数据微服务集群都不能使用,视图微服务垓如何处理
- 当被访问的微服务无法使用的时候,当前服务能够感知这个现象,并且提供一个备用的方案出来
- 通过断路器监控可视化掌握微服务运行状态
** 6.职能路由(Zuul)API网关**
在提供服务时不暴露微服务名称
**微服务运行在不同的端口上,访问数据微服务和视微服务集群时无需去记住那么多ip地址和端口号了
** 7.客户端负载平衡(Ribbon)**
使用 restTemplate来做负载均衡
Fegin:对Ribbon的封装,用注释的方法使用更方便
**消息总线:RabbitMQ扩散消息(**AMQP 协议)
概述:SpringCloud由多个SpringBoot项目组成,而这些SpringBoot有着一个共同的目的,所以在整个项目中使用maven父子-聚合方式来更好地组织这些springboot项目
微服务其实就是一个小的,松耦合的分布式服务,可以将一个大型的应用程序分解成一个个功能组件,并且它们之间是完全独立的。而SpringCloud就是一个整合了集中云管理微服务框架的共同的框架。
**
eureka-server: 8761
product-data-service: 8001,8002,8003
product-view-service-ribbon: 8010
product-view-service-feign: 8012, 8013, 8014
hystrix-dashboard: 8020
turbine: 8021
config-server: 8030
zuul: 8040