一、单体架构和微服务架构
1.什么是单体架构
一个归档包(如war包)包含了应用所有功能的应用程序。常言道:一个war包打天下。
2.单体架构的优缺点:
优点:简单,没有什么花哨的问题需要解决,部署非常简单。
缺点:
①系统各个功能耦合度高,不利于业务扩展(改一个点可能会影响到整个系统)。
②部署慢(功能多而复杂)
③扩展成本高,不能针对性的适配各个服务。比如有的服务模块是CPU密集型,对服务器的cpu要求更高,有的服务模块是IO密集型,对内存和磁盘要求更高。单体架构不能针对各个模块进行扩展,只能都选择。
2. 什么是微服务?
核心就是根据业务将单机应用拆分为各个服务,彻底解耦,每个服务都提供特定的功能,一个服务只做一件事情,每个服务都单独部署,它们可以拥有自己的数据库。
举例说明:例如传统的单机应用电商项目:订单、库存、物流、支付、积分等模块。我们可以将其拆分为订单服务、物流服务、支付服务、积分服务。不拆分的情况下,如果积分模块出现重大问题,内存溢出,会导致整个系统崩溃。而拆分之后,只有积分服务不可用,其他服务照常运行。
2.1 微服务的特点
(1)独立部署、灵活扩展
微服务是以每个独立组件(订单服务、物流服务等)为单位进行部署的。
(2)资源的有效隔离
每一个微服务都会有独立的数据源。例如,A服务想要读写B服务的数据库,必须要通过B服务对外暴露的接口完成,这样就有效的避免了服务之间争用数据库和缓存资源所带来的问题。
(3)组织团队架构的调整
不同于传统的水平团队组织架构:前端团队、后端团队、DAB团队、测试团队。微服务的组织团队架构更倾向于垂直架构,比如一个订单服务是由一个团队来负责,这个团队包括:前端、后端、DAB、测试。
2.2 什么是微服务架构?
微服务架构风格是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。 这些服务是围绕业务功能构建的,可以通过全自动部署机制独立部署。 这些服务的集中管理最少,可以用不同的编程语言编写,并使用不同的数据存储技术。SOA架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署。
微服务架构是一个架构风格,它提倡:
①将一个单一应用程序开发为一组小型服务.
②每个服务运行在自己的进程中
③服务之间通过轻量级的通信机制(http rest api)
④每个服务都能够独立的部署
⑤每个服务甚至可以拥有自己的数据库
微服务与微服务架构的是两个完全不同的概念。微服务强调的是服务的大小和对外提供的单一功能,而微服务架构是指把一个一个的微服务组合管理起来,对外提供一套完整的服务。
2.3 微服务的优缺点
优点:
①每个服务足够小,足够内聚,开发只需专注一个业务功能点。
②开发简单,一个服务只干一个事情。
③按需伸缩,服务松耦合,每个服务都能够开发部署
④前后端分离
⑤一个服务可用拥有自己的数据库,也可以多个服务连接同一个数据库。
缺点:
①增加了运维人员的工作量,以前只要部署一个war包,现在可能需要部署成百上千个war包(k8s+docker+jenkins )
②服务之间相互调用,增加通信成本
③数据一致性问题(分布式事务问题)
④性能监控等,问题定位
微服务的适用场景
合适
①大型复杂的项目
②快速迭代的项目
③并发高的项目
不合适
①业务稳定
②迭代周期长

