关于 分布式和微服务 的一些总结

Posted 山河已无恙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 分布式和微服务 的一些总结相关的知识,希望对你有一定的参考价值。

写在前面


  • 一直对微服务和分布式这两个概念模凌两可,不是太清晰,而且接触的项目也没这么大体量,没有用到过,所以蹭现在有时间总结一下,总结很大部分来源于《从Paxos到Zookper分布式一致性原理与实践》《微服务架构设计模式》这两本书里。
  • 嗯,关于分布式系统微服务架构的一些拙见,因为大家一直放到一起讲,所以总结一波。
  • 博文理解有所欠缺的请小伙伴留言,多多指教。

拿着爸妈提供的物质,见识他们没有见识过的世面,体验他们没有体验过的人生,到头来,却嫌弃他们如此笨拙。


分布式系统

个人觉得分布式系统面向的是Dev,更多的是考虑系统性能和部署环境之间的问题,通过分布式解决在没有大型主机的部署环境情况下,系统性能的高可用和吞吐量,是个一个很早就提出来的一个概念,是由集中式系统过渡来的,随着计算机系统向网络化微型化的发展日趋明显,同时业务的发展,传统的集中式处理模式越来越不能适应人们的需求,学习成本高,大型主机贵、容错性差,扩容困难。

为了解决业务快速发展给IT系统带来的巨大挑战,从2009年开始,阿里集团启动了去IOE计划,其电商系统开始正式迈入分布式系统时代

《分布式系统概念与设计》生一书中,对分布式系统做了如下定义:

分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 (硬件或软件组件,个人理解 ,硬件组件分布我们可以结合HarmonyOS理解,音画同步,应用跨设备流转,软总线等硬件抽象的分布式,或者可以结合RAID(独立冗余磁盘阵列)理解,可以理解为以机器为粒度的磁盘阵列(实际是不存在的),软件组件分布这里结合我们常说的微服务分布式部署,类比java Web分布式系统。)

微服务架构

个人觉得微服务架构更多的是面向ops,更多的是考虑编码和项目业务之间的问题,根据功能应用拆分为服务。解决的是开发问题和应用复杂性,是在对于业务的快速发展中单体应用不能满足需要的时候,提出来的一个概念,《微服务架构设计模式》一书中对微服务架构做如下定义:

把应用程序功能性分解一组服务的架构风格。(很直白的一句话,不需要多解释,对于大型系统而言,模块化是必不可少的,相信小伙伴也做过类似的项目,微服务架可以看做是模块化的一种形式

从应用程序的扩展角度考虑

微服务分布式都是对大型应用程序的扩展,只是扩展方向不同:

  • 分布式系统更多是偏水平扩展,在dev方面的解决办法,利用部署系统环境的空间分布性,比如SOA架构中利用分布式集成大型、复杂的单体应用程序;比如对实例进行克隆,以副本的形式对应用的数据和服务提供一种冗余方式(数据副本和服务副本),从而对外提供高可用,高并发的服务。分布式需要解决分布式数据一致性以及分布式环境通信异常网络分区等问题。比如通过Zookeeper解决分布式数据一致性的问题。分布式系统可以理解为以解决硬件层面的压力从而对应用进行扩展。
  • 微服务架构更多的是垂直方向的扩展,在ops方面解决问题,利用应用程序的功能性分解,,把应用拆分为一组服务,每个服务负责特定的功能。每个服务都相对较小并容易维护,使大型的复杂应用程序可以持续交付和持续部署。服务可以独立部署、可以独立扩展。同时微服务架构可以实现团队的自治。更容易实验和采纳新的技术。更好的容错性。即服务之间松耦合,但是单个服务又是高内聚的。微服务架构可以理解为解决软件层面的压力对应用进行扩展。

关于微服务架构和分布式系统之间的关系

个人认为,不属于包含关系,都是是对于应用扩展的不同解决办法。一般情况下,微服务架构的应用一般为分布式系统。但分布式系统不一定是微服务架构


嗯,时间原因,先写这么多,之后会查查论文啥的,在做详细分析。

以上是关于关于 分布式和微服务 的一些总结的主要内容,如果未能解决你的问题,请参考以下文章

关于 分布式和微服务 的一些总结

关于SOA和微服务架构的一些思考

在融资平台微服务演进中关于分布式锁一些总结

RocketMQ 千锤百炼--哈啰在分布式消息治理和微服务治理中的实践

RocketMQ 千锤百炼哈啰在分布式消息治理和微服务治理中的实践

哈啰在分布式消息治理和微服务治理中的实践