微服务 --> spring cloud与微服务概述

传统的单体应用

所谓的单体应用程序,通俗来说就是将所有的功能都全部堆积在一起。这个应用大部分是一个war包或者jar包。随着业务的发展,功能的增加,多年以后这个单体项目将变得越来越臃肿。

这样的单体应用在公司创建初期是比较好的一种方案,要快速增加新功能或部署发布都比较简单,随着时间的推移,危机慢慢就会显露出来。任何一个BUG都可能导致整个应用瘫痪,正所谓牵一发而动全身。

单体应用的改进

  • 拆分子系统

系统之间通过webservice或HTTP接口进行交互。

  • 集群部署

当单个节点的压力增大时,可以将节点集群部署,负载均衡

什么是微服务

使用微服务架构的优势和劣势

  1. 优势
  • 服务的独立部署:每个服务都是一个独立的项目,可以独立部署,不依赖于其他服务,耦合性低。
  • 服务的快速启动:拆分之后服务启动的速度必然要比没拆分前要快得多,因为依赖的库少了,代码量少了
  • 更加合适敏捷开发:敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法 进行。服务拆分可以快速发布新版本,修改哪个服务只需要发布对应的服务即可,不用整体重新发布。
  • 职责转移,有专门的团队负责专门的服务:业务发展迅速时,研发人眼也会越来越多,每个团队可以负责对应的业务栈,服务的拆分有利于团队之间的分工。
  • 服务可以动态按需扩容:当某个服务的访问量较大时,我们只需要将这个服务扩容
  • 代码的复用:每个服务都提供rest api,所有的 基础服务都必须抽出来,很多的底层实现都可以接口方式提供。
  1. 劣势

微服务其实是一把双刃剑,既然有利必然也有弊。

  • 分布式部署调用的复杂性高:单体应用的时候,所有模块之间的调用都是在本地进行的,通过http接口形式,会出现很多问题:网络问题、容错问题、调用关系等
  • 独立的数据库,分布式事务的挑战:每个微服务都有自己的数据库,这就是所谓的去中心化的数据管理。这样的模式有点在于可更加业务特点选择数据库。
  • 测试的难度提升:服务和服务之间通过接口来交互,当接口有改变的时候,对所有的调用方都是有影响的,所以自动化测试就很重要了。
  • 运维难度的提升

什么是spring cloud

spring cloud是一系列框架的有序集合。它利用spring boot的开发便捷性,巧妙地简化了分布式系统基础设施的开发,如服务注册、服务发现、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用spring boot的开发风格做到一键启动和部署。

通俗的讲:spring cloud就是用于构建微服务开发和治理的框架集合(并不是具体的框架)

spring cloud模块介绍

  • Eureka:服务注册中心,用于服务管理
  • Ribbon:基于客户端的负载均衡组件
  • Hystrix:容错框架,能够防止服务的雪崩效应
  • Feign:Web服务客户端,能够简化Http接口的调用
  • Zuul:API网关,提供路由转发、请求过滤等功能。
  • Config:分布式配置管理
  • Sleuth:服务跟踪
  • Stream:构建消息驱动的微服务应用程序的模块
  • Bus:消息代理的集群消息总线
原文地址:https://www.cnblogs.com/zhuxiang1633/p/14693427.html