微服务架构与单体架构的区别相关推荐

  1. 我们公司放弃了微服务,重回单体架构

    点击上方"中生代技术", 右上角选择"设为星标" 作者 | Ben Nadel 译者 | 张卫滨 策划 | 万佳 InVision 公司的技术架构经历了从微服务 ...

  2. mqtt发布json数据_微服务实战:从架构到发布(一)

    引言:"微服务"是当前软件架构领域非常热门的词汇,能找到很多关于微服务的定义.准则,以及如何从微服务中获益的文章,在企业的实践中去应用"微服务"的资源却很少.本 ...

  3. 单体 soa 微服务 区别_每日一读-从单体到微服务,这些年架构的演变

    写在前面的话 Stay Hungry Stay Foolish!!! 每天进步一点点!!! <每日一读>是博主每日学习的一篇文章所记录的笔记,大多数是提取文章中关键内容而成:文章类型不限, ...

  4. 微服务实战:从架构到发布(二)

    引言:上篇文章介绍了微服务和单体架构的区别.微服务的设计.消息.服务间通信.数据去中心化,本篇会继续深入微服务,介绍其它特性. 治理去中心化 通常"治理"的意思是构建方案,并且迫使 ...

  5. 云原生时代微服务的高可用架构设计

    简介: 在8月20日"阿里巴巴技术质量精品课"上,来自蚂蚁的经国分享了对云原生时代微服务的高可用架构设计的全面解析,为大家介绍了应用架构演进路径.云原生时代的技术福利.高可用架构的 ...

  6. 微服务——最热门的架构

    微服务--最热门的架构 在大型互联网应用中,如何更为合理的划分系统和团队边界.如果更加有效的组织系统开发过程.如何通过技术手段识别和消除开发过程中的浪费成为广大软件开发和技术管理人员所需要思考的命题. ...

  7. 【2017年第3期】交通大数据:一种基于微服务的敏捷处理架构设计

    杜圣东, 杨燕, 滕飞 西南交通大学信息科学与技术学院,四川 成都 610031 摘要:面对智慧交通广泛的大数据应用场景和技术需求,一般大数据系统难以适应多种处理情况并做出快速响应.针对这一问题,首次 ...

  8. c# 微服务学习_资深架构师学习笔记:什么是微服务?

    们先来看看为什么要考虑使用微服务. 构建单体应用 我们假设,您开始开发一个打车应用,打算与 Uber 和 Hailo 竞争.经过初步交流和需求收集,您开始手动或者使用类似 Rails.Spring B ...

  9. GitHub 前 CTO:全面微服务是最大的架构错误!网友:这不是刚改完吗...

    来源:InfoQ. 整理:褚杏娟 近日,GitHub 前 CTO Jason Warner 在推特上表示,"我确信过去十年中,最大的架构错误之一就是全面使用微服务."从单体应用到微 ...

最新文章

  1. 是时候重新定义安全了,阿里云肖力解读安全责任共担模型
  2. 无服务器计算将会取代容器?
  3. Python入门100题 | 第062题
  4. 区块链BaaS云服务(21)腾讯CCGP跨链平台“系统架构”
  5. CentOS crontab定时任务不执行的解决
  6. CodeForces - 1360H Binary Median(二分)
  7. Jupyter Lab的学习笔记
  8. Angular2 - Starter - NgModule
  9. 一次FCK拿bc全过程
  10. [沈航软工教学] 学生项目Coding地址汇总
  11. digester java_Java-Digester:提取节点名称
  12. websphere7 mysql_websphere7
  13. 手机迅雷下载的文件在哪里
  14. 几款常见开源php博客体验
  15. M1 pod install CocoaPod 报错解决办法
  16. 英雄联盟7月23日维修服务器,LOL7月23日更新维护结束时间 7月23日什么时候可以上线 LOL7月23日更新维护内容_蚕豆网新闻...
  17. Delphi 汉字转拼音
  18. TCP协议-TCP的拥塞控制
  19. Oracle 11G R2 RAC 启动报错:ORA-01078 ORA-01565 ORA-17503 ORA-12547 处理方法
  20. swisssql-sql server to oracle,Sql Server移植到Oracle之Migration Workbench

热门文章

  1. 指南针 android gps,北斗GPS指南针app
  2. 手机信号延迟测试软件,使用Fing在手机上诊断网络状况
  3. 原画 机器人总动员_《机器人瓦力》导演执导 科幻史诗巨制《火星上的约翰·卡特》首支震撼预告...
  4. ajax的get/post请求及其封装,以及ajaxHTTP状态码是啥子意思
  5. 互联网金融平台常见绑卡鉴权方式分析对比
  6. Indigenous students at U of T honoured for efforts in language revitalization, health equity
  7. FREERTOS必备知识-喂狗-死机
  8. 单片机电子时钟的设计(期末课程设计)
  9. 【QT】Qt Compiler Detection(编译)
  10. 实力赢得信任丨西安珠江新城业主喜迎公元物业