微服务分布式SOA集群相关概念理解
Posted Firm陈
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微服务分布式SOA集群相关概念理解相关的知识,希望对你有一定的参考价值。
1.微服务
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
(1)一组小的服务(大小没有特别的标准,只要同一团队的工程师理解服务的标识一致即可)
(2)独立的进程(java的tomcat,nodejs等)
(3)轻量级的通信(不是soap,是http协议)
(4)基于业务能力(类似用户服务,商品服务等等)
(5)独立部署(迭代速度快)
(6)无集中式管理(无须统一技术栈,可以根据不同的服务或者团队进行灵活选择)
2.分布式
一个业务分拆多个子业务,部署在不同的服务器上。
所谓分布式,无非就是将一个系统拆分成多个子系统并分布到多个服务器上.
简单的说,是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。其中用户界面是客户端实现的功能,控制台服务是一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。
分布式常用框架:Dubbo,MQ消息队列,Zookeeper等.
关于分布式服务框架Dubbo
(1)服务注册中心,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。
(2)透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
(3)软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器.
关于MQ消息队列(RabbitMQ、ZeroMQ、ActiveMQ等.)
在高并发分布式环境下,由于来不及同步处理,请求往往发生堵塞,比如说,大量的insert、update之类的请求
同时到达数据库,直接导致无所的行锁和表锁,甚至最后请求会堆积过多,从而触发too many connections错误。
通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。
ACK机制-当消费者拿到消息的瞬间,队列中的消息立即删除.同时删除 前台页面,缓存库,数据库 .(ACK机制保证了性能的高效.)
3.集群
同一个业务,部署在多个服务器上。
4.分布式和集群关联和区别
集群是个物理形态,分布式是个工作方式。
分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。
分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。
举例:就比如新浪网,访问的人多了,他可以做一个集群,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。
而分布式,从窄意上理解,也跟集群差不多,但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。
分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了。
简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
例如:如果一个任务由 10 个子任务组成,每个子任务单独执行需 1 小时,则在一台服务器上执行该任务需 10 小时。
采用分布式方案,提供 10 台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是 Hadoop 的 Map/Reduce 分布式计算模型)
而采用集群方案,同样提供 10 台服务器,每台服务器都能独立处理这个任务。假设有 10 个任务同时到达,10 个服务器将同时工作,1 小时后,10 个任务同时完成,这样,整体来看,还是 1 小时内完成一个任务!
好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。
5.微服务和分布式的关联和区别
分布式属于微服务
(1)微服务是架构设计方式,分布式是系统部署方式,两者概念不同
(2)微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。
(3)分布式是微服务的一种表现形式,分布式是部署层面,微服务是设计层面
6.SOA架构
(1)SOA(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。
(2)微服务架构是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。
以上是关于微服务分布式SOA集群相关概念理解的主要内容,如果未能解决你的问题,请参考以下文章