网站首页 > 精选教程 正文
要讨论微服务、集群、分布式,需要先讲讲“单机架构”,单机架构很常见,比如有一个很小的系统,不用处理很多东西,只需要一台服务器,在上面搭建出自己需要的服务,就可以开始工作。这种架构优点显而易见,方便维护,出了问题解决起来很方便。缺点也很明显,如果处理变多,资源也就不够用了。
单机架构无法满足要求,集群架构就可以提供更好更快的处理,简单来说,集群架构就是把单机架构上面运行的服务,摘出来,然后复制,在多个服务器上面进行部署,这样可以提高工作效率。在集群中,每个服务器都称为节点,每个节点提供不同的服务,比如Database、Web、日志工具。
一、什么是微服务架构?
微服务就是将一个完整的系统,按照业务功能,拆分成一个个独立的子系统,在微服务结构中,每个子系统就被称为“服务”。这些子系统能够独立运行在web容器中,它们之间通过RPC方式通信。
RPC远程过程调用协议,通俗的解释就是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。
举个例子,假设需要开发一个在线商城。按照微服务的思想,我们需要按照功能模块拆分成多个独立的服务,如:用户服务、产品服务、订单服务、后台管理服务、数据分析服务等等。这一个个服务都是一个个独立的项目,可以独立运行。如果服务之间有依赖关系,那么通过RPC方式调用。
这样的好处有很多:系统之间的耦合度大大降低,可以独立开发、独立部署、独立测试,系统与系统之间的边界非常明确,排错也变得容易,开发效率大大提升。系统之间的耦合度降低,从而系统更易于扩展。我们可以针对性地扩展某些服务。
那么问题来了,当采用微服务结构后,一个完整的系统可能有很多独立的子系统组成,当业务量渐渐发展起来之后,而这些子系统之间的关系将错综复杂,而且为了能够针对性地增加某些服务的处理能力,某些服务的背后可能是一个集群模式,由多个节点构成,这无疑大大增加了运维的难度。微服务的想法好是好,但开发、运维的复杂度实在是太高。
二、什么是集群架构?
集群搭建出来后,有这样一个角色,负责调度客户端来的请求究竟要到哪一台服务器上去,然后在进行接下来的工作流,这个角色叫做——“负载均衡器”
集群也分为高可用集群,负载均衡集群(可能高并发架构就是负载均衡架构的升级版)。
高可用集群工具常见的有:heartbeat,pacemaker,keepalived
负载均衡器工具常见的有:nginx,lvs,HAproxy
集群架构优点:可扩展性,服务器资源不够用,就可以加一台继续进行工作
缺点:维护起来困难,trouble shoot的时候需要花费时间较多
三、微服务、集群、分布式三者的关系和区别:
1.微服务是将一个复杂系统根据业务或者其他方式拆分成具有不同功能的子系统的思想或者说架构风格,可以说是实现集群或者分布式的前提,毕竟,没有系统的话集群和分布式也就没有作用的对象了。
2.集群则是将按照微服务架构风格拆分出来的同一个业务系统部署到不同的服务器上,这样一个系统就存在多份,保障了系统的高可用性。
3.分布式则是按照微服务架构风格拆分出来的不同业务的系统系统部署到不同的服务器上,可以对分布式上的每一个节点进行集群设置,实现高可用,它是一种工作的方式。
4.简单说,分布式是以缩短单个任务的执行时间来提升效率的,如一个任务由5个小任务组成,处理完一个任务需要1个小时,那么使用一台服务器的话则需要五个小时,如果使用五台服务器则只需要一个小时,这种也是Hadpood中的一种Map/Reduce 分布式计算模型的工作模式。
猜你喜欢
- 2024-10-10 Spring Cloud分布式云服务架构之路
- 2024-10-10 2020“闭关”跳槽季,啃透分布式三大技术:限流、缓存、通讯
- 2024-10-10 手撕分布式技术:限流、通讯、缓存,全部一锅端走送给你
- 2024-10-10 基于websocket单台机器支持百万连接分布式聊天(IM)系统
- 2024-10-10 如何基于Redis实现分布式锁? 如何基于redis实现分布式锁定
- 2024-10-10 2020年面试复盘大全500道:Redis+ZK+Nginx+数据库+分布式+微服务
- 2024-10-10 c++游戏服务器方向需要多少功底? c++游戏服务器开发视频教程
- 2024-10-10 「高并发」亿级流量场景下如何实现分布式限流?看完我彻底懂了
- 2024-10-10 Java 面试官:你说说 Zookeeper 如何做分布式锁?
- 2024-10-10 读写分离与分库分表,分布式事务 读写分离的优缺点
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)