zoukankan      html  css  js  c++  java
  • SpringCloud-----(1)微服务基础概念

    1. 什么是微服务?

      微服务强调的是服务的大小,它专注于某一个点,也可以理解为一个模块,一个模块就干一这一件事情,职责单一。
      “微服务架构”一词目前在业界也可以说是烂熟于心了,但到底什么是微服务架构?它又解决了什么问题?

      微服务架构是一种架构模式,也可以说是一种架构风格,它提倡的是将一个单独的应用程序开发为一个独立的小服务,它可以运行在自己的独立的进程中,服务之间使用通信机制进行服务通信,通常是Http Api。语言太官方了?整个图意思一下:
    在这里插入图片描述
      使用微服务架构之前:整体应用程序将其所有功能整合到一个流程中,通过在多台服务器上复制整体来进行扩展。

      使用微服务架构之后:微服务架构将功能的每个元素置于单独的服务中,并通过跨服务器分布这些服务进行扩展,并根据需要进行复制(比如你的订单服务压力比较大,那就可以将订单服务多部署几台服务器分散压力。)

      使用微服务架构之后,我们可以很方便的对压力较大的服务进行扩展,而且当我们的修改了某个服务的代码之后,也只需要重新启动这一个服务而不会影响到其他的服务,说白了就是解耦合。订单服务就做订单相关业务,查询服务就做查询业务。可以理解为进程的概念。打开360安全管家,页面显示如下:
    在这里插入图片描述
    木马查杀就查杀木马就行了,系统修复就去做修复系统的事情,两个服务互不相关。木马查杀的代码有问题 了我们将这个服务停掉,但是系统修复功能依然正常使用。

      也正因为微服务架构的解耦性很高,各个单独的服务我们可以使用不同的语言进行开发(比如订单服务我们用C语言、商品上传我们用 Python),然后各个功能之间再使用轻量级的通信机制就行协调。

    2.微服务的有缺点?

    2.1优点:
    • 开发简单,一个服务可能就干一件事情
    • 服务之间高度解耦合
    • 各个独立的服务可以使用不同的语言进行开发
    • 服务可以由不同的开发团队进行开发,因为独立,所以简单。
    • 维护简单。
    • 开发简单,一个服务可能就干一件事情。
    2.2缺点:
    • 服务之间通信成本
    • 因为服务独立部署,运维人员压力增加。
    • 分布式系统复杂度提高:(作为一种分布式系统,微服务引入了复杂性和其他若干问题,比如说“网络延迟、容错性、消息序列化、不可靠的网络、异步、版本化、应用层中的负载变化等等”)。
    • 接口不匹配:(服务依赖于彼此间的接口进行通信。改变一个服务的接口会对其它服务造成影响,
      改动了契约一方的语法或是语义,那么全部其它服务都须要理解这个改变。)

    3.什么是SpringCloud?

      SpringCloud利用了SpringBoot的开发便利性,简化了我们项目中一些基础设施的开发。它为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,全局锁,竞选决策等等)。

      SpringCloud是微服务架构下的一站式解决方案(项目要解决某个问题的时候,不需要再去导入其他独立的技术,SpringCloud自身就有组件可以解决此问题。如:服务的注册我们不再需要去引入Zookeeper,SpringCloud的Eureka组件就可以实现此效果),是多个微服务架构技术的集合体。

    4.SpringCloud与SpringBoot的关系?

      SpringBoot专注于方便快捷的开发单体服务,SpringCloud关注于全局的服务治理框架:SpringCloud将SpringBoot开发的单体服务整合起来进行管理,为服务之间提供配置管理,服务发现,断路器,智能路由,微代理,控制总线,全局锁,竞选决策等服务。

      SpringBoot可以离开SpringCloud单独使用,但是SpringCloud离不开SpringBoot,SpringCloud依赖于SpringBoot。

    5.SpringCloud和Dubbo的区别?

      Dubbo和SpringCloud就如同是组装机原装机的区别一样,在项目中,如果选择Dubbo技术,则一般表现为Dubbo+的形式,Dubbo实现服务调用,Zookeeper实现服务注册,Nginx实现负载均衡……,由多个技术栈组合为一套完整的解决方案。但是SpringCloud里面的各个零件都是原装版,一个厂家生产的,并且是进行了多次稳定测试的。

      Dubbo是一款RPC框架,SpringCloud使用的是基于HttpRest通信方式。在分布式微服务架构中,Rest 通信方式比RPC更加灵活,服务调用方和提供方之间只依靠了一纸契约,没有代码上的强依赖。

    下一篇:SpringCloud----(2)Eureka Server(服务治理)

  • 相关阅读:
    JSOI2015 R3 退队滚粗了
    bzoj3774
    bzoj1426
    bzoj3294
    java 位向量
    java 移位操作
    java 枚举类型的使用
    mysql 修改 root 用户密码
    几种数据库连接池的比较
    linux python 安装 pip出现 No module named 'setuptools'
  • 原文地址:https://www.cnblogs.com/wgty/p/12810456.html
Copyright © 2011-2022 走看看