微服务 分布式、集群杂谈(思绪未整理)

集群与分布式的区别

集群是一个物理形态,分布式是一种工作方式

集群

同一个业务,部署在多个服务器上,把ERP财务模块这个系统,在多台机器上部署,称为集群

分布式

一个业务拆分多个子业务,以集群的形式部署在不同的服务器上。以ERP系统为例,ERP系统6大模块 (人力资源、财务、仓存管理、生产管理、采购管理、销售管理),每个模块以集群的形式进行部署,这个ERP系统可以叫分布式系统

总结

集群一般是物理集中、统一管理的,而分布式是相对与中心化而言的,强调的是任务在多个物理隔离的节点上进行。

单体应用集群的主要问题

单体集群中心化带来的主要问题是可靠性,若中心节点宕机则整个系统不可用,分布式除了解决部分中心化问题

例如一个开票员用户,在终端上传发票扫描文件,对她而言她只知道文件上传到服务器上了,不在乎后台是几台服务器,分布在那些机房。但是对于后台管理人员而言,同样是发票扫描件上传,我可以在东莞放置服务器处理华南地区的请求,在南京放置服务器处理华东区的请求,在德国放置服务器处理欧洲的请求,实现全球用户可上传文件的任务,从这个角度看,这是分布式的。 另一方面东莞的服务器可能有多台来同时处理华南区的请求,在前端做了负载均衡,其内部的运行逻辑完全完全一致,一台机器挂掉了对整体业务完全没有影响,所以这个角度看是集群;如果南京的服务器全挂了,那么华东区的用户就没得玩,以session缓存分布式的角度来讲可能是无能为力的,如果再次情况下,将所有华东区的请求转到华南区,以Token来实现,是否可以达到城市集群的概念

微服务与SOA

微服务是一种架构风格,也是SOA的一种,只是其中粒度更小更多,职责更加单一 微服务相比于SOA更加精细,微服务更多的以独立的进程的方式存在,互相之间并无影响; 微服务提供的接口方式更加通用化,例如HTTP RESTful方式,各种终端都可以调用,无关语言、平台限制;

相对于大型的单体应用,或者粒度较大的分布式应用来说,应用的交付周期很长,对于功能的改动或者新增来说,修改一处,要测试整个流程,测试的工作量很大;而微服务可以带来应用的解耦和敏捷交付,可以把系统解耦为一系列单一服务的结果,应对bug和新需求是,可以通过敏捷交付的方式能够进行更快速的变更,而不必对整个系统进行全量编译构构建与部署。同时也带来一些问题,如微服务系统太多,之间的交互太复杂,而且一整个业务流程跨越的系统可能很多,对于定位分析一个问题时,日志的查找分析,是极其耗费其时间的,这就涉及到日志框架的采集汇总和存储了。

参考:
http://www.infoq.com/cn/articles/features-and-design-concept-of-distributed-system/

猜你喜欢

转载自my.oschina.net/Alexyeh/blog/1621416
今日推荐