关于 分布式和微服务 的一些总结
Posted 山河已无恙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 分布式和微服务 的一些总结相关的知识,希望对你有一定的参考价值。
写在前面
- 一直对微服务和分布式这两个概念模凌两可,不是太清晰,而且接触的项目也没这么大体量,没有用到过,所以蹭现在有时间总结一下,总结很大部分来源于
《从Paxos到Zookper分布式一致性原理与实践》
和《微服务架构设计模式
》这两本书里。 - 嗯,关于
分布式系统
和微服务架构
的一些拙见
,因为大家一直放到一起讲,所以总结一波。 - 博文
理解有所欠缺
的请小伙伴留言,多多指教。
拿着爸妈提供的物质,见识他们没有见识过的世面,体验他们没有体验过的人生,到头来,却嫌弃他们如此笨拙。
分布式系统
个人觉得分布式系统
面向的是Dev
,更多的是考虑系统性能和部署环境
之间的问题,通过分布式解决在没有大型主机的部署环境
情况下,系统性能的高可用和吞吐量
,是个一个很早就提出来的一个概念,是由集中式系统
过渡来的,随着计算机系统向网络化
和微型化
的发展日趋明显,同时业务的发展
,传统的集中式
处理模式越来越不能适应人们的需求,学习成本高,大型主机贵、容错性差,扩容困难。
为了解决业务快速发展给IT系统带来的巨大挑战,从2009年开始,阿里集团启动了去IOE计划,其电商系统开始正式迈入分布式系统时代
。
在《分布式系统概念与设计》
生一书中,对分布式系统
做了如下定义:
分布式系统
是一个硬件或软件组件
分布在不同的网络计算机
上,彼此之间仅仅
通过消息传递
进行通信和协调
的系统。 (硬件或软件组件,个人理解 ,硬件组件分布我们可以结合HarmonyOS
理解,音画同步,应用跨设备流转,软总线等硬件抽象的分布式,或者可以结合RAID(独立冗余磁盘阵列)理解,可以理解为以机器为粒度的磁盘阵列(实际是不存在的),软件组件分布这里结合我们常说的微服务分布式部署,类比java Web分布式系统。)
微服务架构
个人觉得微服务
架构更多的是面向ops
,更多的是考虑编码和项目业务之间
的问题,根据功能
把应用拆分为服务
。解决的是开发问题和应用复杂性
,是在对于业务的快速发展中单体应用
不能满足需要的时候,提出来的一个概念,《微服务架构设计模式》
一书中对微服务架构做如下定义:
把应用程序功能性分解
为一组服务
的架构风格。(很直白的一句话,不需要多解释,对于大型系统而言,模块化是必不可少的,相信小伙伴也做过类似的项目,微服务架可以看做是模块化的一种形式
)
从应用程序的扩展角度考虑
微服务
和分布式
都是对大型应用程序的扩展
,只是扩展方向
不同:
- 分布式系统更多是偏
水平扩展
,在dev方面的解决办法,利用部署系统环境的空间分布性
,比如SOA架构中利用分布式集成大型、复杂的单体应用程序;比如对实例进行克隆
,以副本
的形式对应用的数据和服务提供一种冗余方式(数据副本和服务副本),从而对外提供高可用,高并发的服务
。分布式需要解决分布式数据一致性
以及分布式环境通信异常
、网络分区
等问题。比如通过Zookeeper
解决分布式数据一致性的问题。分布式系统可以理解为以解决硬件层面的压力从而对应用进行扩展。 - 微服务架构更多的是
垂直方向
的扩展,在ops方面解决问题,利用应用程序的功能性分解,,把应用拆分为一组服务
,每个服务负责特定的功能。每个服务都相对较小并容易维护
,使大型的复杂应用程序可以持续交付和持续部署
。服务可以独立部署
、可以独立扩展
。同时微服务架构可以实现团队的自治
。更容易实验和采纳新的技
术。更好的容错性
。即服务之间松耦合
,但是单个服务又是高内聚
的。微服务架构可以理解为解决软件层面的压力对应用进行扩展。
关于微服务架构和分布式系统之间的关系
个人认为,不属于包含关系
,都是是对于应用扩展
的不同解决办法。一般情况下,微服务架构的应用一般为分布式系统。但分布式系统不一定是微服务架构
。
嗯,时间原因,先写这么多,之后会查查论文啥的,在做详细分析。
以上是关于关于 分布式和微服务 的一些总结的主要内容,如果未能解决你的问题,请参考以下文章
RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践