戳蓝字“CSDN云计算”关注我们哦!

作者:小灰

来源:程序员小灰

单体架构的痛点

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

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

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

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

什么是微服务?微服务(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架构强调的是异构系统之间的通信和解耦合,而微服务架构强调的是系统按业务边界做细粒度的拆分和部署

微服务架构的不足

—————END—————

1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

2.征稿:

投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。

推荐阅读

  • 官宣!张小龙史上最长演讲 4小时3万字完整版回应微信的一切

  • Spark+Alluxio性能调优十大技巧

  • 有问有答 | 容器精华问答,如何玩转容器服务?

  • Java 12 要来了!

  • “微信之父”张小龙:我没去过龙泉寺!

  • 代码“大换血”,以太坊能耗将减少99%背后的故事

  • 从云计算到AI:NetApp的数据网络转型之道

点击“阅读原文”,打开 CSDN App 阅读更贴心!

喜欢就点击“好看”吧!

云漫圈 | 什么是微服务?相关推荐

  1. 一键部署dns服务_OpenShift : 通往云原生、DevOps、微服务和Serverless的大门

    新书速递 查尔斯·狄更斯的<双城记>中有句耳熟能详的名言:"这是一个最好的时代,也是一个最坏的时代."作为技术从业者,在这个数字化浪潮和技术变革接连发生的时代,我对这句 ...

  2. 腾讯开源业界首个云原生标准的一站式微服务管理框架Femas

    作者 | Femas开源技术团队 责编 | 梦依丹 企业数字化向云原生演进过程面临诸多痛点,微服务框架不统一.协议多样化.语言异构,纷繁复杂的微服务技术栈,基础组件之间像一座座孤岛,各个基础组件的控制 ...

  3. 云原生架构下的微服务选型和演进

    作者:彦林 本文整理自阿里云智能高级技术专家彦林的线上直播分享<云原生微服务最佳实践>.视频回放地址:https://yqh.aliyun.com/live/detail/28454 随着 ...

  4. 云原生架构重要组成部分之微服务

    前言 近几年来,云计算与微服务架构非常火,运用广泛.各大厂商公司都运用了该技术架构,随着技术与理念的升级迭代,云原生概念应世而起,现在火的一塌糊涂.做为新时代的程序员,我们要抓住云原生的浪潮. 这篇文 ...

  5. 关于华为私有云部署若依springcloud微服务项目改造及部署

    关于华为私有云部署若依springcloud微服务项目改造及部署 1.项目介绍 ​ 当前微服务项目主流的注册中心为阿里巴巴的nacos,但介于甲方要求使用华为的注册中心,所以在接下来讲解项目改造: 2 ...

  6. 云原生除了K8S、微服务,还有...?

    来源 | 无敌码农 责编 | 寇雪芹 头图 | 下载于视觉中国 云原生(Cloud Native)是最近技术圈一个比较火的名词,相信大家或多或少都听说过.不过对于大多数普通研发朋友来说,"云 ...

  7. #华为云·寻找黑马程序员#微服务-你真的懂 Yaml 吗?

    在Java 的世界里,配置的事情都交给了 Properties,要追溯起来这个模块还是从古老的JDK1.0 就开始了的. "天哪,这可是20年前的东西了,我居然还在用 Properties. ...

  8. re.containerbase.startinternal 子容器启动失败_微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)...

    走过路过不要错过 点击蓝字关注我们 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件 ...

  9. 【云原生】docker+k8微服务容器化实战

    博主昵称:跳楼梯企鹅 博主主页面链接:博主主页传送门 博主专栏页面连接:专栏传送门--网路安全技术 创作初心:本博客的初心为与技术朋友们相互交流,每个人的技术都存在短板,博主也是一样,虚心求教,希望各 ...

最新文章

  1. WCF常见问题之端口共享
  2. WriteStrToReg() ReadStrFormReg()
  3. 26计算限制的异步操作01-CLR
  4. jpa 分页 排序 过滤_使用JPA标准@ViewScoped通过分页,过滤和排序进行Primefaces DataTable延迟加载...
  5. 前端学习(2464):vue中 slot
  6. python搭建微信小程序卖货要收费用吗_个人的微信小程序做店铺收费吗?要收多少...
  7. 酒店预订、酒店检索、酒店详情、房间预订、订单管理、会员、优惠券、客房预订、高保真原型、酒店app、需求清单、组件规范、架构图、订单通知、服务通知、收藏、客服、搜索、导航、评价、支付、充值、登录、浏览
  8. 树莓派4bwlan驱动_树莓派4到手,你了解它所使用的新版Debian系统吗?
  9. 【爬虫剑谱】三卷3章 拾遗篇-有关于bs4库中的BeautifulSoup模块使用小结
  10. Pico Neo3 4VR一体机破解版游戏资源合集安装包下载及安装教程分享
  11. PxCook安装文件有问题处理办法
  12. 期货日内交易如何判断方向
  13. IOS 使用自签名证书开发HTTPS文件传输
  14. python和工程造价_不会Python的将慢慢被淘汰!
  15. 阿里云免费服务器测试题答案
  16. 友盟受访页面_调整我们如何询问受访者的性别
  17. 人力资源数据分析师前景_偏人力的数据分析师怎么样?
  18. CAD闪退的解决方法
  19. 成功编译和运行roslaunch qbo_webi qbo_webi.launch(解决qbo_object_recognition之后的其他问题)
  20. 5G无人机,到底有什么特别?

热门文章

  1. linux 文件的组织,Linux文件组织和目录结构
  2. 数学三大核心领域概述:代数、几何、分析
  3. 如何优雅地从四个方面加深对深度学习的理解
  4. 系统调用和库函数的区别
  5. Spark 调用 hive使用动态分区插入数据
  6. Linux 、shell 时间函数 - 获取七天前所在周
  7. Android项目架构设计深入浅出
  8. 彻底弄懂为什么不能把栈上分配的数组(字符串)作为返回值
  9. 解读NoSQL最新现状和趋势:云NoSQL数据库将成重要增长引擎
  10. K8S从懵圈到熟练 - 我们为什么会删除不了集群的命名空间?