wps栏目上的运服务怎么没有了
735
2022-05-29
写在前面
一直对微服务和分布式这两个概念模凌两可,不是太清晰,而且接触的项目也没这么大体量,没有用到过,所以蹭现在有时间总结一下,总结很大部分来源于《从Paxos到Zookper分布式一致性原理与实践》和《微服务架构设计模式》这两本书里。
嗯,关于分布式系统和微服务架构的一些拙见,因为大家一直放到一起讲,所以总结一波。
博文中理解有所欠缺的小伙伴请留言,多多指教。
拿着爸妈提供的物质,见识他们没有见识过的世面,体验他们没有体验过的人生,到头来,却嫌弃他们如此笨拙。
名词解释
分布式系统
个人觉得分布式系统面向的是Dev,更多的是考虑系统性能和部署环境之间的问题,通过分布式解决在没有大型主机的部署环境情况下,系统性能的高可用和吞吐量,是个一个很早就提出来的一个概念,是由集中式系统过渡来的,随着计算机系统向网络化和微型化的发展日趋明显,同时业务的发展,传统的集中式处理模式越来越不能适应人们的需求,学习成本高,大型主机贵、容错性差,扩容困难。
为了解决业务快速发展给IT系统带来的巨大挑战,从2009年开始,阿里集团启动了去IOE计划,其电商系统开始正式迈入分布式系统时代。
在《分布式系统概念与设计》生一书中,对分布式系统做了如下定义:
分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。
(
硬件或软件组件
,个人理解 ,硬件组件分布我们可以结合HarmonyOS理解,音画同步,应用跨设备流转,软总线等硬件抽象的分布式,或者可以结合RAID(独立冗余磁盘阵列)理解,可以理解为以机器为粒度的磁盘阵列,软件组件分布这里结合我们常说的微服务分布式部署,类比java Web分布式系统。)
微服务架构
微服务 (Microservices) 是一种软体架构风格,它是以专注於单一责任与功能的小型功能区块 (Small Building Blocks) 为基础,利用模组化的方式组合出复杂的大型应用程式,各功能区块使用与语言无关 (Language-Independent/Language agnostic) 的API 集相互通讯。 微服务的起源是由 Peter Rodgers博士于 2005 年度云端运算博览会提出的微 Web 服务 (Micro-Web-Service) 开始,Juval Löwy则是与他有类似的前导想法,将类别变成细粒服务 (granular services),以作为 Microsoft 下一阶段的软体架构,其核心想法是让服务是由类似Unix 管道的存取方式使用,而且复杂的服务背后是使用简单 URI 来开放介面,任何服务,任何细粒都能被开放 (exposed)。这个设计在 HP的实验室被实现,具有改变复杂软体系统的强大力量。 2014年,Martin Fowler与James Lewis共同提出了微服务的概念,定义了微服务是由以单一应用程式构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用HTTP API 通讯。同时服务会使用最小的规模的集中管理 (例如 Docker) 能力,服务可以用不同的程序语言与资料库等元件协作。
个人觉得微服务架构更多的是面向ops,更多的是考虑编码和项目业务之间的问题,根据功能把应用拆分为服务。解决的是开发问题和应用复杂性,是在对于业务的快速发展中单体应用不能满足需要的时候,提出来的一个概念,《微服务架构设计模式》一书中对微服务架构做如下定义:
把应用程序功能性分解为一组服务的架构风格。
(很直白的一句话,不需要多解释,对于大型系统而言,模块化是必不可少的,相信小伙伴也做过类似的项目,微服务架可以看做是模块化的一种形式)
从应用程序的扩展角度考虑
微服务和分布式都是对大型应用程序的扩展,只是扩展方向不同:
分布式系统更多是偏水平扩展,在dev方面的解决办法,利用部署系统环境的空间分布性,比如SOA架构中利用分布式集成大型、复杂的单体应用程序;比如对实例进行克隆,以副本的形式对应用的数据和服务提供一种冗余方式(数据副本和服务副本),从而对外提供高可用,高并发的服务。分布式需要解决分布式数据一致性以及分布式环境通信异常、网络分区等问题。比如通过Zookeeper解决分布式数据一致性的问题。分布式系统可以理解为以解决硬件层面的压力从而对应用进行扩展。
微服务架构更多的是垂直方向的扩展,在ops方面解决问题,利用应用程序的功能性分解,,把应用拆分为一组服务,每个服务负责特定的功能。每个服务都相对较小并容易维护,使大型的复杂应用程序可以持续交付和持续部署。服务可以独立部署、可以独立扩展。同时微服务架构可以实现团队的自治。更容易实验和采纳新的技术。更好的容错性。即服务之间松耦合,但是单个服务又是高内聚的。微服务架构可以理解为解决软件层面的压力对应用进行扩展。
关于微服务架构和分布式系统之间的关系
个人认为,不属于包含关系,都是是对于应用扩展的不同解决办法。一般情况下,微服务架构的应用一般为分布式系统。但分布式系统不一定是微服务架构。
嗯,时间原因,先写这么多,之后会查查论文啥的,在做详细分析。
http://www.sstir.cn/search/list?keyword=%E5%BE%AE%E6%9C%8D%E5%8A%A1
Java
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。