zoukankan      html  css  js  c++  java
  • 微服务 --> 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:消息代理的集群消息总线
  • 相关阅读:
    c# 构架WPF 纸牌游戏(斗地主2)
    超级灰色按钮克星更新v1.3.1112.40
    早期绑定、动态绑定、后期绑定
    反射、反射加壳、反射脱壳、反射注册机(上)
    c# 构架WPF 纸牌游戏(斗地主4)
    Google首页吃豆游戏完整源码下载,以及声音问题的解决
    c# 构架WPF 纸牌游戏(斗地主1)
    c# 构架WPF 纸牌游戏(斗地主3)
    反射、反射加壳、反射脱壳、反射注册机(下)
    未能加载文件或程序集一例
  • 原文地址:https://www.cnblogs.com/zhuxiang1633/p/14693427.html
Copyright © 2011-2022 走看看