前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微服务的一些概念

微服务的一些概念

原创
作者头像
Tencent JCoder
修改2018-07-21 18:36:26
3950
修改2018-07-21 18:36:26
举报
文章被收录于专栏:我的技术专栏我的技术专栏

单体架构(Monolithic Architecture)

传统的单体架构,把所有的功能都集中在一起,打包为一个war包,或者是可执行程序。部署的时候,需要部署一个完整的应用,升级时,也需要替换整个war包或是可执行程序,升级时,要中断正在提供的服务。单片架构的优势在于开发测试都比较容易,只需改动一个工程、启动一个应用。部署的时候,只需要复制应用及配置即可。当网站的流量很小时,我们只需要一个应用,并把所有的功能都部署在一起就可以了,以减少部署节点和成本。

但是随着应用规模越来越大,单体结构会面临问题:

  • 庞大的代码堆积在一个应用中,难以理解与维护
  • 部分修改,也需要构建和部署整个程序
  • 部署复杂,风险大,耗时长
  • 无法持续提供服务
  • 无法支持频繁改动的开发过程
  • 改动可能影响到本来可稳定运行的代码,在测试上,也需要整站测试,周期长
  • 伸缩性差

微服务

微服务是指开发一个单一的、小型的,但是有业务功能的服务。将原先的一整个的应用程序,拆分成多个可以独立开发测试部署的小服务,每个服务,都有自己的处理和轻量通信流程,可以部署在单个或者多个服务器上。微服务可以拥有自己的存储层,包括数据库或内存缓存。微服务是一种松耦合的、有明显责任边界的服务架构。也就是说,一个微服务的修改,不应该引起另一个微服务的同步修改,如果一个的改变会影响另外一个(应该失败隔离),那么就不适合做拆分。有了微服务,可以进行产品的快速迭代开发,并保证已有服务持续稳定提供服务。

微服务的缺点在于,服务分布式部署带来的分布式系统复杂性,需要有分布式事务的支持,服务之间依赖关系复杂,更新的时候需要谨慎处理。对服务划分的策略也需要谨慎,粒度太大,与单体甲架构有同样的缺点;粒度太小,则增大了系统的复杂性,用户的请求可能需要多个微服务跳转处理才能够返回,划分不合理了,整个系统也很难理解。

与SOA的区别在哪?

面向服务架构(SOA)是一种软件架构模式,一些应用程序组件,通过网络通信协议向其他组件提供服务,这些服务之间的通信,可以是简单的数据传递,也可以是两个或多个彼此需要互相协调的服务之间的互连。在服务中,可以实现纯粹的业务功能,例如购物车、收藏列表等。也可以是供其他服务调用的公共服务,例如登录鉴权服务。这些服务组合在一起,可以实现一个需求。

微服务与SOA是一脉相承的,区别主要在于规模与范围。微服务的核心思想,是对应用做有效拆分,以实现敏捷开发与部署,SOA包含的意义可能更广泛、不准确一些。

从实现方式上来说,微服务与SOA都是语言无关,协议跨平台的。微服务框架能够带来更大的敏捷性,构建更加轻量级、高效率的开发。而SOA更适合大型企业的应用集成。

从服务粒度上来说,微服务提倡服务的细粒度,每个操作甚至是方法都是独立开发的服务,足够小到不能再拆分。SOA没有这么极致的要求。

从部署方式上来说,微服务利用Docker技术,不依赖任何服务器和数据模型,是一个全栈应用,可以通过自动化方式独立部署,每个服务运行在自己的进程中。

参考

  • 《可伸缩服务架构 框架与中间件》
  • SOA和微服务架构的区别? - 徐兵元的回答 - 知乎

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单体架构(Monolithic Architecture)
  • 微服务
  • 与SOA的区别在哪?
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com