首页 > 编程语言 > 详细

spring cloud与微服务概述

时间:2021-04-23 16:58:21      阅读:33      评论:0      收藏:0      [点我收藏+]

传统的单体应用

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

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

单体应用的改进

  • 拆分子系统

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

  • 集群部署

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

什么是微服务

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

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

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

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

spring cloud与微服务概述

原文:https://www.cnblogs.com/zhuxiang1633/p/14693427.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!