单体架构的痛点

缺点一:项目过于臃肿当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,让开发者难以维护。

缺点二:资源无法隔离就像刚刚小灰的经历一样,整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。

缺点三:无法灵活扩展当系统的访问量越来越大的时候,单体系统固然可以进行水平扩展,部署在多台机器上组成集群:

但是这种扩展并非灵活的扩展。比如我们现在的性能瓶颈是支付模块,希望只针对支付模块做水平扩展,这一点在单体系统是做不到的。

什么是微服务?微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。

究竟什么是微服务呢?我们在此引用 ThoughtWorks 公司的首席科学家 Martin Fowler 的一段话:

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

谷歌翻译如下:

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

说了这么多概念,微服务有什么样的具体特点呢?

1.独立部署,灵活扩展传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立组件(例如用户服务,商品服务)为单位进行部署。

用一张经典的图来表现,就是下面这个样子:

图中左边是单体架构的集群,右边是微服务集群。

什么意思呢?比如根据每个服务的吞吐量不同,支付服务需要部署20台机器,用户服务需要部署30台机器,而商品服务只需要部署10台机器。这种灵活部署只有微服务架构才能实现。

而近几年流行的Docker,为微服务架构提供了有效的容器。

2.资源的有效隔离微服务设计的原则之一,就是每一个微服务拥有独立的数据源,假如微服务A想要读写微服务B的数据库,只能调用微服务B对外暴露的接口来完成。这样有效避免了服务之间争用数据库和缓存资源所带来的问题。

同时,由于每一个微服务实例在Docker容器上运行,实现了服务器资源(内存、CPU资源等)的有效隔离。

3.团队组织架构的调整微服务设计的思想也改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端有前端的团队,后端有后端的团队,DBA有DBA的团队,测试有测试的团队。

而微服务的设计思想对团队的划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。

当然,这种垂直划分只是一个理想的架构,实际在企业中并不会把团队组织架构拆分得这么绝对

微服务与面向服务架构SOA的区别

SOA是什么样子呢?可以是下面这样的Web Service:

也可以是下面这样的ESB企业服务总线:

总之,SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署

微服务架构的不足

单体架构的痛点

缺点一:项目过于臃肿当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,让开发者难以维护。

缺点二:资源无法隔离就像刚刚小灰的经历一样,整个单体系统的各个功能模块都依赖于同样的数据库、内存等资源,一旦某个功能模块对资源使用不当,整个系统都会被拖垮。

缺点三:无法灵活扩展当系统的访问量越来越大的时候,单体系统固然可以进行水平扩展,部署在多台机器上组成集群:

但是这种扩展并非灵活的扩展。比如我们现在的性能瓶颈是支付模块,希望只针对支付模块做水平扩展,这一点在单体系统是做不到的。

什么是微服务?微服务(Microservice Architecture)是近几年流行的一种架构思想,关于它的概念很难一言以蔽之。

究竟什么是微服务呢?我们在此引用 ThoughtWorks 公司的首席科学家 Martin Fowler 的一段话:

In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

谷歌翻译如下:

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

说了这么多概念,微服务有什么样的具体特点呢?

1.独立部署,灵活扩展传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立组件(例如用户服务,商品服务)为单位进行部署。

用一张经典的图来表现,就是下面这个样子:

图中左边是单体架构的集群,右边是微服务集群。

什么意思呢?比如根据每个服务的吞吐量不同,支付服务需要部署20台机器,用户服务需要部署30台机器,而商品服务只需要部署10台机器。这种灵活部署只有微服务架构才能实现。

而近几年流行的Docker,为微服务架构提供了有效的容器。

2.资源的有效隔离微服务设计的原则之一,就是每一个微服务拥有独立的数据源,假如微服务A想要读写微服务B的数据库,只能调用微服务B对外暴露的接口来完成。这样有效避免了服务之间争用数据库和缓存资源所带来的问题。

同时,由于每一个微服务实例在Docker容器上运行,实现了服务器资源(内存、CPU资源等)的有效隔离。

3.团队组织架构的调整微服务设计的思想也改变了原有的企业研发团队组织架构。传统的研发组织架构是水平架构,前端有前端的团队,后端有后端的团队,DBA有DBA的团队,测试有测试的团队。

而微服务的设计思想对团队的划分有着一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。

当然,这种垂直划分只是一个理想的架构,实际在企业中并不会把团队组织架构拆分得这么绝对

微服务与面向服务架构SOA的区别

SOA是什么样子呢?可以是下面这样的Web Service:

