什么是微服务架构

简而言之,微服务架构风格就是将单一应用的开发分为多个小的服务,每个小的服务在自己的进程中运行并使用轻量级机制进行通信(通常是一个HTTP API源),这些服务围绕业务性能进行构建,并且通过完全自动化的部署机制独立的部署。这些只需要最低限度的集中管理的服务,可以使用不同的编程语言编写,以及使用不同的数据存储技术。---- Martin Fowler的博客

( 单体架构 )

( 微服务架构 )

微服务架构优点

  • 解决了代码臃肿的复杂问题。它把可能会变得庞大的单体应用程序分解成一套服务。虽然功能数量不变,但是应用程序已经被分解成可管理的块或者服务,个体服务能被更快地开发,并更容易理解与维护。

  • 分割明确,使得保持团队之间的界限变得容易。微服务架构使整个系统的分工更加明确,责任更加清晰,每个人专心负责为其他人提供更好的服务。在单体应用的时代,公共的业务功能经常没有明确的归属。最后要么各做各的,每个人都重新实现了一遍;要么是随机一个人做到他负责的应用里面。

  • 服务可以独立部署。如果你的应用由单个进程中的多个库组成,则对单个组件的任何更改都将导致不得不重新部署整个应用。但是,如果将应用分解为多个服务,你可以期望单个服务的更改只需要重新部署该单个服务即可。

微服务架构缺点

  • 微服务架构整个应用分散成多个服务,定位故障点非常困难。

  • 稳定性下降。服务数量变多导致其中一个服务出现故障的概率增大,并且一个服务故障可能导致整个系统挂掉。事实上,在大访问量的生产场景下,故障总是会出现的。

  • 服务数量非常多,部署、管理的工作量很大。

  • 服务拆分后,几乎所有功能都会涉及多个服务。原本单个程序的测试变为服务间调用的测试。测试变得更加复杂。

微服务架构四大问题

  1. 客户端如何访问这么多的服务器

    通过API网关

  2. 服务与服务之间如何通信

    同步通信-HTTP/RPC

    异步通信-消息队列 kafka RabbitMQ RocketMQ

  3. 这么多服务,如何管理

    服务治理

    服务注册与发现

    • 基于客户端的服务注册与发现 Apache Zookeeper

    • 基于服务端的服务注册与发现 Netflix Eureka

  4. 服务挂了,怎么办

    • 重试机制

    • 服务熔断

    • 服务降级

    • 服务限流

我的个人博客站

最新文章

  1. 《月之猎人 (Moon Hunters)》主角设计
  2. 关于iOS和android自定义包的名字
  3. python之路-Day4
  4. day 2 常用快捷键
  5. python 循环语句的else语句用法,当循环条件变为假,切不是通过breakbreak终止的时候,就会执行这个else语句。
  6. C# 与 Microsoft Expression Encoder实现屏幕录制
  7. .NET Async/Await 最佳实践
  8. [2-sat]HDOJ3622 Bomb Game
  9. 初学XPath,其实很简单
  10. Linux内核:关于中断你须要知道的
  11. springMVC -- 整合UEditor(富文本编辑器)
  12. HTML&CSS基础学习笔记—创建列表
  13. c# post方式发送请求
  14. 【Samza系列】实时计算Samza中文教程(二)——概念
  15. 51nod 1244 莫比乌斯函数之和(杜教筛)
  16. 私有析构函数 Android 代码分析
  17. 32位汇编第二讲,编写窗口程序,加载资源,响应消息,以及调用C库函数
  18. BZOJ 4078: [Wf2014]Metal Processing Plant [放弃了]
  19. EFLinq查询
  20. jquery.jtable的事件

热门文章

  1. day01,了解gcc
  2. Leetcode802-找到最终的安全状态(Python3)
  3. 微信小程序之base64图片如何预览与一键保存到本地相册?
  4. Python之疑难杂症包安装
  5. 跑Linux内存占用率的shell脚本
  6. Java中常用的七个阻塞队列第二篇DelayQueue源码介绍
  7. selenium 获取页面<input>标签的个数和各个属性的值
  8. python 工具链 包管理工具 pip
  9. Mysql中的一些类型
  10. TokenMismatchException Laravel