一、前言。

随着微服务技术的兴起,越来越多的项目都在使用 微服务架构,学习的趋势已经刻不容缓,这几天特意学习了一下,在此记录。

特别感谢 方志朋 老师的博客。https://blog.csdn.net/forezp/article/details/70148833

二、什么是微服务?

讲到微服务,只管概念 轻量化、零配置、开箱即用,对微服务了解的并不多,所以要深入一下。

微服务的概念源于 2014 年 3 月 Martin Fowler 所写的一篇文章“Microservices”。

微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP的 RESTful API)。每个服务都围绕着具体业务 进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。

微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力

简而言之,微服务架构是一种将单应用程序作为一套小型服务开发的方法,每种应用程序都在其自己的进程中运行,并与轻量级机制(通常是HTTP资源的API)进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制进行独立部署。这些服务的集中化管理已经是最少的,它们可以用不同的编程语言编写,并使用不同的数据存储技术。

三、微服务架构优势?

  • 复杂度可控:在将应用分解的同时,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率
  • 独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期
  • 技术选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。
  • 容错:当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用。在微服务架构下,故障会被隔离在单个服务中。若设计良好,其他服务可通过重试、平稳退化等机制实现应用层面的容错。
  • 扩展:单块架构应用也可以实现横向扩展,就是将整个应用完整的复制到不同的节点。当应用的不同组件在扩展需求上存在差异时,微服务架构便体现出其灵活性,因为每个服务可以根据实际需求独立进行扩展。

四、SpringCloud和SpringBoot的关系?

SpringBoot:专注于快速方便的开发单个个体微服务(关注微观);
SpringCloud:关注全局的微服务协调治理框架,将SpringBoot开发的一个个单体微服务组合并管理起来(关注宏观);

总结:

SpringCloud 和 Dubbo 很是类似,经常拿来比较。参考:https://blog.csdn.net/u010664947/article/details/80007767

    SpringBoot可以离开SpringCloud独立使用,但是SpringCloud不可以离开SpringBoot,属于依赖关系

五、SpringCloud 分布式开发五大神兽。

  • 服务发现——Netflix Eureka
  • 客服端负载均衡——Netflix Ribbon
  • 断路器——Netflix Hystrix
  • 服务网关——Netflix Zuul
  • 分布式配置——Spring Cloud Config

具体讲解见:https://www.cnblogs.com/ilinuxer/p/6580998.html

六、个人理解。

Eureka 是分为 server 和 service , server 通常只有一个(多个可以提高高可用性及容错),service 有一般多个。service 通常都是单个 springboot 程序,启动时向 server 注册自己,这样,在 RestTemplate 或者 feign 调用时,不需要根据 ip 及 端口 去查找,只需要知道你这个 springboot 程序的 applic.name 即可(当ip地址多的时候,每启动一下就配置一次会很麻烦)。

Ribbon 一般结合 RestTemplate 去使用,RestTemplate 默认实现了 负载均衡,轮询机制,及多个相同 application.name 的程序,不同ip或端口,Ribbon 不需要知道你的ip和端口,只需要知道你在 Eureka server 注册的名字,便会 不断对具有相同名字的 程序进行轮询。

Hystrix 断路器,一般 Ribbon 去访问某个 程序应用时,这个程序挂掉了,此时如果没任何措施,可能引起连锁反应,最后导致不可想象的后果,而 断路器 的作用就是,当这个程序不可用时,及时切断之间联系,当程序恢复时,在保持关联。

Zuul 网关,他的作用类似 nginx 的反向代理,除此之外,还可以配置权限验证等。当后台有多个应用时,app或者前端程序想访问后端接口时,统一格式,否则程序一多便会出现混乱。

Spring Cloud Config 分布式配置,他的作用见名知意,通过 连接 git 或 mvn 等,实现统一的 文件配置,结合 spring cloud bus 可以实现动态的属性配置。


Spring Cloud 架构:

https://www.cnblogs.com/aspirant/p/8821636.html

史上最简单的 SpringCloud 教程 | 终章:

https://blog.csdn.net/qq_41497111/article/details/91047068