也可以是下面这样的ESB企业服务总线:

总之,SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署

微服务架构的不足

漫画:什么是微服务?相关推荐

  1. 【漫画,Java微服务实践百度网盘

    转载请声明出处! 什么是上下文切换? 其实在单个处理器的时期,操作系统就能处理多线程并发任务.处理器给每个线程分配 CPU 时间片(Time Slice),线程在分配获得的时间片内执行任务. CPU ...

  2. 漫画 | 只敢私下吐槽,不敢拿上台面,这才是微服务的灾难!

    公司的高层对这个通用语言用得很好 到了编程的阶段,需要转化成代码,要用英文来表达了. 从中文到英文的转换,往往丢失一部分业务信息,产生一部分信息噪音,或者发生概念上的偏移. 很快, 在不同的系统,甚至 ...

  3. 漫画:到底什么是微服务?

    本文经授权转载自公众号程序员小灰 (ID:chengxuyuanxiaohui) 单体架构的痛点 缺点一:项目过于臃肿 当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,让开发者难以 ...

  4. 什么是微服务_漫画:到底什么是微服务?

    本文经授权转载自公众号程序员小灰 (ID:chengxuyuanxiaohui) 单体架构的痛点 缺点一:项目过于臃肿 当大大小小的功能模块都集中在同一项目的时候,整个项目必然会变得臃肿,让开发者难以 ...

  5. 微服务架构之「 API网关 」

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 在微服务架构的系列文章中,前面已经通过文章<架构设计之「服务注册 」>介绍过了服务注 ...

  6. 从微服务架构的现状和未来看学习路径

    在当今的互联网系统架构中,微服务已然成为整个服务端系统架构的标配,但不同的公司由于发展阶段.规模及历史现状的不同,所以在具体的实现路径及形态上一般会有所差别. 一般来说,对于新生的创业公司来说,由于没 ...

  7. 又肝了下微服务 API 网关“金刚”,也是蛮香的~

    " 摘要: 原创出处 http://www.iocoder.cn/Kong/install/ 「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. 快速安装 3. Kong 控制台 4. ...

  8. 如何理解Eating这个词?云原生与微服务专场介绍

    点击上方"开源社"关注我们 | 作者:开源社 | 编辑:李明康 | 责编:袁睿斌 有一幅曾经传播很广的漫画,大意是:软件吞噬世界,开源吞噬软件.后来这个漫画又被人加了两条鱼:云计算 ...

  9. 微服务精华问答 | 为什么需要微服务?

    戳蓝字"CSDN云计算"关注我们哦! 过去几年来,"微服务架构"这个术语出现了,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式.尽管这种架构风格 ...

最新文章

  1. ORA-01111,ORA-01110,ORA-01157报错处理
  2. c++中内敛函数_C++ 内联函数 | 菜鸟教程
  3. python股票数据预处理_Python股票处理之六_数据预处理A
  4. AT4505-[AGC029F]Construction of a tree【构造题,hall定理,网络流】
  5. 计算机网络65535,计算机网络1
  6. matlab y轴旋转面,Mayavi:绕y轴旋转
  7. Java视频教程免费分享(网盘直接取)
  8. 开源 syslog 日志系统 scribe
  9. wangEditor光标乱跳问题
  10. Petsc求解非线性方程,SNES对象的介绍-1
  11. 股票-每日复盘-5-24
  12. Windows 7 Build 7068 下载泄露
  13. 寒假还在纠结考研还是就业,听听研究生毕业的上班狗怎么说?
  14. 深入了解OpenOffice.org(三)-- OpenOffice.org中的XML应用
  15. 配置路由器接口使用PPP协议封装
  16. 最新《微专业Android安卓开发工程师课程》
  17. who moved my cheese 读后感
  18. JQ JS分页序号连续
  19. 优秀是一种习惯,习惯却是来自于思维的境界
  20. 2022年威士忌行业发展趋势:威士忌单价在稳步提升

热门文章

  1. Python中使用中文
  2. 蓝桥杯-算法提高-凶手 断案
  3. AntiSpy:一款功能强大的反病毒反Rootkit免费工具套件
  4. 用navicat连接数据库报错:1130-host ... is not allowed to connect to this MySql server如何处理
  5. es6笔记 day3---Promise
  6. OC 应用跳转QQ私聊界面或者申请加群
  7. 【20171005】Luogu P1164 小A点菜
  8. mysql计算用户平均下单周期
  9. Hibernate的核心API
  10. 【Qt开发】Qt标准对话框之QMessageBox