关于 分布式和微服务 的一些总结
写在前面
- 一直对微服务和分布式这两个概念模凌两可,不是太清晰,而且接触的项目也没这么大体量,没有用到过,所以蹭现在有时间总结一下,总结很大部分来源于《从Paxos到Zookper分布式一致性原理与实践》和《微服务架构设计模式》这两本书里。
- 嗯,关于分布式系统和微服务架构的一些拙见,因为大家一直放到一起讲,所以总结一波。
- 博文中理解有所欠缺的小伙伴请留言,多多指教。
拿着爸妈提供的物质,见识他们没有见识过的世面,体验他们没有体验过的人生,到头来,却嫌弃他们如此笨拙。
一、名词解释
分布式系统
个人觉得分布式系统
面向的是Ops
,更多的是考虑系统性能和部署环境
之间的问题,通过分布式解决在没有大型主机的部署环境
情况下,系统性能的高可用和吞吐量
,是个一个很早就提出来的一个概念,是由集中式系统
过渡来的,随着计算机系统向网络化
和微型化
的发展日趋明显,同时业务的发展
,传统的集中式
处理模式越来越不能适应人们的需求,学习成本高,大型主机贵、容错性差,扩容困难。
为了解决业务快速发展给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) 能力
,服务可以用不同的程序语言
与资料库
等元件协作。
个人觉得微服务
架构更多的是面向dev
,更多的是考虑编码和项目业务之间
的问题,根据功能
把应用拆分为服务
。解决的是开发问题和应用复杂性
,是在对于业务的快速发展中单体应用
不能满足需要的时候,提出来的一个概念,《微服务架构设计模式》
一书中对微服务架构做如下定义:
把应用程序功能性分解
为一组服务
的架构风格。(很直白的一句话,不需要多解释,对于大型系统而言,模块化是必不可少的,相信小伙伴也做过类似的项目,微服务架可以看做是模块化的一种形式
)
二、比较
从应用程序的扩展角度考虑
微服务
和分布式
都是对大型应用程序的扩展
,只是扩展方向
不同:
- 分布式系统更多是偏
水平扩展
,在ops
方面的解决办法,利用部署系统环境的空间分布性
,比如SOA架构
中利用分布式集成大型、复杂的单体应用程序;比如对实例进行克隆
,以副本
的形式对应用的数据和服务提供一种冗余方式(数据副本和服务副本),从而对外提供高可用,高并发的服务
。分布式需要解决分布式数据一致性
以及分布式环境通信异常
、网络分区
等问题。比如通过Zookeeper
解决分布式数据一致性的问题。分布式系统可以理解为以解决硬件层面的压力从而对应用进行扩展。 - 微服务架构更多的是
垂直方向
的扩展,在dev
方面解决问题,利用应用程序的功能性分解,,把应用拆分为一组服务
,每个服务负责特定的功能。每个服务都相对较小并容易维护
,使大型的复杂应用程序可以持续交付和持续部署
。服务可以独立部署
、可以独立扩展
。同时微服务架构可以实现团队的自治
。更容易实验和采纳新的技
术。更好的容错性
。即服务之间松耦合
,但是单个服务又是高内聚
的。微服务架构可以理解为解决软件层面的压力对应用进行扩展。
微服务架构和分布式系统之间的关系
个人认为,不属于包含关系
,都是是对于应用扩展
的不同解决办法。一般情况下,微服务架构的应用一般为分布式系统。但分布式系统不一定是微服务架构
。
嗯,时间原因,先写这么多,之后会查查论文啥的,在做详细分析。
http://www.sstir.cn/search/list?keyword=%E5%BE%AE%E6%9C%8D%E5%8A%A1
关于 分布式和微服务 的一些总结相关推荐
- 大剑无锋之分布式和微服务分别是什么?【面试推荐】
提出一个技术,大多都是为了解决某一难题. 分布式: 分布式的提出是:是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段. 该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统. ...
- 集群,分布式,微服务的区别
参考文献: 集群,分布式,微服务概念和区别理解 谢谢作者分享!
- 集群、分布式、微服务的概念及异同
一.什么是集群? 集群是指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事:但是每台服务器并不是缺一不可,存在的主要作用是缓解并发能力和单点故障转移问题. 集群主要具有以下特征: (1) ...
- springcloud 相同服务名_浅谈分布式与微服务
分布式和微服务是什么关系?简单来说,分布式和微服务的概念比较相似,分布式属于微服务.但是分布式和微服务在架构.作用和粒度上有所区别.因此,两者的关系是既相互联系又相互区别.本文主要带大家认识分布式和微 ...
- 分布式和微服务是什么?二者的区别又是什么?
一.分布式系统 在<分布式系统原理与范型>一书中有如下定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统": 分布式系统是由一组通过网络 ...
- 分布式和微服务的区别
分布式和微服务的区别 1.颜老师,分布式和微服务有什么区别呢?网上说啥的都有,越看越晕了. 答:分布式的核心就一个字:拆.只要是将一个项目拆分成了多个模块,并将这些模块分开部署,那就算是分布式. 如何 ...
- 大型互联网分布式企业微服务云架构
2019独角兽企业重金招聘Python工程师标准>>> 第一篇文章简单给大家介绍了Spring Cloud架构,我这边结合了当前大部分企业的通用需求,包括技术的选型比较严格.苛刻,不 ...
- 送书丨《架构解密:从分布式到微服务》
墨天轮联合电子工业出版社博文视点社推出 墨天轮粉丝福利活动 五本<架构解密:从分布式到微服务>免费送! 如何得到这本书? 点击底部"阅读原文"或扫描下方二维码,在墨天轮 ...
- 架构解密从分布式到微服务:微服务架构到底是什么?
架构解密从分布式到微服务:微服务架构到底是什么? https://www.toutiao.com/i6937907188505657870/?tt_from=weixin&utm_campai ...
- 分布式、微服务、云架构
分布式.微服务.云架构 JAVA语言开发.跨平台.高性能.高可用.安全.服务化.模块化.組件化.驱动式开发模式 commonservice eureka Netflix 云端服务发现,一个基于 RES ...
最新文章
- 统一客服消息返回错误:{errcode:43004,errmsg:require subscribe hint: [9Vv08633952]}
- hibernate 一对一(One-to-One)
- mysql服务的启动和停止 net stop mysql net start mysql
- 多个动态包含一个JSF标签
- python中if __name__ == ‘__main__‘:的简单理解
- HBuilder的快捷操作
- 第十六期:简单的介绍一下大数据中最重要的MapReduce
- 未捕获typeerror: $形象。cropper不是函数_没有学不会的python--细说自定义函数的细节...
- springdata学习笔记-01-helloworld-(暂时不全223)
- php封装redis类,php封装redis操作类
- 求10000以内n的阶乘(信息学奥赛一本通-T1172)
- 全新玖五社区系统整站源码
- python函数赋值给对象_【Python核心编程笔记】一、Python中一切皆对象
- 如何理解halcon 算子get_grayval 、set_grayval 逐行读取和逐行写入
- linux最好的mp4软件,【良心推荐】5款好用的MP4视频编辑器
- WebGoat Client side -- HTML tampering
- 如何启用计算机的远程服务,如何启用远程Windows命令行管理程序
- 2天3夜开发了一个微信小程序,用它挣了10.7万
- 全概率公式与贝叶斯公式-机器学习
- rtl8723bu linux wifi驱动移植教程