微服务和分布式的区别.docx
《微服务和分布式的区别.docx》由会员分享,可在线阅读,更多相关《微服务和分布式的区别.docx(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微服务和分布式的区别分布式架构是分布式计算技术的应用以及工具目前成熟的技术包括J2EE,CORBA以及.NET(DCOM)这些技术牵扯的内容非常广相关的书籍也非常多也没有涉及这些技术的细节只是从各种分布式系统平台产生的背景以及在软件开发中应用的情况来讨论它们的主要异同。微效劳架构是一项在云中部署应用以及效劳的新技术。大局部围绕微效劳的争论都集中在容器或者其他技术是否能很好的施行微效劳而红帽讲API应该是重点。推荐学习Java视频教程微效劳可以在“自己的程序中运行并通过“轻量级设备与HTTP型API进展沟通。关键在于该效劳可以在自己的程序中运行。通过这一点我们就可以将效劳公开与微效劳架构在现有系
2、统中分布一个API区分开来。在效劳公开中许多效劳都可以被内部独立进程所限制。假如其中任何一个效劳需要增加某种功能那么就必须缩小进程范围。在微效劳架构中只需要在特定的某种效劳中增加所需功能而不影响整体进程的架构。从概念理解分布式效劳架构强调的是效劳化和效劳的分散化微效劳那么更强调效劳的专业化以及精细分工从理论的角度来看微效劳架构通常是分布式效劳架构反之那么未必成立。所以选择微效劳通常意味着需要解决分布式架构的各种难题。区别分布式的方式是根据不同机器不同业务。将一个大的系统划分为多个业务模块业务模块分别部署到不同的机器上各个业务模块之间通过接口进展数据交互。区别分布式的方式是根据不同机器不同业务。
3、微效劳更加强调单一职责、轻量级通信(HTTP)、独立性并且进程隔离。微效劳与分布式的细微差异是微效劳的应用不一定是分散在多个效劳器上他可以以是同一个效劳器。分布式是否属于微效劳不一定假如一个很大应用拆分成三个应用但还是很庞大固然分布式了但不是微效劳。微效劳核心要素是微小。微效劳架构是分布式效劳架构的子集。微效劳架构通过更细粒度的效劳切分使得整个系统的迭代速度并行程度更高但是运维的复杂度以及性能会随着效劳的粒度更细而增加。微效劳重在解耦合使每个模块都独立。分布式重在资源分享与加快计算机计算速度。分布式分散压力。微效劳分散才能。课程介绍微效劳架构的技术体系、社区目前已经越来越成熟。在最初系统架构的
4、搭建或当现有架构已到达瓶颈需要进展架构演进时很多架构师、运维工程师会考虑是否需要搭建微效劳架构体系。固然很多文章都讲微效劳架构是复杂的、会带来很多分布式的问题但只要我们解析这些问题并找到解法就会有种拨开云雾的感觉。微效劳架构也不是完美的世上没有完美的架构微效劳架构也是随着业务、团队成长而不断演进的。最开场可能就几个、十几个微效劳每个效劳是分库的通过APIGateway并行进展效劳数据合并、转发。随着业务扩大、不断地参加搜索引擎、缓存技术、分布式消息队列、数据存储层的数据复制、分区、分表等。本课程会一一解开微效劳架构下分布式场景的问题和通过对于一些分布式技术的原理、模型以及算法的介绍来帮助想要施
5、行微效劳架构的工程师们知其然并知其所以然。课程内容微效劳架构的演变微效劳是一种效劳间松耦合的、每个效劳之间高度自治并且使用轻量级协议进展通信的可持续集成部署的分布式架构体系。这一句包含了微效劳的特点微效劳架构以及其他架构有什么区别以下比照一些常见的架构。单体架构单体架构是最简单的软件架构常用于传统的应用软件开发和传统Web应用。传统Web应用一般是将所有功能模块都打包jar、war在一个Web容器JBoss、Tomcate中部署、运行。随着业务复杂度增加、技术团队规模扩大在一个单体应用中维护代码会降低开发效率即使是处理一个小需求也需要将所有机器上的应用全部部署一遍增加了运维的复杂度。SOA架构
6、当某一天使用单体架构发现很难推进需求的开发、和日积月累的技术债时很多企业会开场做单体效劳的拆分拆分的方式一般有程度拆分以及垂直拆分。垂直拆分是把一个应用拆成松耦合的多个独立的应用让应用可以独立部署有独立的团队进展维护程度拆分是把一些通用的会被很多上层效劳调用的模块独立拆分出去形成一个分享的根底效劳这样拆分可以对一些性能瓶颈的应用进展单独的优化以及运维管理也在一定程度上防止了垂直拆分的重复造轮子。SOA也叫面向效劳的架构从单体效劳到SOA的演进需要结合程度拆分及垂直拆分。SOA强调用统一的协议进展效劳间的通信效劳间运行在彼此独立的硬件平台但是需通过统一的协议接口互相协作也即将应用系统效劳化。举个
7、易懂的例子单体效劳假如相当于一个快餐店所有的效劳员职责都是一样的又要负责收银结算又要负责做汉堡又要负责端盘子又要负责清扫效劳员之间不需要有沟通用户来了后效劳员从前到后负责到底。SOA相当于让效劳员有职责分工收银员负责收银厨师负责做汉堡保洁阿姨负责清扫等所有效劳员需要用同一种语言沟通方便工作协调。微效劳以及SOA微效劳也是一种效劳化不过其以及SOA架构的效劳化概念也是有区别的可以从以下几个关键字来理解松耦合每个微效劳内部都可以使用DDD领域驱动设计的思想进展设计领域模型效劳间尽量减少同步的调用多使用消息的方式让效劳间的领域事件来进展解耦。轻量级协议Dubbo是SOA的开源的标准实现之一类似的还有
8、像gRPC、Thrift等。微效劳更倾向于使用Restful风格的API轻量级的协议可以很好得支持跨语言开发的效劳可能有的微效劳用Java语言实现有的用Go语言有的用C但所有的语言都可以支持Http协议通信所有的开发人员都能理解Restful风格API的含义。高度自治以及持续集成从底层的角度来讲SOA更加倾向于基于虚拟机或效劳器的部署每个应用都部署在不同的机器上一般持续集成工具更多是由运维团队写一些Shell脚本和提供基于共同协议比方Dubbo管理页面的开发部署页面。微效劳可以很好得以及容器技术结合容器技术比微效劳出现得晚但是容器技术的出现让微效劳的施行更加简便目前Docker已经成为很多微效
9、劳理论的根底容器。因为容器的特色所以一台机器上可以部署几十个、几百个不同的微效劳。假如某个微效劳流量压力比其他微效劳大可以在不增加机器的情况下在一台机器上多分配一些该微效劳的容器实例。同时因为Docker的容器编排社区日渐成熟类似Mesos、Kubernetes及Docker官方提供的Swarm都可以作为持续集成部署的技术选择。其实从架构的演进的角度来看整体的演进都是朝着越来越轻量级、越来越灵敏的应用方向开展甚至到近两年度日渐成熟起来的Serverless无效劳架构。从单体效劳到分层的效劳再到面向效劳、再到微效劳甚至无效劳对于架构的挑战是越来越大。微效劳架构以及分布式微效劳架构属于分布式系统吗
10、答案是肯定的。微效劳以及SOA都是典型的分布式架构只不过微效劳的部署粒度更细效劳扩展更灵敏。理解微效劳中的分布式如何理解微效劳中的分布式举一个招聘时一个同学来面试的例子。A同学讲目前所在公司在做从单应用到微效劳架构迁移已经差不多完成了。提到微效劳感觉就有话题聊了于是便问“是否可以简单描绘下效劳拆分后的部署构造、底层存储的拆分、迁移方案。于是A同学讲只是做了代码工程构造的拆分还是原来的部署方式数据库还是那个库所有的微效劳都用一个库分布式事务处理方式是“防止尽量都同步调用于是我就跟这位同学友好地微笑讲再见了。微效劳的分布式不仅仅是容器应用层面的分布式其为了高度自治底层的存储体系也应该相互独立并且也
11、不是所有的微效劳都需要持久化的存储效劳。一个“手机验证码微效劳可能底层存储只用一个Redis一个“营销活动搭建页面微效劳可能底层存储只需要一个MongoDB。微效劳中的分布式场景除了效劳本身需要有效劳发现、负载平衡微效劳依赖的底层存储也会有分布式的场景为了高可用性以及性能需要处理数据库的复制、分区并且在存储的分库情况下微效劳需要能保证分布式事务的一致性。课程背景微效劳架构的技术体系、社区目前已经越来越成熟所以在初期选择使用或企业技术体系转型微效劳的时候需要解析微效劳架构中的分布式的问题1.在所有效劳都是更小单元的部署构造时一个恳求需要调动更多的效劳资源如何获得更好的性能2.当业务规模增大需要有
12、地理分布不同的微效劳集群时其底层的数据存储集群是多数据中心还是单数据集群3.数据存储怎样进展数据复制4.业务数据到达大数据量时如何进展数据的分区5.分布式事务如何保证一致性6.不同程度的一致性有什么差异7.基于容器技术的效劳发现怎么处理8.应该用哪些RPC技术用哪些分布式消息队列来完成效劳通信以及解耦9.那么多的分布式技术框架、算法、效劳应该选哪个才合适企业的业务场景本课程从微效劳不得不面对以及解决的分布式问题出发包含分布式技术的一系列理论和架构模型、算法的介绍同时结合技术选型以及理论应用提供一系列解决方案的梳理。相信浏览完好个课程你会对微效劳的分布式问题有个系统地理解。本课程会对微效劳的分布
13、式场景问题一一击破为你提供解决思路。课程内容本课程例如代码地址如下1.Microservice2.API-gateway分布式系统的问题引出分布式系统的可能问题节点故障、网络延迟结合错误检测的可行方案进展介绍分布式中的时间以及顺序的问题和标量时钟以及向量时钟的实现。分布式数据存储分布式数据存储的技术选型、关系型数据库和一些流行的NoSQL技术介绍MongoDB、Redis、Neo4j及Cassandra等分布式存储技术使用的数据构造解析底层数据存储原理HashTable、SSTable、LSMTree、BTree等各个存储方案使用的场景和比照。数据复制对于大规模存储集群需要进展数据库的复制、排
14、除单点故障数据复制的模型以及实现和几种复制日志的实现方式主备同步、主主复制、多数据中心的数据复制方案数据复制中的读写一致性问题和写冲突问题的解决介绍以MySQL为例延伸集群数据复制方案。数据分区当单个领域模型维度的数据已经到一定规模时需要进展数据分区减轻单库压力。数据分区以及分表又有哪些不同数据分区可以怎样实现以MySQL的分区策略为例介绍不同分区策略的实现。数据分区后恳求的路由有哪些解决方案会展开介绍不同的方案又有什么差异。效劳发现以及效劳通信基于容器技术的微效劳体系如何选择效劳发现、负载平衡的技术实现不同的效劳发现的技术有什么区别怎样选型为了到达松耦合的目的和基于DDD思想微效劳之间减少效
15、劳调用可以通过哪些技术实现APIGateway可以用哪些技术框架实现远程调用可以有哪些技术框架如何进步同步通信的性能?分布式的消息队列都有哪些开源、商业实现应该如何选择合适的消息队列使用DDD思想应该怎样应对效劳通信怎样在理论中应用DDD分布式存储集群的事务理解分布式中的事务和本地事务的根底概念分布式存储的隔离级别和各个DB支持的隔离方案的实现原理以MySQLInnoDB中的MVCC为例看并发控制的在MySQL的实现学习存储系统对于分布式事务的实现思想。分布式一致性解析分布式系统的一致性有哪些问题和一致性的几种实现程度的模型线性一致性强一致性、顺序一致性及因果一致性、最终一致性分布式一致性相关
16、的理论CAPCA、CP、AP的相关算法的介绍和合适用于哪些理论介绍FLP不可能结果和BASE理论。分布式事务理论解析微效劳中分布式事务的问题1.介绍强一致性的理论二阶段、三阶段。2PC、3PC的优缺点以及限制XA协议的介绍以及理论方案和最终一致性理论TCC模型以及理论方案2.分布式锁的实现模型以及理论方案3.基于微效劳下的分布式事务理论案例分析。共识问题解析为什么分布式场景下有共识问题介绍共识算法以及全局消息播送的实现公式算法的根底leader选举以及quorum算法和一些已实现的算法的介绍以及比照VSR、Raft、Paxos、ZAB共识算法在微效劳体系的应用场景介绍效劳发现、一致性kv存储E
17、tcd、Zk和技术的选型怎样权衡一致性的追求以及性能。架构设计解析了很多分布式的问题以及解决方案之后回归微效劳架构模型、技术选型、再回首下微效劳的弊端以及特点微效劳体系的架构要素分析平安、伸缩性、性能、可用性、扩展性结合团队、业务场景的DDD理论以及总结。课程寄语假如你是一位开发工程师相信浏览完本系列课程将会解析很多分布式系统的理论知识同时也会理解一些分布式存储、中间件技术的原理对工作中的分布式架构会有体系化的明晰认知。假如你是一位架构师本系列课程提供了对于分布式系统问题的全面梳理和一些技术背后的理论结合理论以及目前业界先进的方案对于技术选型以及架构搭建提供了参考。第01课分布式系统的问题前言
18、无论是SOA或微效劳架构都是必需要面对以及解决一些分布式场景下的问题。假如只是单效劳、做个简单的主备那么编程那么会成为一件简单幸福的事只要没有bug一切都会按照你的预期进展。然而在分布式系统中假如想当然的去按照单效劳思想编程以及架构那可能会收获很多意想不到的“惊喜网络延迟导致的重复提交、数据不一致、局部节点挂掉但是任务处理了一半等。在分布式系统环境下编程以及在单机器系统上写软件最大的差异就是分布式环境下会有很多很“诡异的方式出错所以我们需要理解哪些是不能依靠的和怎样处理分布式系统的各种问题。理想以及现实微效劳架构跟SOA一样也是效劳化的思想。在微效劳中我们倾向于使用RESTful风格的接口进展
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微服 分布式 区别
限制150内