集群、分布式和微服务

网友投稿 852 2022-10-13

集群、分布式和微服务

集群、分布式和微服务

一、架构演变

从单机结构到集群结构,你的代码基本无需要作任何修改,你要做的仅仅是多部署几台服务器,每台服务器上运行相同的代码就行了。但是,当你要从集群结构演进到微服务结构的时候,之前的那套代码就需要发生较大的改动了。所以对于新系统我们建议,系统设计之初就采用微服务架构,这样后期运维的成本更低。但如果一套老系统需要升级成微服务结构的话,那就得对代码大动干戈了。所以,对于老系统而言,究竟是继续保持集群模式,还是升级成微服务架构,这需要你们的架构师深思熟虑、权衡投入产出比。

二、集群

程序单机处理达到瓶颈时,就将程序部署在多台服务器上,这样就构成了一个“集群”。集群中的每台服务器是这个集群的一个节点。每台机器都提供相同的服务,这样系统的处理能力就相同于提升了好几倍

一)集群分为三种类型

1、LB:Load Balancing:负载均衡,多个主机组成,每个主机只承担一部分的访问请求

2、HA:High Availiablity:高可用,避免单点故障SPOF(single point of failure)

MTBF:mean time between failure 平均无故障时间,正常时间MTTR:mean time to restoration(repair)平均恢复前时间,故障时间A = MTBF / (MTBF+MTTR )  (0,1): 99%,99.5%,99.9%,99.99%,99.999%

SLA:服务等级协议(全称:service level agreement) 是在一定开销下为保障服务的性能和可用性,服务提供商与用户定义的一种双方认可的协定。这个开销是驱动提供服务质量的主要因素。在常规的领域中,总是设定所谓的三个9,四个9进行表示,当没有达到这种水平的时候,就会有一些列的惩罚措施。而运维的目标就是达成这种服务水平。

停机时间又分为两种,一种是计划内停机时间,一种是计划外停机时间。而运维主要关注计划外停机时间。

3、HPC:high-performance computing 高性能 ​​https://top500.org/​​

三、分布式

一)分布式系统

1、分布式结构概述

分布式结构就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在分布式结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。

2、分布式常见应用

分布式应用:服务按照功能拆分,使用微服务分布式静态资源:静态资源放在不同的存储集群上分布式数据和存储:使用key-value缓存系统分布式计算:对特殊业务使用分布式计算,比如Hadoop集群

二)注意事项

1、注意事项

分布式不一定就是不同的组件,同一组件也可以,关键在于是否通过交换消息的方式进行协作;分布式系统也可以是一个集群

例如:zookeeper的节点都是对等的,但它自己构成了一个分布式系统。

2、举例说明

举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,那么通过RPC方式调用。

三)分布式的好处

系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得相当容易,开发效率大大提升。系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。假设这个商城要搞一次大促,下单量可能会大大提升,因此我们可以针对性地提升订单系统、产品系统的节点数量,而对于后台管理系统、数据分析系统而言,节点数量维持原有水平即可。服务的复用性更高。比如,当我们将用户系统作为单独的服务后,该公司所有的产品都可以使用该系统作为用户系统,无需重复开发。

四)分布式的实现

分布式的核心就一个字:拆。只要是将一个项目拆分成了多个模块,并将这些模块分开部署,那就算是分布式。(分布式拆了就行)

如何拆呢?有两种方式:水平拆分,垂直拆分(也称为“横向拆分”和“垂直拆分”)

1、水平拆分

根据“分层”的思想进行拆分。例如,可以将一个项目根据“三层架构”拆分成 表示层(jsp+servlet)、业务逻辑层(service)和数据访问层(dao),然后再分开部署

2、垂直拆分

根据业务进行拆分。例如,可以根据业务逻辑,将“电商项目”拆分成“订单项目”、“用户项目”和“秒杀项目”。显然这三个拆分后的项目,仍然可以作为独立的项目使用。像这种拆分的方法,就成为垂直拆分。

四、微服务

微服务就是非常微小的服务。微服务可以理解为非常细粒度的垂直拆分。

细粒度的垂直拆分

“订单项目”本来就是垂直拆分后的子项目,但实际上“订单项目”还能进一步拆分为“购物项目”、“结算项目”和“售后项目

五、简述集群、分布式和微服务的区别与关系

一)集群

集群的意义在于利用多个服务器实现统一业务来提高运行效率

例如:一个任务需要消耗一台服务器一个小时,四个服务器一起运行运行,只需要一个小时

二)分布式

分布式的意义在于把不同的业务分配给不同的服务器来完成,实现多服务器共同工作的效果,提高运行效率

例如:一个产品有A+B+C+D四个子业务,每个业务耗时一台服务器一个小时,一台服务器需要1*4=4个小时  使用分布式,不考虑各个服务器之间的通信时间等消耗,只需要1个小时

三)微服务

微服务是一种架构风格

分布式和微服务很像,把一个系统的业务拆分成多个独立的服务,系统中的各个微服务的各个微服务可以独立部署,各个服务之间松耦合的

微服务的设计是为了不因为某个模块的bug影响现有的系统业务。

微服务与分布式的细微差别是:微服务的应用不一定是分散在多个服务器上,他可以是同一服务器。

严格来说:分布式是也是一种微服务,但是微服务不一定是分布式

四)总结

集群:多个服务器部署相同的模块,干相同的事分布式:多个服务器部署多个子模块,分别干不同的事微服务:不一定是多个服务器,可能在一个服务器上,部署多个子模块分别干不同的事好的设计应该是分布式和集群的结合,先分布式再集群

具体实现就是业务拆分成多个子业务,然后针对每个子业务进行集群部署好处:每个子业务若出了问题,整个系统完全不会受影响

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:MyQEE- PHP框架(MYQeen)
下一篇:gitlab使用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~