SpringCloud 教程(一)| 微服务及五大神兽组件 --- 微服务架构相关推荐

  1. SpringCloud五大神兽之Eureka服务注册(三)——Eureka的自我保护

    一.ACID与CAP 传统ACID: A:atomicity   原子性 C:consistency    一致性 I:isolation    独立性 D:durability    持久性 目前流 ...

  2. SpringCloud五大神兽之Eureka服务注册(一)

    一.什么是Eureka? 官方翻译:Eureka是一个基于Rest的服务,用于定位服务,以实现云端中间层服务发现和故障转移.即--Eureka主管服务的注册与发现. 在微服务架构中,只需要使用服务的标 ...

  3. 4A服务按库拆分|组件、服务|合并打包、独立打包(进行中)

    文章目录 1.说明: 2.总结(收获和感受) 3.实现 4A-server-api:定义接口,注入时通过该api实现注入:共用的常量.异常.工具类 4A-element-server服务(也可以作为组 ...

  4. SpringCloud微服务:基于Nacos组件,整合Dubbo框架

    源码地址:GitHub·点这里 || GitEE·点这里 一.基础组件简介 1.Dubbo框架 Dubbo服务化治理的核心框架,之前几年在国内被广泛使用,后续由于微服务的架构的崛起,更多的公司转向微服 ...

  5. SpringCloud学习笔记3:Spring Cloud Netflix 组件(五大神兽)

    一.Spring Cloud Netflix有哪些组件? eureka (提供服务注册与发现功能) ribbon(提供负载均衡功能) Feign(整合了ribbon和Hystrix,具有负载均衡和熔断 ...

  6. springcloud五大神兽之Eureka介绍

    一.springcloud简介 1.0 什么是微服务? ① 业务角度 从业务角度分析,就是将整体项目(传统的一站式应用)按照业务拆分,将每个业务拆分为一个个独立的服务,彻底解除业务模块之间的耦合,每个 ...

  7. 业余草 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xmt1139057136/article/details/81411887 一.spring clo ...

  8. 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)

    最新Finchley版本请访问: https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/ 或者 http://blog.csd ...

  9. 最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现Eureka(Finchley版本)

    一.spring cloud简介 鉴于<史上最简单的Spring Cloud教程>很受读者欢迎,再次我特意升级了一下版本,目前支持的版本为Spring Boot版本2.0.3.RELEAS ...

最新文章

  1. XLNet:公平PK,BERT你已经被超过!
  2. (28)SpringBoot启动时的Banner设置【从零开始学Spring Boot】
  3. hive 集成oracle,hive集成kerberos问题1
  4. springcloud阿里巴巴五大组件_如何无缝迁移 SpringCloud/Dubbo 应用到 Serverless 架构
  5. [Robot Framework] 怎么做数学运算?
  6. qt5中服务器文件传输,POST在Qt5中发送JSON文件的请求
  7. python安装pip_解决Python安装下载及Python环境的配置(pip,flake8,yapf)
  8. 联合索引会创建几个索引_联合索引在B+树上的存储结构及数据查找方式
  9. 蓝桥杯2020年第十一届C/C++省赛B组第二题-既约分数
  10. 2019PMP项目管理考试报名时间取证流程-真题模拟题
  11. 南航理论计算机科学答案,专业认证理念下的计算机专业本科生培养管理模式研究——以南航计算机科学与技术专业为例...
  12. 精选150道iOS面试题
  13. iOS集成 Paypal 贝宝支付
  14. 四叶草python_标签:python - 四叶草
  15. 网络编程 3 tcp通信
  16. 中国十大电子商务网站排名揭晓
  17. Django - 应用及分布式路由
  18. m4a怎么转换成mp3格式?
  19. 最实用的网页设计素材打包下载[15G]
  20. mysql 表改名_MySQL库改名、表改名

热门文章

  1. 丘成桐大学生数学竞赛2014年分析与方程个人赛试题第一题另解
  2. 使用NVivo研究时,不得不注意的几点!
  3. 2021年吴文俊人工智能科学技术奖公布 华为云田奇获杰出贡献奖
  4. 在Ubuntu中运行.exe程序
  5. 多边形分解成三角形算法, 耳切法
  6. 三七互娱 2021秋招 游戏测试
  7. python简单绘图
  8. 如何运用计算机辅助英语教学,谈英语计算机辅助教学 (中学英语教学论文)
  9. linux shell awk 语法
  10. IDEA常用快捷键(Windows)